操作系统第五章:磁盘与设备管理

学完本章需要回答的几个问题?

  • IO控制器主要功能、组成、两种寄存器编址方式
  • IO控制方式
  • IO软件层次结构、输入输出应用程序接口、阻塞IO/非阻塞IO
  • IO核心子系统
  • 假脱机技术
  • 设备的分配与回收
  • 缓冲区管理
  • 磁盘结构、调度算法、减少磁盘延迟方法
  • 磁盘管理、固态硬盘SSD

IO控制器

为什么要给IO控制器中的寄存器编址?
IO设备的电子部件称为IO控制器,IO控制器中有多种寄存器,这些寄存器可以通过编址让CPU统一操作设备。
CPU又有寄存器、高速缓存、乱序执行等机制,保证了它能在某种程度上高速与内存交互。

IO控制方式

由于寄存器限制,一次中断对应一个字的传输。需要注意的是,中断处理程序就是负责搬数据的,这个跟进程阻塞时保护现场本质上是不一样的。

虽然数据的传送单位是块,但其实内部寄存器传输单位依然是字。CPU只负责开始和结束,中间搬数据过程不再需要CPU介入

IO软件层次结构

用户层软件:库函数例如printf
设备独立性软件:

设备驱动程序:

驱动程序以独立进程存在
中断处理程序:

驱动程序、中断处理程序与硬件打交道

输入输出管理

绿色和紫色部分是操作系统内核空间的缓冲区,也是内存,不是寄存器

阻塞 I/O(等待结果型) 和非阻塞 I/O(状态反馈型) 的根本区别在于:当 I/O 请求无法立即满足时,控制权(CPU)是在内核中“原地打转”等待,还是立刻交回给用户程序。

  1. 只有缓冲区满才会阻塞吗?

    • 写操作是“缓冲区满”导致阻塞。

    • 读操作是“缓冲区空”导致阻塞。

  2. 是由 I/O 控制器的状态寄存器反馈的吗?

    • 直接原因:是由**内核缓冲区(软件状态)**反馈给你的。

    • 根本原因:硬件寄存器(硬件状态)处理太慢,导致了内核缓冲区积压(或空虚),最终才波及到你。

**非阻塞 I/O 是用户进程和内核缓冲区之间的协议,而状态寄存器是驱动程序和硬件之间的协议。**硬件状态寄存器的信息如果变成BUSY,会进入阻塞态,但不直接传导到上层,他可能马上又好了 。但可能会有滞后效应,频繁BUSY,会导致内核缓冲区挤压,从而导致上层的软件也发生了阻塞

IO核心子系统

UNIX一切皆文件,设备保护即文件保护
IO调度即磁盘调度

假脱机技术

设备的分配与回收

等待进程队列即相应阻塞队列

缓冲区管理

磁盘结构

磁盘调度算法

减少磁盘延迟时间的方法

注意:
1、移动磁头时间开销很大(为什么柱面编址在前?)
2、所有柱面、盘面都是同时旋转的

磁盘的管理

固态硬盘SSD

系统IO总线以逻辑块为单位读写数据,但是它对应的是固态硬盘的一页,一块有多个页


操作系统第五章:磁盘与设备管理
http://example.com/2026/01/10/操作系统第五章:磁盘与设备管理/
作者
Lingkai Shi
发布于
2026年1月10日
许可协议