13180 操作系统 第七章 设备管理

553 阅读17分钟

开始13180 操作系统的学习过程,献给每一位拥有梦想的"带专人",

ps:有不正确的地方麻烦更新在评论区,我会一一修复 😅

第七章 设备管理

1. 设备管理的任务

  1. 解决输入输出设备性能与 CPU 性能不匹配的问题

    操作系统主要通过缓冲技术中断技术虚拟技术来解决这一问题

  2. 实现统一的管理,从而方便用户使用

    提供简单而易于使用的接口,这个接口对于所有设备都应该是相同的,这就是所谓的设备独立性

  3. 用户对输入输出设备的使用必须是安全的

2. 设备管理的任务

  1. 按设备的使用特性分类

    1. 输入设备
    2. 输出设备
    3. 交互式设备
    4. 存储设备
  2. 按设备的信息组织方式分类

    1. 字符设备

      键盘、终端、打印机等以字符为单位组织和处理信息的设备

    2. 块设备

      磁盘、磁带等以字符块为单位组织和处理信息的设备

  3. 按设备使用可共享性分类

    1. 独占设备

      在给定时刻只能让一个进程使用

    2. 共享设备

      同时可以让许多个程序使用

    3. 虚拟设备

      在一类设备上模拟另一类设备,被模拟的设备称为虚拟设备

3. I/O 硬件和软件

从硬件的角度看,设备由物理设备电子部件两部分组成

操作系统通过对设备控制器中的寄存器进行读写操作设备交换数据

每个设备控制器都有若干个寄存器用来与 CPU 进行通信,包括控制寄存器状态寄存器数据寄存器

为了使处理器能够访问设备控制器中的寄存器,必须为每个寄存器分配唯一的地址,该地址称为 I/O 端口地址 I/O 端口号

I/O 端口地址主要有两种编址方式:

  1. 内存映射编址

    分配给系统中所有端口的地址空间内存地址空间统一编址,处理器把设备控制器中的寄存器看作一个存储单元,对 I/O 的读写操作等同于对存储器的操作,这样的系统称为内存映射 I/O

  2. I/O 独立编址

    分配给系统中所有端口的地址空间内存地址空间是完全独立的。处理器需要使用专门的 I/O 指令对 I/O 端口进行操作

I/O 软件结构分为四层

  1. 中断处理层
  2. 设备驱动层
  3. 设备独立层
  4. 用户层

功能上看,设备独立层是 I/O 软件的主要部分

代码量上看,设备驱动层是 I/O 软件的主要部分

设计 I/O 软件的一个最关键的目标是设备独立性

4. I/O 设备的控制方式

  1. 程序直接控制方式

    用户进程直接控制处理器或内存外围设备之间进行信息传送的方式,也称为忙-等方式,轮询方式或循环测试方式;这种方式的控制者用户进程

  2. 中断控制方式

    中断是一种在发生了一个异常事件时,调用相应处理程序进行服务的过程,数据传送是由 CPU 控制完成的

  3. DMA 方式(直接内存访问)

    它时一种完全由硬件执行 I/O 数据交换的工作方式

    DMA 控制器从 CPU 完全接管对总线的控制,数据交换不经过 CPU,而是直接在内存外部设备之间进行

  4. 通道控制方式

    是一个具备特殊功能的处理器,它有自己的指令和程序,可以实现对外部设备的统一管理以及外部设备与内存之间的数据传送

    通道是一种独立于中央处理器,专门负责数据 I/O 传输工作的处理单元

    引入通道的目的是为了进一步减少数据输入输出对整个系统运行效率的影响

    DMA 控制方式相比,通道的控制方式

    1. 增加了 CPU 与通道操作的并行能力
    2. 增加了通道之间以及统一通道内各设备之间的并行操作能力
    3. 为用户提供了灵活增加外设的可能性

    按照信息交换方式的不同,一个系统中可以设立三种类型的通道

    1. 选择通道

      一种高速通道,在物理上它可以连接多个设备,但这些设备不能同时工作,在某一段时间内通道只能选择一个设备进行工作。选择通道主要用于连接高速外围设备,如磁盘、磁带等,信息以成组方式高速传输

      优点:以数据块为单位进行传输,传输率高

      缺点:通道利用率低

    2. 数组多路通道

      当某个设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序

      优点:以数据块为单位进行传输,传输率高且具有多路并行操作的能力,通道利用率高

      缺点:控制复杂

    3. 字节多路通道

      一种简单的共享通道,在分时的基础上为多台低速和中速设备服务,数据传送以字节为单位交替进行

      优点:具有多路并行操作能力

      缺点:以字符为单位传输,传输效率低

5. 设备的分配

  1. 独占设备的分配

    设备的绝对号系统为每一台设备确定一个编号

    设备的相对号:由用户在程序中定义的设备编号

  2. 共享设备的分配

    共享设备可被多个进程所共享,但在每个 I/O 传输的单位时间内只由一个进程所占有

    通常,共享型设备的 I/O 请求来自文件系统虚拟存储系统输入输出管理程序

    共享设备使用的具体方法如下

    1. 申请设备:如设备被占用,进入设备等待队列,否则分配设备
    2. 启动设备:I/O 传输
    3. 释放设备:当设备结束,发出中断信号时,系统唤醒一个等待设备的进程

    能将独占设备转变为共享设备的技术称为SPOOLing 系统,也称为虚拟设备技术

6. 信息传输时间 计算题

启动磁盘执行输入输出时,执行一次输入输出所花的时间包括如下:

  1. 寻找时间:磁头在移动臂带动下移动到指定柱面所花的时间
  2. 延迟时间:指定扇区旋转到磁头下所需的时间
  3. 传送时间:由磁头进行读写完成信息传送的时间

传送信息所花的时间,是在硬件设计就固定的

寻找时间延迟时间是与信息在磁盘上的位置有关

用t 表示每个磁道(柱面)上的磁头数

用 s 表示每个磁道(柱面)上的扇区数

  1. 每个磁道(柱面)磁盘块数:s×ts \times t,为了计算第 p 块在磁盘上位置,可以令:

    磁盘块d=s×t磁盘块d = s \times t

    m=pdm = p \mid d 整除

    n=p%dn = p \% d

    于是,第 p 块在磁盘上位置为

    柱面号 = m

    磁头号 = nsn \mid s

    扇区号 = n%sn\%s

  2. 则第 i 个磁道,第 j 个磁头,第 k 个扇区所对应的块 b

    b=k+s×(j+i×t)b = k + s \times (j + i \times t)

    助记: 快手几 T(B) 符号:+ x + x

7. 移臂调度及调度算法 计算题

在磁盘读写请求来到时,应采用调度策略降低访问者的总访问时间。磁盘驱动调度由移臂调度旋转调度两部分组成

  1. 先来先服务调度算法

image.png

按顺序依次处理

:如果现在读写磁头正在 50 号柱面上执行输出操作,而等待访问者依次要访问的柱面为130、199、32、159、15、148、61、99

求:磁头移动的顺序和总磁道数

移动顺序(50)(130)(199)(32)(159)(15)(148)(61)(99)(50)\rightarrow(130)\rightarrow(199)\rightarrow(32)\rightarrow(159)\rightarrow(15)\rightarrow(148)\rightarrow(61)\rightarrow(99)

总磁道数(31050)+(199130)+(19932)+(15932)+(15915)+(14815)+(14861)+(9961)=845(310-50)+(199-130)+(199-32)+(159-32)+(159-15)+(148-15)+(148-61)+(99-61) = 845

  1. 最短寻找时间优先调度算法

image.png

总是从等待访问者中挑选寻找时间最短的那个请求先执行,而不管访问者来的先后次序

:如果现在读写磁头正在 50 号柱面上执行输出操作,而等待访问者以此要访问的柱面为130、199、32、159、15、148、61、99

求:磁头移动的顺序和总磁道数

移动顺序(50)(61)(32)(15)(99)(130)(148)(159)(199)(50)\rightarrow(61)\rightarrow(32)\rightarrow(15)\rightarrow(99)\rightarrow(130)\rightarrow(148)\rightarrow(159)\rightarrow(199)

总磁道数(6150)+(6132)+(3215)+(9915)+(13099)+(148130)+(159148)+(199159)=241(61-50)+(61-32)+(32-15)+(99-15)+(130-99)+(148-130)+(159-148)+(199-159)=241

  1. 电梯调度算法

    按一个固定方向(如从外向里或从里向外)处理,处理到最后,然后反向处理

    :如果现在读写磁头正在 50 号柱面上执行输出操作,而等待访问者以此要访问的柱面为130、199、32、159、15、148、61、99

    求:磁头移动的顺序和总磁道数

image.png

移动顺序(50)(32)(15)(61)(99)(130)(148)(159)(199)(50)\rightarrow(32)\rightarrow(15)\rightarrow(61)\rightarrow(99)\rightarrow(130)\rightarrow(148)\rightarrow(159)\rightarrow(199)

总磁道数(5032)+(3215)+(6115)+(9961)+(13099)+(148130)+(159148)+(199159)=219(50-32)+(32-15)+(61-15)+(99-61)+(130-99)+(148-130)+(159-148)+(199-159)=219

从 50-15 是由里向外,到达 15 后已无向外访问等待者,所以改为由外向里

image.png

移动顺序(50)(61)(99)(130)(148)(159)(199)(32)(15)(50)\rightarrow(61)\rightarrow(99)\rightarrow(130)\rightarrow(148)\rightarrow(159)\rightarrow(199)\rightarrow(32)\rightarrow(15)

总磁道数(6150)+(9961)+(13099)+(148130)+(159148)+(199159)+(19932)+(3215)=333(61-50)+(99-61)+(130-99)+(148-130)+(159-148)+(199-159)+(199-32)+(32-15)=333

从 50-199 是由外向里,到达 199 后已无向里访问等待者,所以改为由里向外

  1. 单向扫描调度算法

    总是从 0 号柱面开始向柱面号增大的方向处理,处理到最后,然后回到 0 号继续处理,不处理返回途中的请求,即回程不读写

image.png

:如果现在读写磁头正在 50 号柱面上执行输出操作,而等待访问者以此要访问的柱面为130、199、32、159、15、148、61、99

移动顺序(50)(61)(99)(130)(148)(159)(199)(0)(15)(32)(50)\rightarrow(61)\rightarrow(99)\rightarrow(130)\rightarrow(148)\rightarrow(159)\rightarrow(199)\rightarrow(0)\rightarrow(15)\rightarrow(32)

总磁道数(6150)+(9961)+(13099)+(148130)+(159148)+(199159)+(1990)+(150)+(3215)=380(61-50)+(99-61)+(130-99)+(148-130)+(159-148)+(199-159)+(199-0)+(15-0)+(32-15)=380

8. 旋转调度优化 计算题

image.png

程序对每个读出的记录花费10ms的时间进行运算处理,接着再读出下一个记录进行类似的处理,假定磁盘转速为 40ms/周,处理这 8 个记录所要花的时间为多少?

  1. 磁盘转速为 40ms/周,有 8 个记录,所以读一个记录就要 5ms
  2. 由题可知一个记录进行运算处理要 10ms
  3. 第一个记录读了并且进行运算处理后,需要 15ms,这时磁盘并没有停下来,此时第四个记录的位置已经转到读写磁头下面
  4. 为了顺序处理第二个记录,必须等待磁盘把第二个记录旋转到读写磁头下面,经过 5、6、7、8、1、2,6 个记录以后才能到 2,即,需要6×5=30ms6 \times 5 = 30ms的延迟时间
  5. 找 2 需要 30ms,那么找 3、4、5、6、7、8 这六个记录也需要 30ms 的延迟时间(第一个记录没有延迟时间)
  6. 8 个记录的(读+运算时间)+ 7 个记录的延迟时间 8×(5+10)+7×30ms=330ms8\times (5+10) + 7\times 30ms = 330ms

image.png

如果把上述 8 个逻辑记录在磁道上的位置重新进行优化安排,使得当读出一个记录并对齐处理完毕之后,读写磁头刚好处于需要读出的下一个记录位置上,于是可立即读出该记录,这样就不必花费那些延迟时间。

8×(5+10)=120ms8\times (5 + 10) = 120ms

9. 缓冲技术

  1. 为了匹配 I/O 设备与处理器之间的处理速度
  2. 减少外部中断的次数和 CPU 进行中断处理花费的时间
  3. 解决 DMA 或通道方式中可能出现的瓶颈问题

通常都需要在设备管理中引入用来暂存数据的缓冲技术

根据 I/O 控制方式的不同,实现缓冲区的做法有两种

  1. 采用专用的硬件设置数据缓冲区,这种方法常常应用在外部设备的 I/O 控制器中,可以理解为硬件缓冲
  2. 内存划出一定容量的专用数据缓冲区,以便存储输入/输出的数据,这种设置在内存的缓冲区又称为软件缓冲

缓冲的种类

  1. 单缓冲是在 I/O 设备处理器之间设置一个缓冲区
  2. 双缓冲区解决两台 I/O 设备或者打印机和终端之间的并行操作问题
  3. 多缓冲是指,一种具有多个缓冲区,其中一部分缓冲区专门用于输入,另一部分缓冲区专门用于输出的缓冲结构
  4. 缓冲池是把多个缓冲区连接起来统一管理,在缓冲池中的每个缓冲区既可以用于输入又可以用于输出的一种缓冲结构

缓冲池管理

缓冲区是一种临界资源,所以在使用缓冲区时都有一个申请,释放和互斥的问题需要考虑

10. 虚拟设备技术

虚拟设备技术,又称为 SPOOLing 技术,是多道程序设计系统处理独占 I/O 设备的一种方法,它可以提高设备利用率缩短单个程序的响应时间

SPOOLing 技术之所以被称为虚拟设备技术,是因为它可以使进程在所需的外部设备不存在或被占用的情况下使用该设备

SPOOLing 系统主要包括输入程序模块输出程序模块作业调度程序三部分

练习

  1. 以下关于 DMA 控制方式的陈述中,正确的是

    1. DMA 是一种软件和硬件共同来执行 I/O 数据交换的工作方式
    2. 数据的交换需要经过 CPU 来实现内存和外部设备之间的传输
    3. 系统总线由 DMA 控制器和 CPU 共同控制
    4. 可以实现 CPU 和外部设备并行工作
  2. 通道是一个特殊功能的处理器,与 DMA 方式相比,通道 I/O 控制方式的优点不包括

    1. 增加了处理器与通道操作的并行能力
    2. 增加了通道之间及同一通道内各设备间的并行操作能力
    3. 提供了灵活增加外设的可能性
    4. 减少了处理器开销
  3. 独立于中央处理器,专门负责数据 I/O 传输工作的处理单元是

    1. 通道
    2. 缓冲区
    3. DMA 控制器
    4. I/O 设备控制器
  4. 以下属于共享设备的是

    1. 打印机
    2. 扫描仪
    3. 磁盘
    4. 磁带驱动器
  5. 处理器处理数据的速度与设备传输数据的速度不匹配时,可以用于缓解两者之间速度矛盾的技术是

    1. 通道技术
    2. DMA 技术
    3. 缓冲技术
    4. I/O 控制技术
  6. 以下设备中,属于字符设备的是

    1. 磁带机
    2. 打印机
    3. 磁盘
    4. 光盘
  7. I/O 设备的四种控制方式中,需要有一个特殊功能的处理器进行支持的是

    1. 程序控制方式
    2. 中断控制方式
    3. DMA 控制方式
    4. 通道控制方式
  8. 为了对计算机系统中配置的各种不同类型的外部设备进行管理,系统为每一台设备确定一个编号,以便区分和识别,这个编号称为设备的

    1. 绝对号
    2. 相对号
    3. 设备号
    4. 类型号
  9. I/O 设备管理中,根据 I/O 控制方式的不同,实现缓冲区的方法有两种:一是采用专用的硬件设置数据缓冲区,而是采用软件缓冲。其中,软件缓冲是在某种设备中划出一定容量的专用数据缓冲区,这种设备是

    1. 外存
    2. 内存
    3. 寄存器
    4. 磁盘
  10. 一下技术中,不能用于实现两台 I/O 设备之间的并行操作的是

    1. 单缓冲
    2. 双缓冲
    3. 多缓冲
    4. 缓冲池
  11. SPOOLing 系统主要由三部分组成,即输入程序模块,输出程序模块和

    1. 中断处理程序
    2. 作业调度程序
    3. 数据传送程序
    4. 缓冲处理程序
  12. 一下属于独占设备且不适合通过 SPOOLing 技术改造为共享设备的是

    1. 摄像机
    2. 打印机
    3. 磁盘
    4. 内存
  13. 计算机系统中,存在着 I/O 设备性能同 CPU 性能不匹配的矛盾,操作系统主要通过缓冲技术、虚拟技术和中断技术解决这一问题

  14. 操作系统不直接与设备交互,而是通过对设备控制器中的寄存器进行读写操作来与设备交换数据

  15. 为了匹配 I/O 设备与 CPU 的处理速度,通常在设备管理中引入缓冲技术来暂存数据

  16. 根据系统设置的缓冲区个数,可把缓冲技术分为单缓冲、双缓冲、多缓冲以及缓冲池

  17. 某磁盘有多个盘片,每个盘片有 100 个磁道,每个磁道上有8个磁头,每个磁道被分成8个扇区。现有有一个文件,包含 5400 个逻辑记录,其逻辑记录大小与扇区大小一致。如果将该文件以顺序结构的形式存放在磁盘上,磁道,磁头,扇区,逻辑记录的编号均从 0 开始,文件从 0 磁道、0 磁头、0 扇区开始存放。问题:

    1. 文件中编号为 2690 的逻辑记录所存放位置的磁道磁头扇区编号分别是多少?

      由题意可知:t = 8, s = 8,p = 2690,

      每个磁道上的磁盘块数为 d=s×t=8×8=64d = s \times t = 8 \times 8 = 64

      磁道号 = 柱面号 = m=[pd]=269064=42 m = [p \mid d] = 2690 \mid 64 = 42

      磁头号 =

      n=p%d=2690%64=2n = p\%d = 2690 \% 64= 2

      [ns]=[28]=28=0[n \mid s] = [2 \mid 8] = \left\lfloor \frac{2}{8} \right\rfloor = 0

      28=0.25 \frac{2}{8} = 0.25 ,然后用 取整 运算,即 向下取整(floor),得到 0,表示它位于 第 0 磁头

      扇区号= n%s=2%8=2n \% s = 2 \% 8 = 2

    2. 第 48 号磁道的第 6 个磁头的第 6 个扇区中存放的是该文件编号为多少的逻辑记录

      由题意可知 k = 6 扇区,s = 8,j = 6 第几个磁头,i = 48 磁道号,t = 8

      逻辑记录编号为:b=k+s×(j+i×t)=6+8×(6+48×8)=3126b = k + s \times (j + i \times t) = 6 + 8 \times (6 + 48 \times 8) = 3126

  18. 假设磁盘有 1000 个磁道,编号从 0 到 999.当前磁头完成了 364 号磁道的请求后,处于 362 号磁道上,后续磁盘请求按照到达的次序分别处于 140、891、709、492、120、393 号磁道上。请分别给出按先来先服务调度算法和电梯调度算法进行磁盘调度时磁头移动的顺序和移动总量(总磁道数)

    1. 先来先服务调度算法

      移动顺序(362)(140)(891)(709)(492)(120)(393)(362)\rightarrow(140)\rightarrow(891)\rightarrow(709)\rightarrow(492)\rightarrow(120)\rightarrow(393)

      总磁道数(362140)+(891140)+(891709)+(709492)+(492120)+(393120)=2017(362-140)+(891-140)+(891-709)+(709-492)+(492-120)+(393-120)=2017

    2. 电梯调度算法

      移动顺序(362)(140)(120)(393)(492)(709)(891)(362)\rightarrow(140)\rightarrow(120)\rightarrow(393)\rightarrow(492)\rightarrow(709)\rightarrow(891)

      总磁道数(362140)+(140120)+(393120)+(492=393)+(709492)+(891709)=1013(362-140)+(140-120)+(393-120)+(492-=393)+(709-492)+(891-709)=1013

捏捏捏捏捏捏捏捏捏捏捏

笔者观看的课程是 B 站博主小飞学长Pro 课程,前四章是免费的如果需要看后面的建议大家去购买正版课程 😊😊

🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉