Discuss / Python / 要论对I/O模型的区分,我只服UNP

要论对I/O模型的区分,我只服UNP

Topic source

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.因为在来回自提点的路上你其实是阻塞的.

danjawwi1

#2 Created at ... [Delete] [Delete and Lock User]

这个教程看到这里我最大的一个疑问就是,Who Are You!!!

罗小尘

#3 Created at ... [Delete] [Delete and Lock User]

和楼上同感。求抱匿名网友大腿!!

5080sy

#4 Created at ... [Delete] [Delete and Lock User]

特别好! 特别感谢!

追风择翼

#5 Created at ... [Delete] [Delete and Lock User]

不会还是上次那个让大家很感兴趣想问AXL的“萌妹子”吧

哈哈哈,头像瞩目(笑)

头像 Hhhhhhhhh


  • 1

Reply