TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网互联网干货linux中poll和select有什么区别思维导图

linux中poll和select有什么区别思维导图

  收藏
  分享
免费下载
免费使用文件
Sure 浏览量:42022-09-14 19:09:29
已被使用0次
查看详情linux中poll和select有什么区别思维导图

linux中poll和select的区别是:select单个进程所能打开的最大连接数由“FD_SETSIZE”宏定义,其大小是32个整数的大小,而poll因为采用链表存储,所以没有最大连接数的限制。

树图思维导图提供 linux中poll和select有什么区别思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 linux中poll和select有什么区别思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b20026816b38c95669a1f2f7dee806bc

思维导图大纲

linux中poll和select有什么区别思维导图模板大纲

select

select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理

这样所带来的缺点是

1、 单个进程可监视的fd数量被限制,即能监听端口的大小有限

一般来说这个数目和系统内存关系很大,具体数目可以cat /proc/sys/fs/file-max察看。32位机默认是1024个。64位机默认是2048

2、 对socket进行扫描时是线性扫描,即采用轮询的方法,效率较低

当套接字比较多的时候,每次select()都要通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍。这会浪费很多CPU时间

如果能给套接字注册某个回调函数,当他们活跃时,自动完成相关操作,那就避免了轮询,这正是epoll与kqueue做的

3、需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内核空间在传递该结构时复制开销大

poll

poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态,如果设备就绪则在设备等待队列中加入一项并继续遍历

如果遍历完所有fd后没有发现就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒后它又要再次遍历fd。这个过程经历了多次无谓的遍历

它没有最大连接数的限制,原因是它是基于链表来存储的,但是同样有一个缺点

1、大量的fd的数组被整体复制于用户态和内核地址空间之间,而不管这样的复制是不是有意义

2、poll还有一个特点是“水平触发”,如果报告了fd后,没有被处理,那么下次poll时会再次报告该fd

epoll

epoll有EPOLLLT和EPOLLET两种触发模式,LT是默认的模式,ET是“高速”模式

LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次再有数据流入之前都不会再提示了,无 论fd中是否还有数据可读

所以在ET模式下,read一个fd的时候一定要把它的buffer读光,也就是说一直读到read的返回值小于请求值,或者 遇到EAGAIN错误

还有一个特点是,epoll使用“事件”的就绪通知方式,通过epoll_ctl注册fd,一旦该fd就绪,内核就会采用类似callback的回调机制来激活该fd,epoll_wait便可以收到通知

相关思维导图模板

linux怎么设置不允许更改权限思维导图思维导图

树图思维导图提供 linux怎么设置不允许更改权限思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 linux怎么设置不允许更改权限思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:03d2e60667691df30c17bd452d42c664

linux中tomcat能否加大内存思维导图思维导图

树图思维导图提供 linux中tomcat能否加大内存思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 linux中tomcat能否加大内存思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:e8edd23059b99dd1afe53ab655d829e6