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软件人员书籍系列文章
技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...
随机推荐
- Electron安装打包指南
当前环境Debian Linux-Deepin 安装Node 直接下载 命令下载 下载 wget https://nodejs.org/dist/v14.15.1/node-v14.15.1-linu ...
- 2020-2021-1 20209307《Linux内核原理与分析》第三周作业
一.计算机的三大法宝 存储程序计算机.函数调用堆栈机制.中断机制 二.堆栈 堆栈的作用:记录函数调用框架.传递函数参数.保存返回值的地址.提供局部变量存储空间 堆栈操作:push栈顶地址减少四个字节. ...
- CVE-2019-0708——RDP漏洞利用
影响系统:windows2003.windows2008.windows2008 R2.windows xp .win7环境:攻击机:kali ip:192.168.40.128靶机:windows ...
- 聊聊自学大数据flume中容易被人忽略的细节
前言:老刘不敢保证说的有多好,但绝对是非常良心地讲述自学大数据开发路上的一些经历和感悟,保证会讲述一些不同于别人技术博客的细节. 01 自学flume的细节 老刘现在想写点有自己特色的东西,讲讲自学 ...
- 部署docker镜像仓库及高可用
下载地址: https://github.com/goharbor/harbor/releases 安装harbor服务器: 安装harbor root@harbor-vm1:/usr/loc ...
- Python 进阶——如何正确使用 yield?
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 在 Python 开发中, yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协 ...
- C盘满了删除C盘文件
还有很多文件在C:\Users\lock\AppData 比如C:\Users\lock\AppData\Local\Temp 临时文件 C:\Users\lock\AppData\Roaming\ ...
- MySQL管理基础
#1.数据库连接管理 mysql命令说明 第一个功能:连接数据库(在前面mysql命令的使用里面讲解了,这里就不讲解了) 第二个功能:mysql客户端自带的命令功能 mysql命令的使用(mysql ...
- Listary效率快捷键
快捷键 打开搜索框快捷键: 双击Ctrl键 上一个项目:向上键 下一个项目:向下键/Tap 打开动作:Enter 属性窗口:Ctrl+O (查询)关键字 作用范围:搜索框 使用方法:命令+空格+关键字 ...
- 发送微信通知 java 实现
/实现类 @Service public class WeChatServiceImpl implements IWeChatService { @Override public WeChatSend ...