操作系统学习笔记 第六章:设备管理(王道考研)
Posted Baret-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统学习笔记 第六章:设备管理(王道考研)相关的知识,希望对你有一定的参考价值。
本文章基于网课: 2019 王道考研 操作系统
考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com)
需要相关电子书的可以关注我的公众号
BaretH
后台回复操作系统
第一章:操作系统概述
第二章:进程管理
第三章:处理机调度与死锁
第四章:存储器管理
第五章:文件管理
后续章节陆续推出…
六、设备管理
6.1 I/O设备概念及分类
“I/O”就是“输入/输出”(Input/ Output),I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
计算机系统中的IO设备按使用特性可分为以下类型:
- 人机交互类外部设备。用于与计算机用户之间交互的设备,如打印机、显示器、鼠标、键盘等。这类设备的数据交换速度相对较慢,通常是以字节为单位进行数据交换的
- 存储设备。用于存储程序和数据的设备,如磁盘、磁带、光盘等。这类设备用于数据交换,速度较快,通常以多字节组成的块为单位进行数据交换
- 网络通信设备。用于与远程设备通信的设备,如各种网络接口、调制解调器等。其速度介于前两类设备之间。网络通信设备在使用和管理上与前两类设备也有很大不同
按传输速率分类:
- 低速设备。传输速率仅为每秒几字节到数百字节的一类设备,如键盘、鼠标等
- 中速设备。传输速率为每秒数千字节至数万字节的一类设备,如行式打印机、激光打印机等
- 高速设备。传输速率在数百千字节至千兆字节的一类设备,如磁带机、磁盘机、光盘机等
按信息交换的单位分类
- 块设备。由于信息的存取总是以数据块为单位的,所以存储信息的设备称为块设备。它属于有结构设备,如磁盘等。磁盘设备的基本特征是传输速率较高、可寻址,即对它可随机地读/写任一块
- 字符设备。用于数据输入输出的设备为字符设备,因为其传输的基本单位是字符。它属于无结构类型,如交互式终端机、打印机等。它们的基本特征是传输速率低、不可寻址,并且在输入输出时常采用中断驱动方式
6.2 I/O控制方式
设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备和内存之间的数据传送控制方式方式有4种:
6.2.1 程序直接控制方式
6.2.2 中断驱动方式
6.2.3 DMA方式
DMA控制器的组成:
为了实现在主机与控制器之间实现成块数据的直接交换,必须设置如下4类寄存器:
- 命令/状态寄存器(CR)。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态
- 内存地址寄存器(MAR)。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址
- 数据寄存器(DR)。用于暂存从设备到内存或从内存到设备的数据
- 数据计数器(DC)。存放本次要传送的字(节)数
6.2.4 通道控制方式
6.3 I/O软件层次结构
为了使复杂的I/O软件具有清晰的结构、良好的可移植性和适应性,在I/O软件中普遍采用了层次式结构,将系统输入输出功能组织成一系列的层次,每层都利用其下层提供的服务,完成输入输出功能中的某些子功能,并屏蔽这些功能实现的细节,向高层提供服务。在层次式结构的软件中,只要层次间的接口不变,对某一层次中的软件的修改都不会引起其下层或高层代码的变更,仅最低层才涉及硬件的具体特性
6.3.1 用户层软件
用户层IO软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与IO操作有关的库函数,对设备进行操作
一般而言,大部分的I/O软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数,以及完全运行于内核之外的一些程序。用户层软件必须通过一组系统调用来获取操作系统服务
6.3.2 设备独立性软件
设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。
设备独立性也称设备无关性,使得应用程序独立于具体使用的物理设备。为实现设备独立性而引入了
逻辑设备
和物理设备
这两个概念。在应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用。使用逻辑设备名的好处是:①增加设备分配的灵活性;②易于实现I/O重定向,所谓I/O重定向,是指用于IO操作的设备可以更换(即重定向),而不必改变应用程序。为了实现设备独立性,必须再在驱动程序之上设置一层设备独立性软件。
设备独立性软件的主要功能可分为以下两个方面:
- 执行所有设备的公有操作。包括:对设备的分配与回收、将逻辑设备名映射为物理设备名、对设备进行保护禁止用户直接访问设备、缓冲管理、差错控制、提供独立于设备的大小统一的数据缓冲区以屏蔽设备之间信息交换单位大小和传输速率的差异
- 向用户层(或文件层)提供统一接口。无论何种设备,它们向用户所提供的接口应是相同的。例如,对各种设备的读/写操作,在应用程序中都统一使用read/write命令等
其中,逻辑设备名与物理设备的对应是由逻辑设备表
(LUT,Logical Unit Table)来实现的:
6.3.3 设备驱动程序
设备驱动程序:与硬件直接相关,负责具体实现系统对设备发岀的操作指令,驱动I/O设备工作的驱动程序
通常,每类设备配置一个设备驱动程序,它是I/O进程与设备控制器之间的通信程序,常以进程形式存在。设备驱动程序向上层用户程序提供一组标准接口,设备具体的差别被设备驱动程序所封装,用于接收上层软件发来的抽象I/O要求,如read和write命令,转换为具体要求后,发送给设备控制器,控制IO设备工作:它也将由设备控制器发来的信号传送给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异
6.3.4 中断处理程序
中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理处理完并恢复被中断进程的现场后,返回到被中断进程
中断处理层的主要任务有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。由于中断处理与硬件紧密相关,对用户而言,应尽量加以屏蔽,因此应放在操作系统的底层,系统的其余部分尽可能少地与之发生联系
6.3.5 硬件
硬件设备:I/O设备通常包括一个
机械部件
和一个电子部件
。为了达到设计的模块性和通用性,一般将其分开:电子部件称为设备控制器(或适配器),在个人计算机中,通常是块插入主板扩充槽的印制电路板;机械部件则是设备本身
机械部件:
电子部件:
注意:
- 一个I/O控制器可能会对应多个设备
- 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编址
总结
6.4 I/O核心子系统
由于I/O设备种类繁多,功能和传输速率差异巨大,因此需要多种方法来进行设备控制。这些方法共同组成了操作系统内核的I/O子系统,它将内核的其他方面从繁重的I/O设备管理中解放出来。I/O核心子系统提供的服务主要有I/O调度、缓冲与高速缓存、设备分配与回收、假脱机设备保护和差错处理等
6.4.1 I/O调度
I/O调度就是确定一个好的顺序来执行这些IO请求。应用程序所发布的系统调用的顺序不定总是最佳选择,所以需要I/O调度来改善系统整体性能,使进程之间公平地共享设备访问,减少I/O完成所需要的平均等待时间
操作系统开发人员通过为每个设备维护一个请求队列来实现调度。当一个应用程序执行阻塞I/O系统调用时,该请求就加到相应设备的队列上。I/O调度会重新安排队列顺序,以改善系统总体效率和应用程序的平均响应时间
I/O子系统还可使用主存或磁盘上的存储空间的技术,如缓冲、高速缓存、假脱机等来改善计算机效率
6.4.2 设备保护
6.4.3 假脱机技术
脱机技术就是脱离主机的控制进行输入/输出操作
为了缓和CPU的高速性与I/O设备低速性之间的矛盾,引入了脱机输入输出技术。该技术利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上,或者相反;
SPOOLing
的意思是外部设备同时联机操作又称假脱机输入/输出操作,是操作系统中采用的一项将独占设备改造成共享设备的技术
假脱机技术的运用——共享打印机:
虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占台打印机,从而实现对打印机的共享。
SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备。
6.4.4 设备的分配与回收
1️⃣ 设备分配时应考虑的因素
设备分配是指根据用户的IO请求分配所需的设备。分配的总原则是充分发挥设备的使用效率,尽可能地让设备忙碌,又要避免由于不合理的分配方法造成进程死锁。通常对设备分配时需要考虑3种因素
-
设备的固有属性
-
设备的分配算法:先来先服务、优先级高者优先、短任务优先等…
-
安全性
2️⃣ 静态分配和动态分配
- 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源(破坏了“请求和保持”条件,不会发生死锁)
- 动态分配:进程运行过程中动态申请设备资源
3️⃣ 设备分配管理中的数据结构
设备分配依据的主要数据结构有设备控制表(
DCT
)、控制器控制表(COCT
)、通道控制表(CHCT
)和系统设备表(SDT
),各数据结构是为了实现下图的结构关系
4️⃣ 设备分配的步骤
6.4.5 缓冲区管理
缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。
使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)
一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区
1️⃣ 单缓冲
2️⃣ 双缓冲
3️⃣ 循环缓冲区
以上是关于操作系统学习笔记 第六章:设备管理(王道考研)的主要内容,如果未能解决你的问题,请参考以下文章
(王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)
(王道408考研数据结构)第六章图-第四节6:拓扑排序(AOV网代码排序规则)
计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS域名解析
(王道408考研数据结构)第六章图-第四节1:最小生成树之普利姆算法(思想代码演示答题规范)