I/O存取有三种方式:可编程I/O、中断驱动I/O、DMA,分别可理解如下:

下面以老师向班里同学收发作业来类比I/O存取,办公室表示内存,即,I操作表示:老师向学生收作业,然后存放到办公室里;O操作表示:老师从办公室拿出作业本,然后发给对应的人。

1、可编程I/O:最简单的一种。老师需要收取某个人或某些人的作业时,就会不断询问这个人或这些人准备好“交作业”了没?如果准备好,则收起来,然后存放到办公室中;老师需要发放某个人或某些人作业时,就从办公室取出对应的作业本,然后不断询问这个人或这些人准备好“接受作业本”了没?若准备好,则发作业本给他。

2、中断驱动I/O:不用询问需要收取或发放的这个人或这些人的准备状态。老师需要收取某个人或某些人的作业时,就会发出收作业的通知,然后就可以去做自己的其他事情,等到对应的人做好了作业,准备好上交的时候,这个人就向老师发出中断信号,老师响应他然后将作业收起来,然后存放到办公室中;老师需要发放某个人或某些人作业时,就会发出发放作业的通知,然后就可以去做自己的其他事情,等到对应的人准备好接受作业本的时候,这个人就向老师发出中断信号,老师响应他然后从办公室取出对应的作业本,作业发给他。

3、DMA方式:老师干脆设置了一个代理班长(班长对应DMA控制器),减轻了老师的负担,不用自己亲自去发放或收取作业本,直接授权给班长去办理。具体如下:当老师需要收取某个人或某些人的作业时,就会告诉班长要收取谁的作业、收取多少本等等信息,然后班长就会去完成收取作业这个动作(收取对应的人的作业本,然后存放到办公室),完成后班长就会向老师汇报完成情况;老师需要发放某个人或某些人作业时,就会告诉班长要方法谁的作业、发放多少本等等信息,然后班长就会去完成发放作业这个动作(从办公室取出对应的作业本,发放到取对应的人),完成后班长就会向老师汇报完成情况。

DMA方式在班长做发放或收取作业这个动作的时候,老师是不能够访问办公室里的作业本的,否则班长将可能弄混作业本或者找不到作业本。也就是说班长存取作业本的优先级要高于老师存取作业本,以避免数据丢失。所以老师如果现在改作业本的话,将会被挂起,改作业的这个的速度也会慢一点。

I/O存取方式的形象比喻的更多相关文章

  1. Winform消息与并行的形象比喻

    有一次我给同事讲述跨线程调用时使用了高速行驶的并行列车来比喻,感觉比较形象. 线程列车 多线程就像多个并行的列车,每个线程在各自的轨道上不断向前行驶.主界面所在的线程称为UI线程,也叫主线程,主线程依 ...

  2. 大数据技术生态圈形象比喻(Hadoop、Hive、Spark 关系)

    [摘要] 知乎上一篇很不错的科普文章,介绍大数据技术生态圈(Hadoop.Hive.Spark )的关系. 链接地址:https://www.zhihu.com/question/27974418 [ ...

  3. ajax获取数据的形象比喻,助于理解记忆

    过程 创建对象(打开浏览器) 连接服务器(输入网址) 发送请求(按下回车) 服务器接收并返回数据(显示对应的网址网站内容) 原理

  4. 加密解密(5)SSL形象比喻

    转自: http://blog.csdn.net/cloverphp/article/details/11737433 前言: 关于公钥,私钥请看前几篇文章   SSL 协议既用到了公钥加密技术(握手 ...

  5. NIO与传统IO的区别(形象比喻)[转]

    传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...

  6. BIO、NIO、AIO的形象比喻

    BIO (Blocking I/O):同步阻塞I/O模式. NIO (New I/O):同步非阻塞模式. AIO (Asynchronous I/O):异步非阻塞I/O模型. 先看阻塞和非阻塞的区别, ...

  7. 前端学HTTP之实体和编码

    前面的话 每天都有各种媒体对象经由HTTP传送,如图像.文本.影片以及软件程序等.HTTP要确保它的报文被正确传送,识别.提取以及适当处理.为了实现这些目标,HTTP使用了完善的标签来描述承载内容的实 ...

  8. PayPal高级工程总监:读完这100篇论文 就能成大数据高手(附论文下载)

    100 open source Big Data architecture papers for data professionals. 读完这100篇论文 就能成大数据高手 作者 白宁超 2016年 ...

  9. 【iOS 单例设计模式】底层解析与运用

    [iOS 单例设计模式]底层解析与运用 一.单例设计名词解释: (官方解释)单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例.(形象比喻)程序 — 公司   单例实例 - 管理 ...

随机推荐

  1. poj1328 贪心

    http://http://poj.org/problem?id=1328 神TM贪心. 不懂请自行搜博客. AC代码: #include<cstdio> #include<algo ...

  2. C++11 std::chrono库详解

    所谓的详解只不过是参考www.cplusplus.com的说明整理了一下,因为没发现别人有详细讲解. chrono是一个time library, 源于boost,现在已经是C++标准.话说今年似乎又 ...

  3. 【面试题】HWL

    1.编程题 设计数据结构,模拟浏览器功能: BACK FORWARD VISIT QUIT Visit 未指定具体网址时,返回主页 http://www.xueersi.com 2.指出下列程序的错误 ...

  4. flume file channel 异常解决

    1. 错误提示 -- ::, (SinkRunner-PollingRunner-DefaultSinkProcessor) [ERROR - org.apache.flume.SinkRunner$ ...

  5. Spring Data JPA 查询方法支持的关键字

    Table 2.3. Supported keywords inside method names Keyword Sample JPQL snippet And findByLastnameAndF ...

  6. 反射和动态代理实现上下文切入AOP效果

    Java的反射框架提供了动态代理机制,允许在运行期对目标类生成代理,避免重复开发,实现上下文切入的功能. 代码是最好的交流语言: Subject接口 RealSubject实现接口 SubjectHa ...

  7. <构建之法>第十三章到十七章有感以及这个项目读后感

    <构建之法>第十三章到十七章有感 第13章:软件测试方法有哪些? 主要讲了软件测试方法:要说有什么问题就是哪种效率最高? 第14章:质量保障 软件的质量指标是什么?怎么样能够提升软件的质量 ...

  8. android布局详解

      http://blog.163.com/zhangzheming_282/blog/static/117920962013072502787/   AbsoluteLayout——绝对布局   必 ...

  9. 【wikioi】1014 装箱问题

    题目链接 算法:动态规划(01背包) 01背包思想:依次对待某一物体,考虑是否放入容量为V的背包中 用f[V]来表示容量为V的背包的最大价值,则决策是 f[V] = max{f[V], f[V-v[i ...

  10. JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())

    var box = document.getElementById("box"); box.id = "pox"; 将id = “box”,改为id = “po ...