从软件系统的层次介绍I/O的实现过程。
I/O软件目标
设备无关性
- 程序员写出的软件无需修改便能读出软盘、硬盘以及CD-ROM等不同设备上的文件
统一的命名
- 一个文件或设备名将简单地只是一个字符串或一个整数,而完全不依赖于设备。
- 在UNIX和MINIX 3中,所有的磁盘可以以任何方式集成到文件系统层次结构中去,用户也不必知道哪个各字对应着哪个设备。
容错功能
- 错误应在尽可能接近硬件的地方处理,低层软件可以自行处理错误,尽可能向上层软件透明
协同同步与异步传输
- 多数物理I/O是异步传输,用户接口是阻塞的,需要使之协同
设备共享
- 某些设备可同时被多个用户使用,另一些设备则在某一时刻只能供一个用户专用
I/O软件系统的层次结构
分为中断处理器、设备驱动程序、设备无关I/O软件、用户空间I/O软件四个层次结构。
中断处理器
中断需要尽量加以屏蔽,需将其放在操作系统的底层进行处理,以便其余部分尽可能少地与之发生联系。
- 这里的中断是由硬件产生,一般在I/O完成后会发生。
- 屏蔽中断的最好方法是将将启动I/O的驱动程序阻塞,直至I/O操作结束并发生中断,解除阻塞。
- 在Minix中,驱动程序为单独的一个进程,因此可以使用这个模型。