暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

I/O model learning and diffences

月亮工作室 2019-03-21
177

      编程少不了要学习I/O 模型,网上关于I/O 模型 的图不是特别清楚,顺便看了一下以前笔记,找出画的I/O的五种模型,拉出来发篇文章。



一、阻塞I/O:

特点:

       进程全程阻塞等待,直到读写完成。

二、非阻塞I/O:

特点:

      进程对读数据进行全程检测,发现数据没有准备好,就返回错误,接着对读数据进行检测,重复进行,直到读取到数据,这个过程是不阻塞的。如果系统调用的读数据做准备好了,这个时候就阻塞,然后把数据复制到用户内核空间,直到数据调用完成的过程,这个还是同步的过程。

三、I/O多路复用:

特点:

       所谓多路复用,就是同时处理多个I/O请求,发现有一个请求准备好了,就不用等开始处理调用的请求数据,提高了同时处理I/O的能力。

四、异步 I/O:

特点:

        进程发起一个异步I/O请求,立即返回,不用在原地等结果,这个时间可以做其它的事,内核完成I/O的两个阶段,如果请求完成,内核会给进程发送一个信号。

五、事件(信号)驱动I/O:

特点:

        与I/0多路复用相比,它的优势是,免去了select的阻塞与轮询,当有活跃套接字时,由注册的handler处理。

 通俗的讲:        

        进程发起调用,通过回调函数, 内核会记住是那个进程申请的,一直执行到第一段完成,就可以向这个进程发起通知,第一段进程是非阻塞的,进程不需要一直等了, 但是第二段依然是阻塞的。         


下面是五种模型的对方比图:

本文是自己查看和学习以前的内容,如有纰漏请指正!

文章转载自月亮工作室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论