概述
在计算机系统,无论软硬,经常用到的结构是层次结构。
同样,IO也不例外。将IO需要完成的功能组织成一系列的层次结构,每一层利用下一层提供的服务。每层完成的是一个子功能,并向上层提供服务接口。这些特征基本上都是层次系统通用的特性,不必多说。
IO系统分类的层次通常是5层。列举如下:
- 用户层IO软件
- 设备独立性软件
- 设备驱动程序
- 中断处理程序
- 硬件
首尾两个不用解释都能明白,最抽象的当然是用户看到的那些IO软件,最具体的是底层提供功能的硬件,那么中间的三层作何解释,功能是什么,就需要仔细思考记忆了。
- 设备独立性软件: 用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护,以及设备分配与释放等,同时也为设备管理和数据传送提供必要的存储空间。
上面是十分拗口的定义,也极易出现理解偏差。而实际上是很具体的东西。所谓设备独立性,就是能够让上层,即用户层的操作能够统一定义,不用再管插入的是什么设备,什么型号,个体特征等等,只需要能够将设备归类,对一类设备进行操作。在用户层,只需要知道我调用一个库函数等就能够使用这个设备了。设备独立性软件就是弥合各种设备的差别,从而为用户层提供一个统一漂亮的接口。另一方面,这一层要面向设备,为了能够满足向上提供服务的要求,需要的准备材料有设备命令,设备保护措施,对设备进行分配与释放的方法等,而引入存储作为缓存自然也是必要的举措。
再细化一点说来,在这一层,引入了逻辑设备和物理设备两种概念。用户层看的是设备的逻辑名字,就像文件系统中看的也是逻辑文件。系统执行时,要操作的是物理设备,二者必然有个映射关系。
设备驱动程序:硬件相关,具体实现OS对设备发出的操作指令,驱动IO设备工作。每一类设备有一个设备驱动程序。比如我们插入U盘时,系统会弹出安装驱动,安装完成后,这个驱动程序不会消失,而是运行在后台进程。无论你用的是正版金士顿还是盗版,用的是东芝还是闪迪,驱动程序都是一类,系统中驱动U盘的都是相同的驱动程序。
中断服务程序:具体任务不必多说,只谈为什么放在距离硬件最近的地方,驱动表示不服。
中断处理主要进行的是上下文任务的切换,测试中断信号,读取设备状态,修改进程状态。驱动程序是以进程的形式工作的,敢不经过中断直接进行进程的响应?不行的。因此,中断服务程序才是软件层里最diao的。
硬件:这里的硬件也需要单独说明,是因为这里是指代IO设备,有不同之处。分为两个部分:机械部件和电子部件。
硬件部分的特别说明:
- 机械部件
- 电子部件
机械部件:设备本身。
电子部件:设备控制器,也称适配器。通常是印刷电路板,通过插入主板进行工作。其中包含有寄存器,通过寄存器与CPU通信。这些寄存器要是收编到内存地址空间,就是内存映像IO,统一编址。也有的是IO专用地址,称之为独立编址。
不知道有没有发现,设备控制器是一种抽象的概念,具体的实施中,有:
- 程序直接控制
- 中断驱动方式
- DMA
- 通道
带着对这四种方式的运作过程再来理解设备控制器就要简单多了。
最后
以上就是发嗲山水为你收集整理的IO子系统的层次结构的全部内容,希望文章能够帮你解决IO子系统的层次结构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复