外围设备的管理和磁盘调度
外围设备
从CPU的角度来看,外设有几个比较重要的I/O接口(interfaces)
- 状态reg:向CPU报告设备的状态(忙碌/空闲)
- 命令reg:接收CPU命令,存储 CPU 需要执行的指令
- 数据reg:存储了 CPU 传输给设备,或设备传入到设备控制器的数据
在设备的视角上(internals)来看,自身有微处理器、内存、特定的硬件芯片。
e.g.,磁盘阵列有磁盘自身的处理器来管理。
PPT中的问题:
While (STATUS == BUSY)
; // wait until device is not busy
Write data to DATA register
Write command to COMMAND register
(starts the device and executes the command)
While (STATUS == BUSY)
; // wait until device is done with your request
代码部分是轮询的过程,属于程序查询的外设交互
I/O系统
I/O系统:I/O设备及其接口线路、控制部件、通道和管理软件的总称。
I/O操作:计算机的主存和外围设备的介质之间的信息传送操作
- 木桶效应:最慢的决定了系统性能,CPU性能过高,性能越高,差距确实越大
- I/O控制设备的复杂多样
- I/O系统和系统功能紧密联系,比如文件系统
- I/O系统是系统的重要组成部分
设备的分类
根据功能分为三大类:
- Human readable用户可读:终端、打印机、投影仪等
- Machine readable机器可读:磁盘、磁带;传感器、控制器等
- Communications通信:数字线路驱动器、调制解调器(光猫)
其他的分类:
一般输入输出型的设备,比如键盘和串口都是字符设备,往往都是字符流的形式传输
存储型设备比如磁带、磁盘、光盘等都是块设备,一般可以顺序或者随机访问。
这里需要强调一下字符设备和块设备。
- 字符设备的驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡等就是典型的字符设备。该类设备不可寻址,往往由中断驱动,速度较慢。
- 块设备上能够容纳文件系统,如:u盘,SD卡,磁盘等。该类设备可寻址,随机存取,读写速度快。
设备的差异
- 数据速率:通常意义上像键鼠就是低速设备,激光打印机是中速,而电脑的固态硬盘就是高速设备。
- 应用方面:由于不用的I/O设备支持不同的功能,所以相关的应用有很大区别。比如键鼠主要用来支持用户输入,而显示器是输出,磁盘则是存储,各司其职。(ppt中举例是磁盘和OS的存储管理挂钩,终端管理员的优先级应该更高)
- 控制复杂性:这一点好理解,比如键盘只需要考虑按键映射和字符传输就行,而磁盘需要有DMA控制器和通道来负责文件的读写和传输。
- 传输单位:字符设备一般都是字符流的形式,而存储型设备往往是块设备。
- 数据表示:主要是数据编码和传输格式上的区别
- 出错条件:不同设备出错的后果,报告方式,以及响应范围都不同
e.g., 不同的设备速度差异比较明显
这里我们可以看到:最快的是千兆以太网,然后是显示器、硬盘、百兆以太网、光盘、扫描仪、激光打印机、软盘、调制解调器(光猫)、鼠标,而最慢的是键盘。
e.g., 数据表示
不同设备采用不同的数据编码,如图所示异步串行通信(uart)传输格式,以下是一些常见设备的数据表示方式。
- 存储设备:例如硬盘和固态硬盘可能使用不同的编码技术来优化存储密度和读写速度,如NRZ(非归零编码)、RLL(跑长限制编码)等。
- 网络设备:例如调制解调器或网络卡可能使用QAM(正交幅度调制)、PSK(相位偏移键控)等复杂的编码方案来在有限的带宽中传输尽可能多的数据。
- 显示设备:例如显示器可能使用不同的颜色编码系统(如RGB、YCbCr等)来表示图像数据。
e.g., 出错条件
- 错误的报告方式(报告方式):
- 存储设备(如硬盘、SSD)通常通过设备的自检程序(如SMART技术)来报告错误,这可能包括扇区错误或硬件故障。
- 网络设备(如路由器、交换机)则可能通过网络管理软件或日志文件来报告丢包、连接超时等网络问题。
- 人机输入设备(如键盘、鼠标)错误可能直接体现在设备响应上,如按键无响应或指针移动不正常,通常通过操作系统的设备管理器来报告错误状态。
- 错误的后果(错误的后果):
- 对于存储设备,错误可能导致数据丢失或文件系统损坏,影响数据的完整性和可用性。
- 在网络设备中,错误通常导致数据传输中断或性能下降,影响网络的稳定性和效率。
- 对于人机输入设备,错误可能导致用户输入被错误解读或完全无法输入,影响用户的操作体验。