计算机可以配置许多I/O设备,种类很多,而且随着技术的发展新设备也不断出现。
I/O 设备既是人机交互的界面,也是计算机与计算机通信的枢纽,需要处理的信息其原始形态是光波、电波、声波、红外线等各种不同的物理信号,它们承载的信息可以是文本、图像、声音、视频等各种不同的载体。
这方面导致了计算机应用的多样性和普遍性,另一方面也使得I/O设备的管理相当复杂。
此外,I/O设备的速度比CPU和内存的速度要慢得多,它们经常成为系统性能的瓶颈。
多任务处理是提高系统性能的一个途径,但是在多任务处理中,怎么保证I/O设备安全可靠而且被多个任务共享使用,这也是操作系统需要解决的一项任务。
为此,操作系统中的设备管理程序负责对系统中的各种输入/输出设备进行统一的管理,处理用户或应用程序的输入输出请求,方便、有效、安全地完成输入输出操作。
⑴方便性。
用户(程序)总是希望方便地使用I/O设备,但I/O过程非常复杂,如果直接控制或使用I/O设备,必须了解许多与应用本身没有直接关系的具体细节,工作量大,效率低,设备型号和系统配置的变化将引起程序的修改,影响程序的独立性和适应性。
而且让程序员直接操作物理设备,也不利于设备及其数据的保护。
解决这个问题的方法是采用设备驱动程序。
设备驱动程序处于操作系统的底层,它将具体物体设备的性质和硬件操作的细节予以品屏蔽和抽象,只向操作系统的高层和应用程序提供统一的建斌啊医用的抽象设备和逻辑操作,操作系统高层和应用程序通过驱动程序访问外设,由驱动程序负责把抽象设备的操作转换成具体物理设备的操作。
这样一来,不同规格和性能参数的外部设别(如各种不同的打印机)通过安装各自定制的设备驱动程序,就能使系统和应用程序不需要进行任何修改就了直接使用该设备。
通常,外设的生产厂商在提供硬件设备的同时必须提供该设备的驱动程序。
⑵有效性。
为了确保I/O设备多个任务所共享,设备管理程序必须解决许多问题。
例如:设备的命名、登记、分配、回收及调度等。
对于可并发共享的设备(如磁盘、显示器等),为了使设备的利用率达到最优,设备管理程序将根据每个设备的特点来全局调度和安排设备的操作。
例如,对硬盘的多个读写要求可以进行进行排序,使得每次读写操作的磁头移动距离都尽可能短。
对于独占设备(如打印机、绘图仪等),可以采用假脱机技术,把每一个要打印或绘制的文档,按先来先服务的顺序将其存放在队列中,然后以后台方式依次进行打印或绘图,从而大大提高了慢速独占设备的利用率。
为了解决I/O设备速度过慢,效率不高的问题,设备管理中大多应用了缓冲技术,以减少I/O操作的等待时间。
虽然有些I/O设备或控制器内部已有硬件缓冲(如打印机和磁盘控制器内部有缓存存储器),但操作系统仍然在内存中开设I/O缓冲区和文件系统缓冲区。
⑶安全性。
在多任务系统中,由于I/O设备的数量有限,并不是每个任务随时都可以使用这些设备的。
为了使用某个设备,必须先向设备管理程序提出申请,然后由设备管理程序按一定算法进行分配。
如果申请没有成功,它就必须排队等待,只有分配到该设备并完成I/O操作后相关的任务才能继续执行下去。
Windows就采用了这种安全分配方式。
在windows操作系统中,设备管理程序还支持即插即用功能,并按ACPI标准进行电源管理(系统的能耗状态可设置为工作状态、等待状态或休眠状态等多种),它能检测设备的闲置时间,当发现超过预定值时,就把设备切换到低能耗状态。
Windows操作系统中有一个称为设备管理器的工具程序,它可以利用我的电脑快捷菜单中的属性命令或通过控制面板中的系统启动。
启动后用户可以按类型或链接方式来寻找所关心的设备,查看该设备的信息和当前工作状态,也可以修改或重新配置设备的操作环境。