五种IO模型:
- 阻塞IO;
- 非阻塞IO;
- 信号驱动IO;
- 异步IO;
- 多路转接IO
IO操作分为两个过程:等待/数据拷贝
阻塞IO:
发起IO调用后,若不具备IO条件,则等待IO条件具备,拷贝数据后返回;
非阻塞IO:
发起IO调用后,若不具备IO条件,则立即报错返回,若具备IO条件则立即拷贝数据后返回;
信号驱动IO:
先定义IO信号处理,若IO条件具备则直接信号通知进程,发起调用,拷贝数据后返回;
异步IO:
先定义IO信号处理,发起异步IO调用,直接返回。让别人进行IO等待,等待IO条件具备后拷贝数据(与信号驱动的区别是拷贝数据是由别人来完成的)信号通知进程IO完成
多路转接IO:(多路复用IO)
功能:
是一种IO事件的监控,同时对大量的描述符进行事件监控,监控描述符是否具备IO条件;
作用:
通过IO多路转接技术监控描述符,就可以得到描述符的状态
适用场景:
有大量的客户端连接但是同一时间只有少量活跃的情景,并且每一个客户端的请求处理时间不会很长;
模型:
- select模型
- poll模型(被淘汰)
- epoll模型
都是实现对大量描述符进行事件监控的操作;