跳转至

第五章

I/O管理概述

I/O设备的概念和分类

  1. 数据传输速度从快到慢:存储设备、网络通信设备、人机交互类外部设备。
  2. 块设备:如磁盘等,数据传输的基本单位是“块”;字符设备:如鼠标、键盘等,数据传输的基本单位是字符。
  3. 若按照设备的共享属性分类,还可分为:
  4. 独占设备:同一时刻只能由一个进程占用的设备。
  5. 共享设备:同一时间段内允许多个进程同时访问的设备。
  6. 虚拟设备:通过SPOOLing技术将独占设备改造为共享设备,将一个物理设备变为多个逻辑设备,从而可将设备同时分配给多个进程。

总结:image-20260311194735386

I/O控制器

  1. 电子部件就是本节介绍的I/O控制器,用以实现CPU对I/O设备的控制。

总结:image-20260311195701080

I/O控制方式

  1. 程序直接控制方式(key word:轮询检查状态寄存器)

  2. 数据并非是从数据寄存器直接到内存中,而是先存入cpu的寄存器,然后再存到内存当中。

image-20260311202343757

  1. 中断驱动方式

  2. 解决了程序直接控制方式CPU利用率低的问题,但是由于处理终端程序也需要一定的时间开销,所以终端频率太高会降低系统性能。

  3. CPU会在每个指令周期的末尾检查终端。

image-20260311203624245

  1. DMA(Direct Memory Access, 直接存储器存取)方式

  2. 砍掉了由CPU作为数据传输的中介这一功能,解放CPU,减少中断次数。

  3. 以块作为数据的传送单位,并且数据的存取主要是靠I/O设备、内存和DMA控制器,仅在传送一个或多个数据块的开始或结束时,才需要CPU干涉。
  4. DMA方式的预处理和后处理都需要CPU的介入,除了传输阶段。
  5. 实际上DMA控制器依旧是一个字一个字的进行读写。
  6. 每次读写多个块时只能是连续的多个快,且这些块读入内存后在内存中也必须是连续的。
  7. DMA控制器的组成:
    • 命令/状态寄存器(CR):暂存从CPU发来的I/O命令,或设备的状态信息。
    • 内存地址寄存器(MAR)
    • 数据寄存器(DR)
    • 数据计数器(DC)

image-20260311204747165

  1. 通道控制方式

  2. 通道控制方式解决了DMA方式无法一次读取多个离散的块的问题。

  3. 通道可以识别一系列的的通道指令。

  4. 通道是与CPU共享内存的。

image-20260311205231096

总结:image-20260311201113453

I/O软件层次结构

  1. 设备独立性软件、设备驱动程序、中断处理程序属于操作系统的内核部分,即I/O系统,或称I/O核心子系统。
  2. 设备独立性软件又称设备无关性软件,顾名思义所有与设备的硬件特性无关的功能都在这一层中实现。
  3. 设备独立性软件需要通过逻辑设备表(ULT,Logical Unit Table)来确定逻辑设备对应的物理设备,并找到对应的设备驱动程序。
    • 对于管理逻辑设备表可以有两种方式:整个系统一张LUT:所有用户的逻辑设备名不能重复,只适合单用户;每个用户各一张LUT:各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。

总结:image-20260311205632920

输入输出应用程序接口和驱动程序接口

image-20260311211804826

  1. 阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待。
  2. 非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。

总结:image-20260311211408925

节末习题笔记

  1. 共享设备需要做到可寻址和可随机访问,以保证数据的完整性和一致性。
  2. 接口用来传输信号,I/O逻辑即设备控制器,用来实现对设备的控制。
  3. DMA的负责预处理是请求I/O的进程,负责后处理的进程是中断服务例程,中断服务例程不是一个单独的进程。
  4. 系统为每台设备确定一个编号以便区分和识别设备,这个确定的编号成为设备的绝对号。
  5. 在中断I/O方式下,由中断服务程序来完成数据的输入和输出;在中断相应阶段,由硬件完成CPU模式的转换,并保存用户程序断点,中断源的识别可以采用硬件识别法。
  6. 对于不同的设备,有不同的中断处理程序。

设备独立性软件

I/O核心子系统

总结:image-20260312201639101

假脱机技术

  1. 为什么被称为脱机:脱离主机的控制进行的输入/输出操作。

总结:image-20260312201704917

设备的分配和回收

总结:image-20260312203533175

缓冲区管理

  1. 缓冲区的作用

image-20260312211702019

  1. 缓冲区的特性:当缓冲区飞空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区中冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

总结:image-20260312211118670

节后习题总结

  1. 针对设备分配,通常只采用一下两种分配算法:FCFS算法、最高优先级优先算法,对于优先级相同的I/O则按照FCFS原则排队。
  2. 单缓冲:单个任务时间 = max (T, C) + M, 双缓冲:单个任务时间 = max (T, C + M)
  3. T -> transfer, C -> count, M -> move
  4. !!!注意!!!此公式只适用于求单个任务时间,求多任务时不可用!!!因为存在启动开销,若数据量不大谨慎使用!!
  5. 缓冲区管理者重要考虑的问题是实现进程访问缓冲区的同步。在缓冲机制中,无论是单缓冲、多缓冲还是缓冲池,因为缓冲区是一种临界资源,所以在使用缓冲区时都有一个申请和释放(互斥)的问题需要考虑。
  6. 提高单机资源利用率的关键技术是多道程序设计技术,而非SPOOLing技术,因为后者只是针对I/O方面,局部优化,而前者让 CPU 和 I/O 全程并行,是整体、根本、关键的技术。SPOOLing技术主要是为了提高独占设备的利用率,但是同时因为把数据放到了磁盘里,导致速度也有所提升。
  7. SPOOLing技术系统主要包含三部分,即输入井和输出井(大容量、高速度的磁盘空间)、输入缓冲区和输出缓冲区(内存空间)以及输入进程和输出进程,这三部分由预输入程序、井管理程序和缓输出程序管理。
  8. 独占设备采用静态分配方式,而共享设备采用动态分配方式。
  9. 这里以键盘输入为例,按下键盘后,数据存到了键盘里的数据寄存器,然后键盘向CPU发送中断请求,CPU执行完当前指令后,检查到有中断请求,CPU硬件自动切换到内核态并保护现场,然后进入trap处理入口(像前台一样,根据中断的类型找到具体的中断处理程序),根据中断号进入中断处理程序,然后从键盘的数据寄存器中取走数据放到内核缓冲区中,全部存完后中断处理程序结束,系统切换回用户态,调用read()函数切换到内核态读取内核缓冲区中的数据放到用户缓冲区中。

磁盘和固态硬盘

磁盘的结构

  1. 磁盘、磁道、扇区

  2. 一个磁道又被分为多个扇区,每个扇区就是一个磁盘块。各个扇区存放的数据量相同。因此最靠近主轴的区域数据密度最大。

image-20260314202721817

  1. 磁盘的物理结构

image-20260314203339221

总结:image-20260314202202410

磁盘调度算法

  1. 一次磁盘读/写操作需要的时间

image-20260314204127122

  1. FCFS算法:
    • 优点:公平;若请求访问的磁道较为集中的话性能还可以。
    • 缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很松散,则性能很差。
  2. 最短寻找时间有限(SSTF, Shortest Seek Time First):贪心思想
    • 优点:性能较好,平均寻道时间短。
    • 缺点:可能产生饥饿现象。
  3. 扫描算法(SCAN):电梯算法
    • 优点:性能较好,平均寻道时间段,不会产生饥饿现象。
    • 缺点:会多移动;响应频率不平均(边上的更高)。
  4. LOOK调度算法:解决了SCAN的第一个缺点,一边移动一边观察所以叫LOOK
    • 优点:相较SCAN寻道时间更短了。
  5. 循环扫描算法(C-SCAN):解决SCAN的第二个缺点
    • 优点:相较SCAN,各个位置磁道的相应频率很平均。
    • 缺点:SCAN的第一个缺点;返回起始端时会返回多了,因此平均寻道时间更长了。
  6. C-LOOK调度算法:解决了C-SCAN的缺点
    • 优点:相较C-SCAN平均寻道时间更短了。

总结:image-20260314203555272

减少磁盘延迟时间的方法

  1. 磁头读取一小块内容后,需要一小段时间处理,但是盘片一直在旋转,所以如果有需要读取的连续的数据就会错过,就会让延迟时间变长。

总结:image-20260314205905715

磁盘的管理

  1. 每个扇区通常由**头部、数据区域和尾部 **组成。
  2. 头部和尾部包含了一些磁盘控制器的实用信息,其中利用磁道号、磁头号和扇区号来标记一个扇区。
  3. 每个分区是由一个或者多个柱面组成,每个分区的起始扇区和大小都记录在磁盘主引导记录的分区表中。
  4. 引导块:统称,凡是存启动代码的块都叫引导块。MBR 是引导块,但引导块不只是 MBR。
  5. 开机流程:启动电脑后CPU强制读ROM中的自举装入程序,并根据它找到并运行第一个引导块,也就是主引导记录MBR里的自举程序,读取分区表,找到活动分区(启动分区、引导分区),读活动分区的的分区引导块(操作系统引导扇区,高级格式化),加载操作系统内核,启动系统。

总结:image-20260314211051971

固态硬盘SSD

  1. SSD的优势主要体现在随机存取的速度上,而非连续存储。
  2. 静态磨损算法在没有写入数据时,SSD检测并自动进行数据分配,因此通常表现比动态磨损更优秀。

总结:image-20260314211727557

节后习题笔记

  1. 预读和滞后写是通过缓冲实现的,提高I/O效率的技术。
  2. 系统启动过程中执行顺序依次是ROM中的引导程序、磁盘引导程序、分区引导程序、操作系统的初始化程序。
  3. ROM中的引导程序(BIOS / 自举装入程序)
    • → 找磁盘引导程序
  4. 磁盘引导程序(MBR 里的自举程序)
    • → 找活动分区、找分区引导程序
  5. 分区引导程序(分区引导块 / 操作系统引导扇区)
    • →加载操作系统内核
  6. 操作系统的初始化程序
    • → 内核初始化
    • → 系统正式启动
  7. 将硬盘作为启动盘时,执行顺序是磁盘的物理格式化、对磁盘进行分区、逻辑格式化、操作系统的安装。