进程获取磁盘中的数据过程:
1.进程向内核发起一个调用
2.内核收到系统调用,向磁盘发送读取命令
3.磁盘收到内核命令后,将文件载入到内核的内存空间里面
4.内核的内存空间接收到数据后,将数据copy到进程的内存空间(此处发生IO)
5.进程的内存空间得到数据后,给内核发送通知
6.内核把接收到的通知回复给进程,此过程为唤醒进程,然后进程得到数据进行下一步操作
阻塞:进程发起IO调用,进程又不得不等待IO完成,此时CPU把进程切换出去,进入睡眠状态,称为阻塞IO
非阻塞:进程发起IO调用,知道还需一段时间完成,就立即通知进程进行别的操作,则为非阻塞IO
事件(信号)驱动I/o
水平触发的事件驱动机制:内核通知进程来读取数据,进程可以不立即处理,下次调用epoll_wait()会再次通知
边缘触发:内核只通知一次让进程来读取数据,进程可以在超时时间内随时来读取数据
NGINX采用了边缘触发
Reactor模型,处理并发IO比较常见的一种模式,用于同步IO
来源:CSDN
作者:climzhong
链接:https://blog.csdn.net/weixin_43858402/article/details/104353874