select,poll,epoll笔记

不想你离开。 提交于 2020-02-17 11:08:22

在这里插入图片描述

进程获取磁盘中的数据过程:

1.进程向内核发起一个调用

2.内核收到系统调用,向磁盘发送读取命令

3.磁盘收到内核命令后,将文件载入到内核的内存空间里面

4.内核的内存空间接收到数据后,将数据copy到进程的内存空间(此处发生IO)

5.进程的内存空间得到数据后,给内核发送通知

6.内核把接收到的通知回复给进程,此过程为唤醒进程,然后进程得到数据进行下一步操作

阻塞:进程发起IO调用,进程又不得不等待IO完成,此时CPU把进程切换出去,进入睡眠状态,称为阻塞IO

非阻塞:进程发起IO调用,知道还需一段时间完成,就立即通知进程进行别的操作,则为非阻塞IO

事件(信号)驱动I/o

水平触发的事件驱动机制:内核通知进程来读取数据,进程可以不立即处理,下次调用epoll_wait()会再次通知

边缘触发:内核只通知一次让进程来读取数据,进程可以在超时时间内随时来读取数据

NGINX采用了边缘触发

Reactor模型,处理并发IO比较常见的一种模式,用于同步IO

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!