linux-I/O模式

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?以前听到这些名词很模糊,今天理了一下。

操作系统分用户空间内核空间。32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。
linux操作系统而言,内核空间:最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF)
                                用户空间:     较低的3G字节(从虚拟地址0x00000000到0xBFFFFFFF)

内存数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到用户空间的地址空间。

linux系统产生了下面五种网络模式的方案。
- 阻塞 I/O(blocking IO)
- 非阻塞 I/O(nonblocking IO)
- I/O 多路复用( IO multiplexing)
- 信号驱动 I/O( signal driven IO)
- 异步 I/O(asynchronous IO)

我的总结:
数据的过程两步: 1.外部数据->内核空间
                               2.内核空间->用户空间
 

1.阻塞I/O    过程一步步走  外-》内核 卡住
                         内核-》用户
2.非阻塞I/O   没数据返回error 
                         外-》内核   没数据    返回error
                         内核-》用户 没数据就返回
3.I/O  多路复用 事件驱动 select poll epoll
     与第一个比:100个socket  有几个有数据就返回几个
             外->内  卡住 ,只是SOCKET是多个的
             内核-》用户
4.异步I/O     外-》内核  没数据直接返回
             内核-》用户 没数据直接返回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章