io即读写

1,同步IO(同步):有数据时,recvfrom等待数据复制好是同步IO

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2,阻塞IO(同步):没有数据时recvfrom也一直等待数据到来是阻塞IO

io,同步,异步,阻塞,非阻塞 随笔 第1张

 

3,非阻塞IO(同步):recvfrom没有数据就不等,可以做别的事,不时检查有没有数据到来非阻塞IO

io,同步,异步,阻塞,非阻塞 随笔 第2张

4,IO复用模型(同步):select调用数据(select的作用是有数据时可以告诉recvfrom)但只告知有数据了,数据在哪里还需要找一找,recefrom再调用数据就一定有数据(如果是用eopll调用,就可以直接知道数据在哪里)

io,同步,异步,阻塞,非阻塞 随笔 第3张

 

5,信号驱动IO模型(同步):建立SIGIO信号处理程序,有数据时就可以递交SIGIO,等内核数据准备好的时候系统中断当前程序再recvfrom调用数据

io,同步,异步,阻塞,非阻塞 随笔 第4张

6,异步IO模型:

调用aio_read,让内核等数据准备好,并且复制到用户进程空间后执行事先指定好的函数。E同学让舍管阿姨将杯子装满水后通知他。整个过程E同学都可以做别的事情(没有recv),这才是真正的异步IO。

 io,同步,异步,阻塞,非阻塞 随笔 第5张

总结

IO分两阶段:

1.数据准备阶段
2.内核空间复制回用户进程缓冲区阶段

一般来讲:阻塞IO模型、非阻塞IO模型、IO复用模型(select/poll/epoll)、信号驱动IO模型都属于同步IO,因为阶段2是阻塞的(尽管时间很短)。只有异步IO模型是符合POSIX异步IO操作含义的,不管在阶段1还是阶段2都可以干别的事。

参考链接:https://www.cnblogs.com/euphie/p/6376508.html

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄