zoukankan      html  css  js  c++  java
  • 系统编程

    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系统调用来修改其文件状态标志。

    .

    /************* 社会的有色眼光是:博士生、研究生、本科生、车间工人; 重点大学高材生、普通院校、二流院校、野鸡大学; 年薪百万、五十万、五万; 这些都只是帽子,可以失败千百次,但我和社会都觉得,人只要成功一次,就能换一顶帽子,只是社会看不见你之前的失败的帽子。 当然,换帽子决不是最终目的,走好自己的路就行。 杭州.大话西游 *******/
  • 相关阅读:
    基于jquery. cookie 防刷新重复点击获取验证码
    Mysql常用命令详解
    20种常用的DOS命令小结
    php 常用正则表达式
    VBA Excel 常用 自定义函数
    VBA Mysql 类
    VBA Excel 引用 API,以实现“透明”
    VBA Excel 打印
    VBA Excel 单元格操作
    php上传常见文件类型对应的$_FILES["file"]["type"](转)
  • 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/13799421.html
Copyright © 2011-2022 走看看