返回

操作系统笔记05-设备管理

IO设备的基本概念和分类🌟

  • 块设备:如磁盘等——数据传输的基本单位是“块”,传输速率较高,可寻址,即对它可随机地读/写任一块
  • 字符设备:鼠标、键盘等——数据传输的基本单位是字符。传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式

IO控制器

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

IO控制方式🌟

  • IO控制方式:用什么样的方式来控制IO设备的数据读/写

程序直接控制方式

中断驱动方式

DMA方式

通道控制方式

IO软件层次

  • 中间三层属于操作系统的内核部分,即"IO系统",或称"IO核心子系统"
  • 每一层会利用其下层提供的服务,实现某些功能,并屏蔽实现的具体细节,向高层提供服务(“封装思想”)
  • 越上面的层次越接近用户
  • 越下面的层次越接近硬件

IO核心子系统

  • 此I/O核心子系统要实现的功能其实就是中间三层要实现的功能

IO调度

  • I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求
    • 如:磁盘调度(先来先服务算法、最短寻道优先算法、SCAN算法、C-SCAN算法、LOOK算法、C-LOOK算法)。当多个磁盘I/O请求到来时,用某种调度算法确定满足I/O请求的顺序
    • 同理,打印机等设备也可以用先来先服务算法、优先级算法、短作业优先等算法来确定I/O调度顺序。

设备保护

  • 操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)
  • 在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能。(参考“文件保护”小节)

假脱机技术(SPOOLing技术)🌟

注:假脱机技术(SPOOLing 技术)需要请求“磁盘设备”的设备独立性软件的服务,因此一般来说假脱机技术是在用户层软件实现的。但是408大纲又将假脱机技术归为“I/O核心子系统”的功能,因此考试时还是以大纲为准

  • “输入进程”模拟脱机输入时的外围控制机
  • “输出进程”模拟脱机输出时的外围控制机
  • 在输入进程的控制下,“输入缓冲区”用于暂存从输入设备输入的数据,之后再转存到输入井中
  • 在输出进程的控制下,“输出缓冲区”用于暂存从输出井送来的数据,之后再传送到输出设备上
  • 注意,输入缓冲区和输出缓冲区是在内存中的缓冲区
  • 当打印机空闲时,输出进程会从文件队列的队头取出一张打印请求表,并根据表中的要求将要打印的数据从输出井传送到输出缓冲区,再输出到打印机进行打印。用这种方式可依次处理完全部的打印任务
  • SPOOLing 技术可以把一台物理设备虚拟成逻辑上的多台设备,可将独占式设备改造成共享设备

设备分配与回收

  • 设备的固有属性可分为三种:独占设备、共享设备、虚拟设备
    • 独占设备——一个时段只能分配给一个进程(如打印机)
    • 共享设备——可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用
    • 虚拟设备——采用 SPOOLing 技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用 SPOOLing 技术实现的共享打印机)
  • 从进程运行的安全性上考虑,设备分配有两种方式:
    • 安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)
      • 一个时段内每个进程只能使用一个设备
      • 优点:破坏了“请求和保持”条件,不会死锁
      • 缺点:对于一个进程来说,CPU和I/O设备只能串行工作
    • 不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞
      • 一个进程可以同时使用多个设备
      • 优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
      • 缺点:有可能发生死锁(死锁避免、死锁的检测和解除)

缓冲区管理(缓冲与高速缓存)🌟

  • T>C:块设备输入内存的时间比CPU处理数据的时间慢

    • 处理一块数据的平均用时= T+M
  • T<C:块设备输入内存的时间比CPU处理数据的时间快

    • 处理一块数据的平均用时= C+M
  • 综上,采用单缓冲策略,处理一块数据平均耗时 Max(C, T)+M

  • 假设T>C+M,处理一块数据的平均用时 = T
  • 假设T<C+M,处理一个数据块平均耗时 = C+M
  • 综上,采用双缓冲策略,处理一个数据块的平均耗时为 Max (T, C+M)

磁盘的结构

  • 需要把“磁头”移动到想要读/写的扇区所在的磁道。 磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作

磁盘调度算法🌟

先来先服务(FCFS)

最短寻找时间优先(SSTF)

扫描算法(SCAN)

  • 若题目中无特别说明, 则SCAN 就是 LOOK

循环扫描算法(C-SCAN)

  • 若题目中无特别说明,C-SCAN 就是C-LOOK

小结

减少延迟时间的方法

  • 磁头读入一个扇区数据后需要一小段时间处理, 如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,可能需要很长的“延迟时间”

交替编号

  • 采用交替编号的策略,让逻辑上相邻的扇区物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小

错位命名

  • 采用错位命名法, 读取完磁盘块 (000, 00, 111)之后, 还有一段时间处理, 当(000, 01, 000) 第一次划过1号盘面的磁头下方时,就可以直接读取数据。从而减少了延迟时间

磁盘地址结构的设计

  • 第一圈读到0、1、2、3扇区的数据(物理上有一定的间隔)
  • 第二圈读到4、5、6、7扇区的数据(物理上有一定的间隔)
  • 读取地址连续的磁盘块时,采用(柱面号, 盘面号,扇区号)的地址结构可以减少磁头移动消耗的时间

小结

磁盘的管理

磁盘初始化

引导块

坏块的管理

小结

最后更新于 Jun 03, 2022 16:52 UTC
Built with Hugo
Theme Stack designed by Jimmy