美文网首页
IO复用模型

IO复用模型

作者: Balram | 来源:发表于2021-03-22 12:59 被阅读0次

Unix下可用的5中I/O模型

一个输入操作通常包含两个不同阶段

  1. 等待数据准备好。

  2. 从内核向进程复制数据。

第一步通常涉及等待数据从网络中到达,当所等待分组到达时,他被复制到内核中的某个缓冲区。

第二步是把数据从内核缓冲区复制到应用进程缓冲区。

1. 阻塞式I/O

阻塞式IO模型.png

进程调用recvfrom,其系统调用知道数据到达且被复制到应用进程的缓冲区中,或者发生错误才返回。从调用recvfrom开始,到它返回的整段时间内是被阻塞的。recvfrom成功返回后,应用进程开始处理数据。

非阻塞式I/O

非阻塞式IO模型.png

进程把一个套接字设置成非阻塞是在通知内核:当所请求的IO操作时,不进行阻塞,而是返回一个错误。当应用进程像对这样一个非阻塞描述符循环调用recvfrom时,称之为轮询。

应用进程持持续轮询内核,以便查看某个操作是否就绪、这样做往往消耗大量CPU时间。

I/O复用(select 和 poll)

IO复用模型.png

阻塞与select调用,等待数据报套接字变为可读,。当select返回套接字可读这一条件,调用recvfrom把可读数据复制到应用进程缓冲区。

使用IO复用并没有什么优势,而且还需要两个系统调用。但是select的优势,在于可以等待多个描述符就绪。

信号驱动式I/O(SIGIO)

信号驱动式IO模型.png

首先要开启套接字的信号驱动式IO功能,并通过系统调用,安装一个信号处理函数,该调用会立即返回,进程可以继续工作,不会阻塞。

当数据准备好,内核就为该进程产生一个SIGIO信号。随后可以在信号处理函数中调用revcfrom读取数据,并通知主循环数据已经准备好处理。

这种模型优势在于,等待数据到达期间,进程不会被阻塞,主循环可以继续执行。

异步I/O

异步IO模型.png

工作机制是:告知内核后启动某个操作,并让内核在整个操作(包括将数据从内核复制到进程缓冲区),完成后通知进程。信号驱动的话,只是由内核通知进程可以启动一个IO操作。异步IO是内核通知应用进程IO操作何时完成。

同步IO操作:导致请求进程阻塞,直到IO操作完成。

异步IO操作:不导致请求进程阻塞。

因此可以知道:阻塞IO模型、非阻塞IO模型、IO复用模型和信号驱动IO模型 都是同步IO模型,因为真正的IO操作(recvfrom)将阻塞进程。只有异步IO模型 是异步IO。

参考资料

  1. 《UNIX网络编程卷1》第6章 6.2 I/O模型

相关文章

  • NIO selector 多路复用reactor线程模型--20

    多路复用IO模型:多路复用IO模型是目前使用得比较多的模型。JavaNIO实际上就是多路复用IO。在多路复用IO模...

  • 细谈Select,Poll,Epoll

    阻塞 io 模型 blocking IO非阻塞 io 模型 nonblocking IOio多路复用模型 IO m...

  • 1.Nette入门第一章——IO演进

    1. IO 基础 1.1. linux网络IO模型 阻塞IO模型 非阻塞IO模型 IO多路复用模型(NIO) 信...

  • IO多路复用

    IO模型 阻塞IO只能阻塞一个IO操作,IO复用模型能阻塞多个IO操作,所以才叫多路复用读数据: 等待数据到达 将...

  • IO复用模型

    Unix下可用的5中I/O模型 一个输入操作通常包含两个不同阶段 等待数据准备好。 从内核向进程复制数据。 第一步...

  • IO复用模型

    一、多进程和多线程的本质 多个执行单位竞争CPU时间片 执行单位大部分时间都在阻塞等待客户端的数据到来(阻塞在re...

  • 五种 IO 模型

    五种 IO 模型 参考链接 一共有五种 IO 模型 阻塞 IO 非阻塞 IO 多路复用 IO 信号驱动 IO 异步...

  • 2.五种IO模型

    0.IO介绍1.阻塞IO模型2.非阻塞IO模型3.IO多路复用模型4.信号驱动IO模型5.异步IO模型6.五种IO...

  • Java中的IO模型

    Java中的IO模型 Java中的IO模型有四种: 同步阻塞IO 同步非阻塞IO IO多路复用 异步IO 其中IO...

  • 产品开发

    IO复用模型同步,异步,阻塞,非阻塞及实例详解 IO复用模型同步,异步,阻塞,非阻塞及实例详解数据库中间件 MyC...

网友评论

      本文标题:IO复用模型

      本文链接:https://www.haomeiwen.com/subject/tcezcltx.html