IO层次结构¶
用户层软件¶
假脱机技术SPOOLing¶

- 外围计算机(外围机): 它是一台真实的辅助电脑,性能较弱且廉价。它的唯一工作是代替昂贵的主机(Mainframe),专门去和慢速的 I/O 设备(如纸带阅读机、打印机)打交道,把数据预先搬运到快速的磁带上。
外围设备(易混淆陷阱): 外围机 ≠ 外围设备。外围设备指的是具体的输入/输出硬件实体(如打印机、读卡机、显示器),而外围机是控制这些设备的“另一台电脑”。
- 构成SPOOLling系统的基本条件是要有大容量、高速度的外存作为输入井和输出井,还有要SPOOLing软件。
组成¶


特点¶

- 假脱机技术因为实现了对用户的输入输出透明(图一左边),因此实现了把独占设备改造成共享设备。但是本质还是独占式。
应用程序接口¶

设备独立性软件¶
- 设备独立性(Device Independence)的核心在于:应用程序独立于具体使用的物理设备。这意味着在编写程序时,你只需要操作“逻辑设备”,而完全不需要关心底层真正的“物理设备”是什么型号或接口。
IO调度¶

- 无论程序查询方式、中断处理方法还是DMA方式最后都是讲数据放到了内存的内核缓冲区中,前两种会暂存在CPU的寄存器中。引入内核缓冲区后,每次读时可以从磁盘中多取一点,也就是提前读;进程往缓冲区写时以为写入了磁盘,也就是延迟写,这样可以减少IO的次数。
- 当进程需要用到内核缓冲区的数据的时候因为数据放在了内核缓冲区中,因此需要变态,此时在内存的用户区引入用户缓冲区就产生了用处,可以减少变态的次数。
设备的分配与回收¶

缓冲区管理¶

画甘特图,按流水线分析
设备驱动程序¶
功能¶

- 需要明确的一点是中断隐指令的确是硬件自动完成的,上图提及驱动程序及时响应有设备控制器发来的中断请求...,旨在表达设备驱动程序也有参与处理中断,比如检查设备状态(查寄存器)、 进行数据传输(视I/O控制方式而定)、 唤醒被阻塞的进程(通知上层)、启动下一个I/O请求(处理队列)等
- 硬件本身决定了它能够支持哪些底层的能力,但真正去选择并落实具体 I/O 控制方式的,正是设备驱动程序。
特点¶

中断处理程序¶

磁盘¶
磁盘格式化¶

- 辅助记忆:高级格式化设计文件系统的。
- ROM中的引导程序 -> 磁盘引导程序 -> 分区引导程序 -> 操作系统的初始化程序
- 磁盘的物理格式化 -> 对磁盘进行分区 -> 逻辑格式化 -> 操作系统的安装
调度算法¶
FCFS¶
不会产生磁头臂黏着。
扫描算法(SCAN)与 D. 循环扫描算法(C-SCAN): 这两个算法虽然规定了磁头的宏观移动方向,但在微观处理上,当磁头正处于某个磁道时,如果该磁道不断有新请求到达,由于寻道距离为 0(属于“正在扫描的当前位置”),算法会持续将这些新请求处理完才继续向前移动。因此,在极端的高并发请求下,SCAN 和 C-SCAN 也会导致磁头臂黏着。

SSTF¶

SCAN¶

考试默认为LOOK
C-SCAN¶

考试默认为C-Look
!!!注意,LOOK和CLOOK不会返回到物理边界,而是最靠近边界的请求 !!!若题目中提及使用scan或c-scan但没有给出最大和最小磁道号,默认转换为LOOK或CLOOK
补充¶
- 共享设备必须是可寻址且可随机访问的设备:
- 可寻址 (Addressable): 存储介质被划分为大小相同的块(如磁盘扇区),每一块都有唯一且独立的物理地址。这使得操作系统能够精确锁定并隔离空间,明确“哪里是进程 A 的数据,哪里是进程 B 的数据”。
- 可随机访问 (Randomly Accessible): 设备的读写机制能够在任意不同地址之间快速跳转,而不需要严格按照物理排列顺序去遍历途径的所有数据。
- 温彻斯特硬盘即机械硬盘。