操作系统学习笔记 第六章:设备管理(王道考研)

Posted Baret-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统学习笔记 第六章:设备管理(王道考研)相关的知识,希望对你有一定的参考价值。

本文章基于网课: 2019 王道考研 操作系统
考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com)


需要相关电子书的可以关注我的公众号BaretH后台回复操作系统
image-20210616202753852
第一章:操作系统概述
第二章:进程管理
第三章:处理机调度与死锁
第四章:存储器管理
第五章:文件管理
后续章节陆续推出…



6.1 I/O设备概念及分类

image-20210607153944052

“I/O”就是“输入/输出”(Input/ Output),I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。

image-20210606183337167

计算机系统中的IO设备按使用特性可分为以下类型:

  1. 人机交互类外部设备。用于与计算机用户之间交互的设备,如打印机、显示器、鼠标、键盘等。这类设备的数据交换速度相对较慢,通常是以字节为单位进行数据交换的
  2. 存储设备。用于存储程序和数据的设备,如磁盘、磁带、光盘等。这类设备用于数据交换,速度较快,通常以多字节组成的块为单位进行数据交换
  3. 网络通信设备。用于与远程设备通信的设备,如各种网络接口、调制解调器等。其速度介于前两类设备之间。网络通信设备在使用和管理上与前两类设备也有很大不同

image-20210606183646969

传输速率分类:

  1. 低速设备。传输速率仅为每秒几字节到数百字节的一类设备,如键盘、鼠标等
  2. 中速设备。传输速率为每秒数千字节至数万字节的一类设备,如行式打印机、激光打印机等
  3. 高速设备。传输速率在数百千字节至千兆字节的一类设备,如磁带机、磁盘机、光盘机等

image-20210606183547627

信息交换的单位分类

  1. 块设备。由于信息的存取总是以数据块为单位的,所以存储信息的设备称为块设备。它属于有结构设备,如磁盘等。磁盘设备的基本特征是传输速率较高、可寻址,即对它可随机地读/写任一块
  2. 字符设备。用于数据输入输出的设备为字符设备,因为其传输的基本单位是字符。它属于无结构类型,如交互式终端机、打印机等。它们的基本特征是传输速率低、不可寻址,并且在输入输出时常采用中断驱动方式

image-20210606183620368



6.2 I/O控制方式

设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备和内存之间的数据传送控制方式方式有4种:

image-20210607162641038

image-20210611195540486

6.2.1 程序直接控制方式

image-20210606202646172

image-20210606203054361

6.2.2 中断驱动方式

image-20210606203156862

image-20210606203320491

6.2.3 DMA方式

image-20210606203541881

image-20210607163903066

DMA控制器的组成

image-20210607163720848

为了实现在主机与控制器之间实现成块数据的直接交换,必须设置如下4类寄存器:

  1. 命令/状态寄存器(CR)。用于接收从CPU发来的I/O命令或有关控制信息,或设备的状态
  2. 内存地址寄存器(MAR)。在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址
  3. 数据寄存器(DR)。用于暂存从设备到内存或从内存到设备的数据
  4. 数据计数器(DC)。存放本次要传送的字(节)数

6.2.4 通道控制方式

image-20210606203919488

image-20210606204040020



6.3 I/O软件层次结构

为了使复杂的I/O软件具有清晰的结构、良好的可移植性和适应性,在I/O软件中普遍采用了层次式结构,将系统输入输出功能组织成一系列的层次,每层都利用其下层提供的服务,完成输入输出功能中的某些子功能,并屏蔽这些功能实现的细节,向高层提供服务。在层次式结构的软件中,只要层次间的接口不变,对某一层次中的软件的修改都不会引起其下层或高层代码的变更,仅最低层才涉及硬件的具体特性

image-20210607163950222

6.3.1 用户层软件

用户层IO软件:实现与用户交互的接口,用户可直接调用在用户层提供的、与IO操作有关的库函数,对设备进行操作

一般而言,大部分的I/O软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数,以及完全运行于内核之外的一些程序。用户层软件必须通过一组系统调用来获取操作系统服务

image-20210606204438263

6.3.2 设备独立性软件

设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护及设备分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

设备独立性也称设备无关性,使得应用程序独立于具体使用的物理设备。为实现设备独立性而引入了逻辑设备物理设备这两个概念。在应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用。

使用逻辑设备名的好处是:①增加设备分配的灵活性;②易于实现I/O重定向,所谓I/O重定向,是指用于IO操作的设备可以更换(即重定向),而不必改变应用程序。为了实现设备独立性,必须再在驱动程序之上设置一层设备独立性软件。

image-20210607164551561

设备独立性软件的主要功能可分为以下两个方面:

  1. 执行所有设备的公有操作。包括:对设备的分配与回收、将逻辑设备名映射为物理设备名、对设备进行保护禁止用户直接访问设备、缓冲管理、差错控制、提供独立于设备的大小统一的数据缓冲区以屏蔽设备之间信息交换单位大小和传输速率的差异
  2. 向用户层(或文件层)提供统一接口。无论何种设备,它们向用户所提供的接口应是相同的。例如,对各种设备的读/写操作,在应用程序中都统一使用read/write命令等

其中,逻辑设备名与物理设备的对应是由逻辑设备表(LUT,Logical Unit Table)来实现的:

image-20210607165542318

6.3.3 设备驱动程序

设备驱动程序:与硬件直接相关,负责具体实现系统对设备发岀的操作指令,驱动I/O设备工作的驱动程序

通常,每类设备配置一个设备驱动程序,它是I/O进程与设备控制器之间的通信程序,常以进程形式存在。设备驱动程序向上层用户程序提供一组标准接口,设备具体的差别被设备驱动程序所封装,用于接收上层软件发来的抽象I/O要求,如read和write命令,转换为具体要求后,发送给设备控制器,控制IO设备工作:它也将由设备控制器发来的信号传送给上层软件,从而为I/O内核子系统隐藏设备控制器之间的差异

image-20210606205004389

6.3.4 中断处理程序

中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理处理完并恢复被中断进程的现场后,返回到被中断进程

中断处理层的主要任务有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。由于中断处理与硬件紧密相关,对用户而言,应尽量加以屏蔽,因此应放在操作系统的底层,系统的其余部分尽可能少地与之发生联系

image-20210606205126578

6.3.5 硬件

硬件设备:I/O设备通常包括一个机械部件和一个电子部件。为了达到设计的模块性和通用性,一般将其分开:电子部件称为设备控制器(或适配器),在个人计算机中,通常是块插入主板扩充槽的印制电路板;机械部件则是设备本身

image-20210607181012939

机械部件

image-20210606183752122

电子部件

image-20210607155029608

image-20210612091849857

image-20210612091947009

注意

  1. 一个I/O控制器可能会对应多个设备
  2. 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编址

image-20210606184631142

总结

image-20210607185638211



6.4 I/O核心子系统

由于I/O设备种类繁多,功能和传输速率差异巨大,因此需要多种方法来进行设备控制。这些方法共同组成了操作系统内核的I/O子系统,它将内核的其他方面从繁重的I/O设备管理中解放出来。I/O核心子系统提供的服务主要有I/O调度、缓冲与高速缓存、设备分配与回收、假脱机设备保护和差错处理等

image-20210607184707465

image-20210606205635061

6.4.1 I/O调度

I/O调度就是确定一个好的顺序来执行这些IO请求。应用程序所发布的系统调用的顺序不定总是最佳选择,所以需要I/O调度来改善系统整体性能,使进程之间公平地共享设备访问,减少I/O完成所需要的平均等待时间

操作系统开发人员通过为每个设备维护一个请求队列来实现调度。当一个应用程序执行阻塞I/O系统调用时,该请求就加到相应设备的队列上。I/O调度会重新安排队列顺序,以改善系统总体效率和应用程序的平均响应时间

I/O子系统还可使用主存或磁盘上的存储空间的技术,如缓冲、高速缓存、假脱机等来改善计算机效率

image-20210606205730089

6.4.2 设备保护

image-20210606205750268

6.4.3 假脱机技术

image-20210607185520691

脱机技术就是脱离主机的控制进行输入/输出操作

image-20210606210001869

image-20210606210120950

为了缓和CPU的高速性与I/O设备低速性之间的矛盾,引入了脱机输入输出技术。该技术利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上,或者相反;SPOOLing的意思是外部设备同时联机操作又称假脱机输入/输出操作,是操作系统中采用的一项将独占设备改造成共享设备的技术

image-20210606210400098

image-20210606210418416

image-20210606210337827

假脱机技术的运用——共享打印机

image-20210606210648685

虽然系统中只有一个台打印机,但每个进程提出打印请求时,系统都会为在输出井中为其分配一个存储区(相当于分配了一个逻辑设备),使每个用户进程都觉得自己在独占台打印机,从而实现对打印机的共享。
SPOOLing技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备

6.4.4 设备的分配与回收

image-20210607191022972

1️⃣ 设备分配时应考虑的因素

设备分配是指根据用户的IO请求分配所需的设备。分配的总原则是充分发挥设备的使用效率,尽可能地让设备忙碌,又要避免由于不合理的分配方法造成进程死锁。通常对设备分配时需要考虑3种因素

  1. 设备的固有属性

    image-20210607192226129

  2. 设备的分配算法:先来先服务、优先级高者优先、短任务优先等…

  3. 安全性

    image-20210607192246156

2️⃣ 静态分配和动态分配

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源(破坏了“请求和保持”条件,不会发生死锁)
  • 动态分配:进程运行过程中动态申请设备资源

3️⃣ 设备分配管理中的数据结构

设备分配依据的主要数据结构有设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT),各数据结构是为了实现下图的结构关系

image-20210607193133416

image-20210606212252487

image-20210606212322426

image-20210606212601324

image-20210606212708512

4️⃣ 设备分配的步骤

image-20210606212817313

image-20210606212954465

image-20210606213153869

image-20210606213227419

6.4.5 缓冲区管理

image-20210607194610988

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。

使用硬件作为缓冲区的成本较高,容量也较小,一般仅用在对速度要求非常高的场合(如存储器管理中所用的联想寄存器,由于对页表的访问频率极高,因此使用速度很快的联想寄存器来存放页表项的副本)

一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区

image-20210607194303515

1️⃣ 单缓冲

image-20210606214546871

image-20210606214813330

2️⃣ 双缓冲

image-20210606214844221

image-20210606220142074

image-20210606220159365

3️⃣ 循环缓冲区

image-20210606220251008

以上是关于操作系统学习笔记 第六章:设备管理(王道考研)的主要内容,如果未能解决你的问题,请参考以下文章

(王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)

(王道408考研数据结构)第六章图-第四节6:拓扑排序(AOV网代码排序规则)

计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS域名解析

(王道408考研数据结构)第六章图-第四节1:最小生成树之普利姆算法(思想代码演示答题规范)

(王道408考研数据结构)第六章图-第四节5:最短路径之弗洛伊德算法(思想代码演示答题规范)

(王道408考研数据结构)第六章图-第四节3:最短路径之BFS算法(思想代码演示答题规范)