Unix下共有五种I/O模型(转载)

转载 2011年01月13日 23:10:00

Unix下共有五种I/O模型

阻塞I/O

非阻塞I/O

I/O复用(select和poll)

信号驱动I/O(SIGIO)

异步I/O(Posix.1的aio_系列函数)

b.阻塞I/O模型
应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。
如果数据没有准备好,一直等待。。。。
数据准备好了,从内核拷贝到用户空间
IO函数返回成功指示

untitled1

c.非阻塞I/O模型
我 们把一个套接口设置为非阻塞就是告诉内核,当所请求的I/O操作无法完成时,不要将进程睡眠,而是返回一个错误。这样我们的I/O操作函数将不断的测试数 据是否已经准备好,如果没有准备好,继续测试,直到数据准备好为止。在这个不断测试的过程中,会大量的占用CPU的时间。

untitled2

d. I/O复用模型
I/O 复用模型会用到select或者poll函数,这两个函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。而且可以 同时对多个读操作,多个写操作的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操作函数。

untitled3

e.信号驱动I/O模型
首先我们允许套接口进行信号驱动I/O,并安装一个信号处理函数,进程继续运行并不阻塞。当数据准备好时,进程会收到一个SIGIO信号,可以在信号处理函数中调用I/O操作函数处理数据。

untitled4

f.异步I/O模型
调用aio_read函数,告诉内核描述字,缓冲区指针,缓冲区大小,文件偏移以及通知的方式,然后立即返回。当内核将数据拷贝到缓冲区后,再通知应用程序。

untitled5

2.几种I/O模型的比较
前四种模型的区别是第一阶段基本相同,第二阶段基本相同,都是将数据从内核拷贝到调用者的缓冲区。而异步I/O的两个阶段都不同于前四个模型。

untitled6

3.同步I/O和异步I/O
a.同步I/O操作引起请求进程阻塞,直到I/O操作完成。
异步I/O操作不引起请求进程阻塞。
b.我们的前四个模型都是同步I/O,只有最后一个异步I/O模型是异步I/O。

相关文章推荐

【UNIX网络编程】五种I/O模型,阻塞非阻塞同步异步问题详解

IO复用  在写简单的TCP/IP服务器-客户端程序时,客户端要同时处理两个输入:   标准输入 TCP套接字  在结束的时候,因为客户端正阻塞于标准输入上的read函数,服务器TCP虽然正确的给客户...

五种I/O模型的介绍与区分

有时我们在进行系统调用时为什么有的会立即返回,有的会阻塞在那里,而且系统调用的形参都不一样,其实就是因为在设计时采用了不同的I/O机制 阻塞式I/O:     一般我们使用的系统调用接口都...

Linux下的五种I/O模型

阻塞I/O(blocking I/O) 非阻塞I/O (nonblocking I/O) I/O复用(select 和poll) (I/O multiplexing) 信号驱动I/O (sign...

Windows Socket五种I/O模型——代码全攻略(转)

如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSel...

Windows Socket五种I/O模型——代码全攻略

转自 : http://neora.iteye.com/blog/402336#comments 如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供...

WinSock的五种I/O模型

1、 两种I/O模式  阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。  非阻塞模式:执行I/O操作时,Winsock函数...
  • zhu2695
  • zhu2695
  • 2013年03月24日 22:14
  • 744

(转)Windows Socket五种I/O模型 代码全攻略

如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSel...
  • gxj1680
  • gxj1680
  • 2011年05月25日 10:54
  • 472

windows 五种socket i/o 模型

如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSel...
  • zs10hz
  • zs10hz
  • 2014年11月24日 11:09
  • 182

五种I/O模型的比较

我会从以下几个方面来进行比较 *有无每线程64连接数限制 如 果在选择模型中没有重新定义FD_SETSIZE宏,则每个fd_set默认可以装下64个SOCKET。同样的,受 MAXIMUM_WAI...

Winsock五种的I/O模型

Winsock五种的I/O模型上(转)2009-03-03 21:02Winsock 的I/O操作:1、 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unix下共有五种I/O模型(转载)
举报原因:
原因补充:

(最多只允许输入30个字)