1)阻塞I/O(blocking I/O)
发起请求,等待数据报准备好,拷贝数据,数据返回指令
应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。
2)非阻塞I/O (nonblocking I/O)
轮训数据报什么时候准备好,准备好之后阻塞拷贝数据,数据返回指令
3) I/O复用(select 和poll) (I/O multiplexing)
就是应用函数select poll epoll 监听就绪的设备 select就是遍历查询每个设备的就绪状态 如果就绪再返回,接着阻塞拷贝数据
4)信号驱动I/O (signal driven I/O (SIGIO))
5)异步I/O (asynchronous I/O (the POSIX aio_functions))
首先来讲一下linux的组成,linux的每一个对象都可以称为文件,比如显示器、 打印机、驱动程序等等,对于文件会有一个描述符叫做fd(file description)。
这个文章讲的很好 http://blog.csdn.net/jay900323/article/details/18141217/