操作系统第五章:磁盘与设备管理
学完本章需要回答的几个问题?
- 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)是在内核中“原地打转”等待,还是立刻交回给用户程序。
只有缓冲区满才会阻塞吗?
写操作是“缓冲区满”导致阻塞。
读操作是“缓冲区空”导致阻塞。
是由 I/O 控制器的状态寄存器反馈的吗?
直接原因:是由**内核缓冲区(软件状态)**反馈给你的。
根本原因:硬件寄存器(硬件状态)处理太慢,导致了内核缓冲区积压(或空虚),最终才波及到你。
**非阻塞 I/O 是用户进程和内核缓冲区之间的协议,而状态寄存器是驱动程序和硬件之间的协议。**硬件状态寄存器的信息如果变成BUSY,会进入阻塞态,但不直接传导到上层,他可能马上又好了 。但可能会有滞后效应,频繁BUSY,会导致内核缓冲区挤压,从而导致上层的软件也发生了阻塞
IO核心子系统
UNIX一切皆文件,设备保护即文件保护
IO调度即磁盘调度
假脱机技术
设备的分配与回收
等待进程队列即相应阻塞队列
缓冲区管理
磁盘结构
磁盘调度算法
减少磁盘延迟时间的方法
注意:
1、移动磁头时间开销很大(为什么柱面编址在前?)
2、所有柱面、盘面都是同时旋转的
磁盘的管理
固态硬盘SSD
系统IO总线以逻辑块为单位读写数据,但是它对应的是固态硬盘的一页,一块有多个页