IO软件层次结构与假脱机技术
IO软件层次结构
用户层软件->设备独立性软件->设备驱动软件->中断处理程序->硬件

用户层软件实现与用户交互的接口,用户可直接使用该层提供的,与IO操作相关的库函数对设备进行操作。
用户层软件将用户请求翻译成格式化的IO请求,并通过系统调用请求操作系统内核的服务。
设备独立性软件又称为设备无关性软件。他向用户软件层提供系统调用接口,设备的保护,差错处理,设备的分配与回收,数据缓冲区管理,建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序。(调用相应的驱动程序时需要一个逻辑设备表LUT,这张表中有逻辑设备名,物理设备名,驱动程序入口的地址等属性。)
一般来讲,驱动设备是以一个独立的进程存在。
设备驱动程序是厂家提供给计算机的。不同设备的驱动基本大不相同,设备驱动程序主要负责对硬件设备的具体控制,将上层发出的一些列命令(读写)转化为特定的设备能听懂的语言,例如设置设备寄存器;检查设备处于的状态。
当IO任务完成后,IO控制器会发送一个中断信号,系统会根据中断信号来找到对应的中断处理程序并执行。中断处理程序的处理流程如下。
从控制器读出IO设备的状态,判断一下IO是否正常结束,如果正常结束会从设备中读入一个字的数据并经由CPU放在内存缓冲区中,否则根据异常原因调用响应处理程序。
硬件是最后执行IO操作,有机械部件和电子部件组成。
其中IO核心执行同指的是设备独立性软件,设备驱动程序,中断处理,假脱机技术是在用户软件层实现的
假脱机技术
脱机就是脱离主机的控制然后进行输入和输出。
在早期批处理阶段引入了脱机输入和输出技术(用磁带完成)
早期的计算机输入是靠在只带上打孔实现的,因为计算机只认识二进制,根据纸带上孔的分布来向计算机输入和输出数据,但是这样做的效率太慢,大大浪费了CPU的处理时间,因为处理纸带的时间比实际计算机计算的时间长了很多。这时引入脱机技术,在纸带和计算机之间多加了一个外围控制机,在外围控制机的控制下,慢速的输入设备仙贝送到快速的磁带上,然后计算机再从磁带上取数据,这样两者之间的速度之差就减少了许多。
假脱机技术–输入井和输出井
“假脱机技术”又称为“SpooLing技术”使用软件的方式模拟脱机脱机技术。SpooLing系统的组成如下:

输入井用来模拟脱机输入时的磁带,用于收容IO设备输入的数据。
输出井用来模拟脱机输出的磁带,用于收容IO设备输出的数据。
输入进程和输出进程
输入进程模拟脱机时的控制机,输出进程模拟脱机输出时的外围控制机。

输入/输出缓冲区
输入缓冲区用于暂存从输入设备输入的数据,之后再转存到输入井中
输出缓冲区用于暂存从输出井输出的数据,之后发送到输出设备上

SpooLing技术可以将独占式的物理机虚拟成共享的设备
IO软件层次结构与假脱机技术的更多相关文章
- Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册
豆豆手册 □ BSD手册 □ Linux手册 □ 数据库手册 □ 编程开发手册 □ WEB开发手册 □ 软件应用手册 □ 网络技术手册 □ GNU手册 在线手册 首 页 BSD手册 ·FreeBS ...
- IO流--字符流缓冲技术
缓冲技术是为了提高数据的读写效率而提出的. (1)字符流的缓冲读 在字符流的缓冲技术中提供了一个newLine()方法,这个方法是跨平台的 在读数据的时候采用读完直接刷新的方式可以保证断电后数据不会丢 ...
- 传统IO拷贝与零拷贝技术比较
1. 传统IO 由上面图知,传统io需要经过4次copy, 3次状态切换 第一次: 从硬盘 经过 DMA 拷贝 到 kernel buffer (内核buferr) 第二次: 从kernel buff ...
- 操作系统-I/O(5)I/O软件的层次结构
IO软件的设计目标: (1)高效率:改善设备效率,尤其是磁盘I/O操作的效率 (2)通用性:用统一的标准来管理所有设备 IO软件的设计思路: 把软件组织成层次结构,低层软件用来屏蔽硬件细节,高层软件向 ...
- FD.io 社区中国行暨未来网络技术沙龙 南京站 参会小结
FD.io 社区中国行暨未来网络技术沙龙 南京站,2018 年 3 月 17 日. 开场致辞 Ray 介绍了一些有的没的 ⁃ (Future Event)DPDK summit, FD.io summ ...
- CPU纯软件全虚拟化技术
我们在前面的文章中提到了虚拟化技术的大致分类情况,即分为全虚拟化.半虚拟化和硬件辅助虚拟化3大类.而我们虚拟化技术最主要的虚拟主体就是我们的硬件CPU.内存和IO,那么我们的CPU在全虚拟化模式下如何 ...
- EOS.IO技术学习
如今很火的项目EOS的学习,以下主要的内容是基于白皮书 参考: http://chainx.org/paper/index/index/id/20.html EOS.IO软件引入了一种新的块链架构,旨 ...
- 虚拟化技术原理(CPU、内存、IO)
本文来自:http://www.ywnds.com/?p=5856 虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分 ...
- 10、技术经理要阅读的书籍 - IT软件人员书籍系列文章
技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...
随机推荐
- TortoiseGit和intellij idea配置秘钥
第一:intellij idea 配置gitlab ssh key 1:打开git bash,不需要进入任何目录,直接输入 ssh-keygen -t rsa 一路回车 2:生成之后找到秘钥文件id_ ...
- rsync 参数说明及使用参数笔记好文摘抄
一.前言 最近发现rsync挺好用的--不过参数有点多,所以这儿写一篇给自己以后要用的时候做个参考. 二.参数说明 这儿全是我翻资料连蒙带猜(有些实在是不好解释)翻译出来的,请各位转载的留个名啊,虽然 ...
- js实现弹幕
弹幕是一个很常见的功能,下面是本人封装的一个小小的实现方案,存在不足之处可以提出来或自由改进. 直接上代码:复制可运行 <!DOCTYPE html> <html> <h ...
- 快速构建一个vue项目
首先介绍一下命令行构建一个vue项目步骤: 1.下载安装node.js(直接运行安装包根据步骤安装完),打开命令行输入:node -v ,出现版本号即安装成功. 2.命令行界面输入:cnpm inst ...
- 解决IDEA Maven下载依赖包速度慢问题
右键项目,maven选项,"Open setting.xml"或"Create setting.xml",在 mirrors 节点添加下面代码. <mir ...
- 算法(Java实现)—— 分治算法
分治算法 分治算法的设计模式 基本思想 把复杂问题分解成若干互相独立容易求解的子问题 经典问题 二分搜索 大整数乘法 棋盘覆盖 合并排序 快速排序 线性时间选择 最接近点对问题 循环赛日程表 汉诺塔 ...
- [日常摸鱼][poj2777]Count Color-线段树
辣鸡会考考完啦哈哈哈哈 题意:一块板分成$L$块,每次给一段连续的块染色或者询问一段有几种颜色,颜色的范围$\leq 30$ 我记得我好像做过一个类似的二维染色的问题-不过那个用树状数组直接过掉了- ...
- 冰河,能不能讲讲如何实现MySQL数据存储的无限扩容?
写在前面 随着互联网的高速发展,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高.当今互联网企业中,大部分企业使用的是MySQL来存储关系型数据.如何实现MySQL数据存储层的高度可扩 ...
- Yii2使用a链接发送post请求
<?=Html::a(' <img class="list-group-item-icon" src="/frontend/web/images/kplus/ ...
- netsniff恶意流量识别和匹配解读
代码整体框架 流量扫描函数调用 加载配置文件的代码调用 获取扫描的条数 重点匹配函数 流量eg:'\x00\x04\x00\x01\x00\x06\x00\x16>\x10\x1d>SW\ ...