首页 > 技术文章 > 对于一些计算机原理的理解

xfw121 2021-11-07 19:59 原文

举例来说,很多书籍对epoll的LT模式和ET模式解释非常令人费解,如下图所示。
image
这些书籍很抽象的描述,根本没有究其本质来讲。
如果你通过搜索epoll原理,从系统api内部来理解,就很好理解了。
image
当处于LT模式,epoll_wait函数复制内核事件表已发送的事件状态到用户events结构体,用户层根据events结构体调用相应内核读写接口进行处理,内核如果检测到事件被处理完,会自动把对应事件状态清空(如用户调用读接口把对应读事件的文件描述符的缓存全部读完,那么内核会自动把该读事件状态清空,否则一直保持读事件状态)。当处于ET模式,epoll_wait函数复制内核事件表已发送的事件状态到用户events结构体,并会清除内核事件状态。所以用户如果已经用epoll_wait函数读取而没有处理,那么内核事件表清空,而不会再通知。
总结:
ET模式会大大降低事件触发次数,但需要保证每次读取事件后,需要处理完该事件,否则下次将不会进行通知。

建议:不要把操作系统想得太神奇,他也不过是各个函数和数据组成,然后经复制等基本操作来完成。

建议:很多书本对计算机原理的描述过于抽象或者说就是从应用层来描述,所以解释都不具有因果性,也不利于理解。尽量从底层去思考,这个技术是怎么实现的。

推荐阅读