首先,硬件的种类和类型实在太多,单单磁盘就有不同类型、不同生产厂商的数十种之多,而每种磁盘的控制界面并不一样。至于网卡、视频卡、键盘、鼠标等也存在五花八门的品牌和系列。
其次,对一种硬件设备来说,其访问过程并不简单。要想正常访问,必须知道该设备的物理结构和特性,其工作原理和机制
。而这对于程序设计员来说,显然有点要求过多。
例如,由于对控制寄存器的访问和对内存的访问不同,用户必须明白I/O设备的底层命令,并且对于不同的设备这个命令是不同的。这样用户写的程序必须依设备的不同而有所不同,这显然不是一件令人高兴的事情。例如,用户在读写一个文件时,因为介质是软盘、磁盘或光盘,他们需要写出3个版本的程序。
解决这个问题的答案当然是软件,或者说操作系统软件。我们已经多次强调过,操作系统的角色就是魔术师和管理者。在这里也不例外。I/O软件的目的就是魔术和管理。魔术是将不同I/O设备的差异屏蔽,使它们看上去似乎是一样的东西,都具有令人赏心悦目的界面
;而管理自然是对这些设备进行管理,该独享的独享,该共用的共用,需要缓冲的缓冲。并对设备进行实际的驱动(发出读写命令)。
I/O软件的目的
从最高层来说,I/O软件的目的我们已经说过,就是魔术和管理。而具体来说,其目标有如下几项:
设备独立
统一命名
错误处理
数据传输缓冲
共用与独享
设备独立
指的是程序对I/O设备的访问不依赖于设备的物理特征,且在I/O程序的编写时无须事先指定I/O设备
。
统一命名
指的是设备或文件的命名不依赖于具体的计算机,这样使用名字将使程序可以在任何机器上运行;
错误处理
指的是对输入输出过程中产生的数据错误进行侦测与纠正,而且纠错应该在最靠近硬件的层面上进行。数据传输指的是实际操控数据在主机和外设之间的传递,例如支持同步(阻塞传输)和异步(中断驱动)数据传输。
缓冲
是为数据传输提供一个临时存放地,然后在方便的时候将数据拷贝到最后目的地。
共用与独享
指的是将设备尽量变为共享,以增大资源利用率和降低死锁发生的概率。例如,将磁盘、打印机变为共享。
PS
- IO 软件指什么?