目录
I/O 系统管理的主要对象是 I/O 设备和相应的设备控制器。其最主要的任务是,完成用户提出的 I/O 请求,提高 I/O 速率,以及提高设备的利用率,并能为更高层的进程方便地使用这些设备提供手段。
1、I/O系统的功能、模型和接口
(1)I/O系统的基本功能
1.1 - 隐藏物理设备的细节
I/O 设备控制器是一种硬件设备,用来对各类型的 I/O 设备进行控制,其中包含有若干个用于存放控制命令的寄存器和存放参数的寄存器。用户通过这些命令和参数,可以控制外部设备执行所要求的操作。
对于不同的设备,需要有不同的命令和参数。例如,在对磁盘进行操作时,不仅要给出本次是读还是写的命令,还需给出源或目标数据的位置,包括磁盘的盘面号、磁道号和扇区号。由此可见,如果要求程序员或用户编写直接面向这些设备的程序,是极端困难的。因此,I/O 系统必须通过对设备加以适当的抽象,以隐藏掉物理设备的实现细节,仅向上层进程提供少量的、抽象的读/写命令,如 read、write 等。//让设备易用
1.2 - 与设备的无关性
与设备的无关性是是在隐藏物理设备细节的基础上实现的。
一方面,用户不仅可以使用抽象的 I/O 命令,还可使用抽象的逻辑设备名来使用设备,例如,当用户要输出打印时,他只须提供读(或写)的命令(提出对 I/O 的要求),和提供抽象的逻辑设备名如 /dev/printer,而不必指明是哪一台打印机。
另一方面,也可以有效地提高 OS 的可移植性和易适应性,对于 OS 本身而言,应允许在不需要将整个操作系统进行重新编译的情况下,增添新的设备驱动程序,以方便新的 I/O 设备的安装。如 Windows 中,系统可以为新 I/O 设备自动安装和寻找驱动程序,从而做到即插即用。
1.3 - 提高处理机和I/O设备的利用率
I/O 系统要尽可能地让处理机和 I/O 设备并行操作,以提高它们的利用率。
- 一方面,要求处理机能快速响应用户的 I/O 请求,使 I/O 设备尽快地运行起来;
- 另一方面,也应尽量减少在每个 IO 设备运行时处理机的干预时间。
1.4 - 对 I/O 设备进行控制
对 I/O 设备进行控制是驱动程序的功能。目前对 I/O 设备有四种控制方式:
- 采用轮询的可编程 I/O 方式
- 采用中断的可编程 I/O 方式
- 直接存储器访问方式
- I/O 通道方式。
具体应采用何种控制方式,与 I/O 设备的传输速率、传输的数据单位等因素有关。//比如传输的数据是字节还是数据块等
1.5 - 确保对设备的正确共享
从设备的共享属性上,可将系统中的设备分为如下两类:
- 独占设备,进程应互斥地访问这类设备,即系统一旦把这类设备分配给了某进程后,便由该进程独占,直至用完释放。典型的独占设备有打印机、磁带机等。系统在对独占设备进行分配时,还应考虑到分配的安全性。
- 共享设备,是指在一段时间内允许多个进程同时访问的设备。典型的共享设备是磁盘,当有多个进程需对磁盘执行读、写操作时,可以交叉进行,不会影响到读、写的正确性。
1.6 - 错误处理
大多数的设备都包括了较多的机械和电气部分,运行时容易出现错误和故障。从处理的角度,可将错误分为临时性错误和持久性错误。
对于临时性错误,可通过重试操作来纠正,只有在发生了持久性错误时,才需要向上层报告。例如,在磁盘传输过程中发生错误,系统并不认为磁盘已发生了故障,而是可以重新再传,一直要重传多次后,若仍有错,才认为磁盘发生了故障。
由于多数错误是与设备紧密相关的,因此对于错误的处理,应该尽可能在接近硬件的层面上进行,即在低层软件能够解决的错误就不向上层报告,因此高层也就不能感知;只有低层软件解决不了的错误才向上层报告,请求高层软件解决。//错误解决的思路和指导思想,软件也适用,错误尽可能的在底层解决
总结:
- 第 1、2 方面的功能是为了方便用户使用 I/O 设备
- 第 3、4 方面的功能是用于提高 CPU 和 I/O 设备的利用率
- 第 5、6 方面的功能是为用户在共享设备时提供方便,以保证系统能有条不紊的运行,当系统发生错误时能及时发现错误,甚至于能自动修正错误。
(2)I/O系统的层次结构和模型
I/O