首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

io-nio-socket稳扎稳打(七)unix 5种 IO模型

2013-01-23 
io-nio-socket步步为营(七)unix 5种 IO模型参考?unix网络编程 chapter6.2 I/O models,windows网络编程?soc

io-nio-socket步步为营(七)unix 5种 IO模型

参考?unix网络编程 chapter6.2 I/O models,windows网络编程

?

socket编程主要有两步:

第一步: ? “等待数据”从网络上传到本地。然后将数据包从网络层拷贝到内核的缓存中

-->用户应用进程-->recvfrom-->系统调用-->内核等待网络数据报-->网络数据报准备好(拷贝到内核)?

第二步: ? “拷贝数据”从内核中把数据拷贝到程序的数据区中。?

-->内核拷贝数据到用户应用程序(buffer)-->拷贝完成-->返回调用。

?

?

同步IO和异步IO的区别就在于:应用程序的调用是否立即返回!

阻塞IO和非阻塞IO的区别就在于:数据等待/数据拷贝的时候进程是否阻塞!

?

书中介绍了5种I/O models:

?

blocking I/O

两步全阻塞,并让出CPU,或者出错被系统信号中断。

nonblocking I/O

告诉内核,I/O操作无法完成时,不要将进程睡眠,而是返回一个错误EWOULDBLOCK信号,然后不断的polling轮询,直至正常返回调用

I/O multiplexing (select and ?poll)

阻塞于select()/poll()/epoll()调用,轮询,当返回套接口可读条件时,调用recvfrom拷贝数据到用户应用程序,好处在于可以轮询多个文件描述符FD

signal driven I/O ( SIGIO)

不解释,没有AIO好

asynchronous I/O (the POSIX ?aio_functions)

暂不解释

?

?

热点排行