应用进程是:小明

内核:小王

1 阻塞式I/O模型:

小明向小王借大米做饭,小王暂时没有,但是小明这时候其它啥事情也不做了(例如这时候他还可以洗菜),就在哪里等的,直到小王有了大米,然后小明把大米搬运到自己家里,开始做饭。

2 非阻塞式I/O模型:

小明向小王借大米做饭,小王暂时没有,但是小明这时候这时候他去洗菜了,每洗一回就去问小王大米准备好了吗,直到小王有了大米,然后小明把大米搬运到自己家里,开始做饭。

3 I/O 复用模型:

村里面好多人做饭没有米了,都去向小王借米。这样的话无论是向小王借米的人每隔一段时间问小王也好,还是在哪里死等小王的消息也罢,借米的人都至少不会好好的做其他的事情了,

这样大家就找一个代理人,然后大家吧情况和这个代理人说了,让这个代理人和小王交互。等有数据到达的时候,这个代理人就通知具体的某个人,然后这个人把大米搬运到自己家里面,开始做饭。

4 信号驱动模型:

小明向小王借大米做饭,小王暂时没有,但是小明这时候去洗菜,而不是在哪里等着,或者不断的问小王,因为小王有了大米会主动通知小明,等通知到来的时候,小明把大米搬运到自己家里,开始做饭。

5 异步模型:

小明向小王借大米做饭,小明向小王说完借大米的事情就去做别的事情了,等小王有了大米,并且主动把大米搬运到小明的家里,才通知小明大米到了,这时候小明开始做饭。

同步:应用进程主动拷贝数据到用户空间。

异步:内核负责拷贝数据到用户空间,这个过程中应用进程还在做自己的事情。

阻塞,非阻塞,I/O复用,信号驱动,都是同步。最后的异步才是真正的异步。

参考:

http://blog.csdn.net/lovelinx/article/details/39924473

转载于:https://www.cnblogs.com/guojunwei/p/6926520.html

深入浅出 5种IO模型。相关推荐

  1. 漫谈五种IO模型(主讲IO多路复用)

    首先引用levin的回答让我们理清楚五种IO模型 1.阻塞I/O模型 老李去火车站买票,排队三天买到一张退票. 耗费:在车站吃喝拉撒睡 3天,其他事一件没干. 2.非阻塞I/O模型 老李去火车站买票, ...

  2. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  3. 一口气说出 5 种 IO 模型,蒙圈了!

    来源:https://zhuanlan.zhihu.com/p/127170201 一.基本概念 五种IO模型包括:阻塞IO.非阻塞IO.IO多路复用.信号驱动IO.异步IO. 首先需要了解下系统调用 ...

  4. 你应该知道的五种IO模型

    点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 写在前面 linux操作系统包含了五种IO模型,各种上层编程语言或者网络编程框架的上层实现都是基于操作系统的这些IO实现来实 ...

  5. linux 五种IO模型 简介

    Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...

  6. Linux五种IO模型性能分析

    转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析 目录(?)[-] 概念理解 Linux下的 ...

  7. Linux 下的五种 IO 模型

    Linux 下的五种 IO 模型 来源:decaywood's Blog 概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2 ...

  8. 聊聊 Linux 中的五种 IO 模型

    聊聊 Linux 中的五种 IO 模型 2016/04/21 · IT技术 · 8 评论 · iO, 同步, 异步, 阻塞, 非阻塞 分享到:0 本文作者: 伯乐在线 - 陶邦仁 .未经作者许可,禁止 ...

  9. 【多线程】0.理解一下5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

    5种IO模型.阻塞IO和非阻塞IO.同步IO和异步IO 看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度.环境不一样.所以,我们先说明基本的IO操作及环境. 本文是在<UNIX网络编 ...

最新文章

  1. 安装wampserver及配置php,phpmyadmin遇到的问题及解决方法
  2. ubuntu的SSH的安装和免密码登陆
  3. 【Android 高性能音频】OboeTest 音频性能测试应用 ( 应用简介 | 测试内容 | 输出测试 | Oboe 缓冲区 与 工作负载修改 | 测试案例 )
  4. 数据结构:二分查找算法
  5. Oracle 数据定义语言,oracle 数据定义语言(DDL)语法
  6. python识别图片上的文字_Python如何识别图片中的文字 【转】
  7. Android 中如何计算 App 的启动时间?
  8. 什么是云原生,跟云计算有什么关系?终于有人讲明白了
  9. 找出满足要求的三位数
  10. 笔记十三:python之类的继承实例(猜诗歌)
  11. J-Link软件和文档包的版本发行说明(4)[V6.50 ~ V6.90a版本]
  12. linux软键盘怎么调出来,软键盘怎么关?软键盘关闭方法
  13. POJ 2240 HDU 1217 Arbitrage(Floyd)
  14. iMac2021 在重新安装mac os系统后,电脑账户创建失败
  15. 关于检索的知识[转]
  16. ##英语文本的单词统计 排序并输出前5%
  17. 大学物理(下)class1
  18. matlab视网膜血管分割,视网膜血管增强与分割算法研究
  19. 想练八段锦?扔掉可爱漫画版吧,现在出真人教练版了!
  20. 图形化界面的Xmind用例转excel工具

热门文章

  1. springMVC如何接收和发送json数据对象
  2. vue + element 顶部二级菜单_揭秘vue/react组件库中5个quot;作者不造的轮子quot;
  3. C语言程序设计省二考试,浙江省高校计算机等级考试大纲(二级——C语言程序设计大纲)(...
  4. Arthas 使用的各类方式
  5. Spring Cloud/Dubbo 应用无缝迁移到 Serverless 架构
  6. android日志收集存入mysql_rsyslog+analyzer+mysql实现日志收集展示
  7. std输入参数太多matlab,错误使用函数,输入参数太多怎么解决
  8. python queue模块_Python的queue模块详解
  9. python getattr_Python中的getattr()函数详解
  10. 19位整数 java_为什么阿里巴巴Java开发手册中强制要求超大整数禁止使用Long类型返回?...