IO软件层次结构

用户层软件->设备独立性软件->设备驱动软件->中断处理程序->硬件

  • 用户层软件实现与用户交互的接口,用户可直接使用该层提供的,与IO操作相关的库函数对设备进行操作。

  • 用户层软件将用户请求翻译成格式化的IO请求,并通过系统调用请求操作系统内核的服务。

  • 设备独立性软件又称为设备无关性软件。他向用户软件层提供系统调用接口,设备的保护,差错处理,设备的分配与回收,数据缓冲区管理,建立逻辑设备名到物理设备名的映射关系;根据设备类型选择调用相应的驱动程序。(调用相应的驱动程序时需要一个逻辑设备表LUT,这张表中有逻辑设备名,物理设备名,驱动程序入口的地址等属性。)

一般来讲,驱动设备是以一个独立的进程存在。

  • 设备驱动程序是厂家提供给计算机的。不同设备的驱动基本大不相同,设备驱动程序主要负责对硬件设备的具体控制,将上层发出的一些列命令(读写)转化为特定的设备能听懂的语言,例如设置设备寄存器;检查设备处于的状态。

  • 当IO任务完成后,IO控制器会发送一个中断信号,系统会根据中断信号来找到对应的中断处理程序并执行。中断处理程序的处理流程如下。

  • 从控制器读出IO设备的状态,判断一下IO是否正常结束,如果正常结束会从设备中读入一个字的数据并经由CPU放在内存缓冲区中,否则根据异常原因调用响应处理程序。

硬件是最后执行IO操作,有机械部件和电子部件组成。

其中IO核心执行同指的是设备独立性软件,设备驱动程序,中断处理,假脱机技术是在用户软件层实现的

假脱机技术

脱机就是脱离主机的控制然后进行输入和输出。

在早期批处理阶段引入了脱机输入和输出技术(用磁带完成)
早期的计算机输入是靠在只带上打孔实现的,因为计算机只认识二进制,根据纸带上孔的分布来向计算机输入和输出数据,但是这样做的效率太慢,大大浪费了CPU的处理时间,因为处理纸带的时间比实际计算机计算的时间长了很多。这时引入脱机技术,在纸带和计算机之间多加了一个外围控制机,在外围控制机的控制下,慢速的输入设备仙贝送到快速的磁带上,然后计算机再从磁带上取数据,这样两者之间的速度之差就减少了许多。

假脱机技术–输入井和输出井

“假脱机技术”又称为“SpooLing技术”使用软件的方式模拟脱机脱机技术。SpooLing系统的组成如下:

输入井用来模拟脱机输入时的磁带,用于收容IO设备输入的数据。
输出井用来模拟脱机输出的磁带,用于收容IO设备输出的数据。

输入进程和输出进程

输入进程模拟脱机时的控制机,输出进程模拟脱机输出时的外围控制机。

输入/输出缓冲区

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

SpooLing技术可以将独占式的物理机虚拟成共享的设备

IO软件层次结构与假脱机技术的更多相关文章

  1. Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册

    豆豆手册 □ BSD手册 □ Linux手册 □ 数据库手册 □ 编程开发手册 □ WEB开发手册 □ 软件应用手册 □ 网络技术手册 □ GNU手册 在线手册 首 页 BSD手册   ·FreeBS ...

  2. IO流--字符流缓冲技术

    缓冲技术是为了提高数据的读写效率而提出的. (1)字符流的缓冲读 在字符流的缓冲技术中提供了一个newLine()方法,这个方法是跨平台的 在读数据的时候采用读完直接刷新的方式可以保证断电后数据不会丢 ...

  3. 传统IO拷贝与零拷贝技术比较

    1. 传统IO 由上面图知,传统io需要经过4次copy, 3次状态切换 第一次: 从硬盘 经过 DMA 拷贝 到 kernel buffer (内核buferr) 第二次: 从kernel buff ...

  4. 操作系统-I/O(5)I/O软件的层次结构

    IO软件的设计目标: (1)高效率:改善设备效率,尤其是磁盘I/O操作的效率 (2)通用性:用统一的标准来管理所有设备 IO软件的设计思路: 把软件组织成层次结构,低层软件用来屏蔽硬件细节,高层软件向 ...

  5. FD.io 社区中国行暨未来网络技术沙龙 南京站 参会小结

    FD.io 社区中国行暨未来网络技术沙龙 南京站,2018 年 3 月 17 日. 开场致辞 Ray 介绍了一些有的没的 ⁃ (Future Event)DPDK summit, FD.io summ ...

  6. CPU纯软件全虚拟化技术

    我们在前面的文章中提到了虚拟化技术的大致分类情况,即分为全虚拟化.半虚拟化和硬件辅助虚拟化3大类.而我们虚拟化技术最主要的虚拟主体就是我们的硬件CPU.内存和IO,那么我们的CPU在全虚拟化模式下如何 ...

  7. EOS.IO技术学习

    如今很火的项目EOS的学习,以下主要的内容是基于白皮书 参考: http://chainx.org/paper/index/index/id/20.html EOS.IO软件引入了一种新的块链架构,旨 ...

  8. 虚拟化技术原理(CPU、内存、IO)

    本文来自:http://www.ywnds.com/?p=5856 虚拟化 云计算现在已经非常成熟了,而虚拟化是构建云计算基础架构不可或缺的关键技术之一. 云计算的云端系统, 其实质上就是一个大型的分 ...

  9. 10、技术经理要阅读的书籍 - IT软件人员书籍系列文章

    技术经理是项目组中的重要角色.他需要负责软件项目中的重要部分,如果项目组没有架构师的话,技术经理还需要担负起架构师的职责.同时,技术经理要对项目中的所有重要的技术问题进行处理. 但是,在项目组内部,软 ...

随机推荐

  1. Java IO源码分析(二)——ByteArrayInputStream 和 ByteArrayOutputStream

    简介 ByteArrayInputStream 是字节数组输入流,它继承于InputStream. 它的内部数据存储结构就是字节数组. ByteArrayOutputStream是字节数组输出流,它继 ...

  2. viewer使用

    一款pc端,点击放大,缩放,翻转等功能的插件.

  3. 使用pip安装pymysql出错;Could not find a version that satisfies the requirement cryptography (from pymysql) (from versions: ) No matching distribution found for cryptography (from pymysql)

    今天使用pip安装pymysql时出现如下错误: Could not find a version that satisfies the requirement cryptography (from ...

  4. JSON类型解析

    JSON类型解析 一.序列化和反序列化 程序中的对象,如python中的字典.列表.函数.类等,都是存在内存中,不方便传递或存储,所以需要将内存中的对象转化为文本或者文件格式,来满足传输和持久化(存储 ...

  5. Jmeter(8)分布式测试

    通过Jmeter远程启动功能,把一台windows机器作为控制器,远程控制其他多个Windows或linux压力机,把压力分散到多台执行机器上,从而实现高并发,并在控制机上搜集测试结果 Jmeter分 ...

  6. EM 算法-对鸢尾花数据进行聚类

    公号:码农充电站pro 主页:https://codeshellme.github.io 之前介绍过K 均值算法,它是一种聚类算法.今天介绍EM 算法,它也是聚类算法,但比K 均值算法更加灵活强大. ...

  7. django添加检查用户名和手机号数量接口

    1.1 在user/urls.py中添加 urlpatterns = [ path('count/', views.RegCountView.as_view()), # 查询用户名手机号使用量的视图, ...

  8. Taro 3.1 beta 发布: 开放式架构新增 4 端支持

    作者:凹凸曼-JJ 自 7 月初我们正式发布了 Taro 3,至今半年时间已然略去.期间我们不断地修复着问题,同时也在构想着下一个 minor 版本. 面对小程序平台越来越多的大环境,Taro 是选择 ...

  9. 重写Laravel异常处理类

    现在开发前后端分离变得越来越流行了,后端只提供接口返回json格式的数据,即使是错误信息也要以json格式来返回,然而目前无论是Laravel框架还是ThinkPHP框架,都只提供了返回json数据的 ...

  10. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...