系统编程

I/O处理五种模型

***  阻塞I/O模型

 

***  非阻塞I/O模型

  

***  I/O多路转接模型

  

***  信号驱动I/O模型

   

 当数据报准备好的时候,内核会向应用程序发送一个信号,进程对信号进行捕捉,并且调用信号处理函数来获取数据报。

 该模型分为两个阶段:

 1.数据准备阶段:未阻塞,当数据准备完成之后,会主动的通知用户进程数据已经准备完成,对用户进程做一个回调。

 2.数据拷贝阶段:阻塞用户进程,等待数据拷贝。

***  异步I/O模型

 同步和异步是针对应用程序和内核交互而言的;

 同步是用户进程触发IO操作并等待或轮询的去查看是否就绪;

 异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知,这需要CPU支持。

 类比一下,将异步I/O模型类比为叫外卖

 此时科技已经非常发达,外卖机器人将外卖自动送达并转换成营养快速注入我的体内,同时还能得到口感的满足。

 注入结束后,机器人会提醒我注入完毕。

 在这个期间我可以放心大胆的做其他事情,甚至注射的时候也不需要停下来!

 即用户进程发起系统调用后,立刻就可以开始去做其他的事情,然后直到I/O数据准备好并复制完成后,内核会给用户进程发送通知,告诉用户进程操作已经完成了

 1.异步I/O执行的两个阶段都不会阻塞读写操作,由内核完成。

 2.完成后内核将数据放到指定的缓冲区,通知应用程序来取。

 小实验

 非阻塞小实验 - 思路

 * 使用open打开文件时,设置O_NONBLOCK文件状态标志。

 * 对于已经打开的文件, 则使用fcntl系统调用来修改其文件状态标志。

.

/************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/13799421.html