[计算机原理]计算机原理章2 I/O模型

五种I/O模型: 安全

1)阻塞I/O 
2)非阻塞I/O 
3)I/O复用(select和poll) 
4)信号驱动I/O(SIGIO) 
5)异步I/O 
前四中是同步,最后一种是异步。异步

 

阻塞I/O模型: 
简介:进程会一直阻塞,直到数据拷贝完成 
应用程序调用一个I/O函数,致使应用程序阻塞,等待数据准备好,若是数据没有准备好,一直等待。。数据准备好,从内核拷贝到用户空间,I/O函数返回成功函数

 

非阻塞I/O模型: 
简介:咱们把一个套接口设置为非阻塞就是告诉内存,当所请求的I/O操做没法完成时,不要惊进程睡眠,而是返回一个错误,I/O函数会不断的测试数据是否准备好,没有准备好,继续测试,直到数据准备好为止。在测试的过程当中会占用大量的CPU时间。 测试

 

I/O复用模型:
简介:主要是select和epoll;对于一个I/O端口,两次调用,两次返回,比阻塞I/O并无什么优点,只是能实现同时对多个I/O端口进行监听。线程

I/O复用模型会调用select,poll函数,这几个函数也会使进程阻塞,可是和阻塞I/O不一样的,这个函数能够同时阻塞多个I/O操做,并且能够同时对多个读操做,多个写操做的I/O函数进行检测,直到有数据可读或可写时,才真正调用I/O操做函数。
附:接口

select:不是线程安全的;select 只能监视1024个连接进程

 poll :去掉了1024个连接的限制;poll仍然不是线程安全的内存

  • epoll :如今是线程安全的; 

  • epoll 如今不只告诉你sock组里面数据,还会告诉你具体哪一个sock有数据

 

信号驱动I/O 
简介:两次调用,两次返回 
首先容许套接口进行信号驱动I/O,并安装一个信号处理函数,进程继续运行并不阻塞。等数据准备好时,进程会收到一个SIGIO信号,能够在信号处理函数中调用I/O操做函数处理数据。同步

 

异步I/O模型: 
简介:数据拷贝的时候进程无需阻塞 
当一个异步过程调用发出后,调用者不能马上获得结果。实际处理这个调用的部件在完成后,经过状态,通知和回调通知调用者输入输出操做。 import

相关文章
相关标签/搜索