设备的分配与回收

设备分配时应考虑的因素

设备的固有属性

独占设备:一个时间只能分配给一个进程
共享设备:可同时分配给多个进程使用,宏观上同时共享使用设备,微观上交替使用

虚拟设备:采用SPOOLing技术将独占设备改造成共享设备,可同时分配给多个进程使用

设备分配算法

先来先服务

优先级高者优先

短任务优先

。。。。

设备分配中的安全性

安全分配方式:为进程分配一个设备后就将进程阻塞,本次io完成之后才将进程唤醒

一个时段每个进程只能使用一个设备

优点:破坏了“请求和保持”条件,不会死锁

缺点:对于一个进程来说,cpu和io设备只能串形工作


不安全分配方式:进程发出io请求之后,系统为其分配io设备,进程可以继续执行,之后还可以发出新的io请求,只有某个io请求得不到满足才可以将进程阻塞

一个进程可以同时使用多个设备

优点:进程的计算任务和io任务可以并行处理,使进程迅速推进

缺点:有可能发生死锁

静态分配与动态分配

静态分配:进程运行之前,为其分配全部的资源,运行结束后归还资源

破坏了“请求和保持”条件,不会死锁

动态分配:进程运行过程中动态申请设备资源

设备分配管理中的数据结构

设备控制表(DCT):系统为每一个设备配置一张DCT用于记录设备情况

控制器控制表(COCT):每个设备控制器都会对应一张COCT,操作系统根据COCT的信息对控制器进行操作和管理

通道控制表(CHCT):每个通道都会对应一张CHCT,操作系统根据CHCT的信息对通道进行操作和管理

系统设备表(SDT):记录了系统中全部设备的情况,每一个设备都对应一个表目

设备分配的步骤

1.根据进程请求的物理设备名查找SDT

2.根据SDT找到DCT,若设备忙则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程

3.根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程

4.根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程

只有设备,控制器,通道都分配成功时,这次设备分配才算成功,之后便可以启动io进行数据传送

缺点

1.用户编程时候,必须使用物理设备名,底层细节对用户不透明,不方便编程

2.若换了一个物理设备,则程序无法运行

3.若请求的物理设备正在忙碌,及时系统中还有同类型的设备,进程页必须阻塞等待(设备利用率不高)

改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时候只需要提供逻辑设备名

设备分配步骤的改进方法

1.根据进程请求的逻辑设备名查找SDT

2.查找SDT,找到用户进程指定类型的,并且空闲的设备,将其分配给该进程,操作系统在逻辑设备表LUT中新增一个表项

3.根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程

4.根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程

关于LUT有两种方式

1.整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,这个方法只适用于丹用户操作系统

2。为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户的操作系统,系统会在用户登录时候,为其建立一个用户管理进程,然后lut就房子啊用户管理进程的pcb中

posted @ 2025-10-09 10:53  是我,米老鼠  阅读(6)  评论(0)    收藏  举报