129: 设备分配:I/O设备如何分配给进程
当多个程序同时需要使用打印机、扫描仪、磁盘等I/O设备时,操作系统怎么决定谁先用、谁后用?
这不是简单的"先到先得"。操作系统要考虑设备类型、优先级、安全性等各种因素。这就是设备分配的工作。
设备的分类
先搞清楚I/O设备有哪些类型,因为不同类型的设备,分配方式完全不同:
独占设备
一段时间内只能被一个进程使用。比如打印机、扫描仪、刻录机。
你总不想两份不同的文件同时打到一张纸上吧?
共享设备
可以被多个进程"同时"使用。比如磁盘。
多个进程可以交替读写磁盘。虽然物理上磁头同一时刻只能在一个位置,但通过调度,看起来像是同时服务所有人。
虚拟设备
通过SPOOLing等技术,把一个物理设备变成多个逻辑设备。比如一台打印机被SPOOLing变成多个"虚拟打印机",每个进程觉得自己有一台专属的。
设备分配的方式
静态分配
进程在开始运行前就申请好所有需要的设备,整个运行期间独占使用。
优点:不会出现死锁(因为你需要的设备一开始就给你了)。
缺点:设备利用率极低。你的程序可能在等用户输入,但设备一直被你占着,别人用不