I/O模型,同步异步,阻塞非阻塞是些概念困扰了我很长时间. 能上图就好了,一图胜千言.
图在UNIX网络编程 第三版 卷1 中文盗版 第六章 图6-6 5种I/O模型的比较
UNIX有5种I/O模型,阻塞会发生在两个阶段上:
1.阻塞式I/O 等待数据时阻塞 数据从内核复制到用户空间时阻塞 2.非阻塞式I/O 等待数据不阻塞,但是轮询会占用cpu资源 数据从内核复制到用户空间时阻塞 3.I/O复用 考虑到轮询占用cpu资源的问题,阻塞在选择器上,减轻处理器负担 将数据从内核复制到用户空间时阻塞 4.信号驱动式I/O 等待数据不阻塞,数据准备好时通知接收数据,将数据从内核复制到用户空间时阻塞
以上四种或多或少均有阻塞现象存在,它们都是同步I/O模型
5.异步I/O 等待数据时不阻塞 将数据从内核复制到用户空间时也不阻塞. 数据到了用户空间以后才发信号,就像你在网上下了订单,快递员拿着你的快件站在你家门口才通知你开门签收的样子.
而在网上下了订单,货物到了离你家最近的自提点,商城通知你去自提点取提货.你专门抽出时间去提货.这是4.信号驱动式I/O.因为在来回自提点的路上你其实是阻塞的.
这个教程看到这里我最大的一个疑问就是,Who Are You!!!
和楼上同感。求抱匿名网友大腿!!
特别好! 特别感谢!
不会还是上次那个让大家很感兴趣想问AXL的“萌妹子”吧
哈哈哈,头像瞩目(笑)
头像 Hhhhhhhhh
Sign in to make a reply
匿名sina网友V
I/O模型,同步异步,阻塞非阻塞是些概念困扰了我很长时间. 能上图就好了,一图胜千言.
图在UNIX网络编程 第三版 卷1 中文盗版 第六章 图6-6 5种I/O模型的比较
UNIX有5种I/O模型,阻塞会发生在两个阶段上:
1.阻塞式I/O 等待数据时阻塞 数据从内核复制到用户空间时阻塞 2.非阻塞式I/O 等待数据不阻塞,但是轮询会占用cpu资源 数据从内核复制到用户空间时阻塞 3.I/O复用 考虑到轮询占用cpu资源的问题,阻塞在选择器上,减轻处理器负担 将数据从内核复制到用户空间时阻塞 4.信号驱动式I/O 等待数据不阻塞,数据准备好时通知接收数据,将数据从内核复制到用户空间时阻塞
以上四种或多或少均有阻塞现象存在,它们都是同步I/O模型
5.异步I/O 等待数据时不阻塞 将数据从内核复制到用户空间时也不阻塞. 数据到了用户空间以后才发信号,就像你在网上下了订单,快递员拿着你的快件站在你家门口才通知你开门签收的样子.
而在网上下了订单,货物到了离你家最近的自提点,商城通知你去自提点取提货.你专门抽出时间去提货.这是4.信号驱动式I/O.因为在来回自提点的路上你其实是阻塞的.