OS(二十一):设备管理之 设备分配
1、设备分配中的数据结构
在进行设备分配时,需要借助于表格的帮助,在表格中记录相应设备或控制器的状态及对设备或控制器进行控制所需要的信息。
设备分配时所需的数据结构:设备控制表、控制器控制表、通道控制表和系统设备表。
1.1、设备控制表(DCT)
系统为每一个设备都配置了一张设备控制表,用于记录本设备的情况。
设备队列队首指针,因请求本设备而未得到满足的进程,PCB应按照一定的策略排成队列,称该队列为设备队列,队首指针指向队首PCB;
设备状态;
与设备连接的控制器表指针,该指针指向该设备所连接的控制器的控制表;
重复执行次数,设备在工作中发生错误时应重复执行的次数。
1.2、控制器控制表、通道控制表和系统设备表
控制器控制表(COCT),记录本控制器情况的控制器控制表。
通道控制表(CHCT),每个通道配有一张通道控制表。
系统设备表(SDT),记录了系统中全部设备的情况。
2、独占设备的分配程序
2.1、分配设备
根据I/O请求中的物理设备名,查找系统设备表(SDT),从中找出该设备的DCT,再根据DCT中的设备状态字段,可知该设备是否正忙,若忙,将请求I/O进程的PCB挂载设备队列上;否则,按照一定的算法计算本次设备分配的安全性,若不会导致系统进入不安全状态,将设备分配给请求进程。
2.2、分配控制器
系统把设备分配给请求I/O进程后,在到其DCT中找出该设备连接的控制器的COCT,从COCT的状态字段中可知该控制器是否忙碌。若忙,将进程的PCB挂载该控制器的等待队列上;否则,将该控制器分配给该进程。
2.3、分配通道
在该COCT中找到与该控制器连接的通道的CHCT,再根据CHCT内的状态信息,可知该通道是否忙碌。若忙,将请求I/O的进程挂在该通道的等待队列上;否则,将该通道分配给进程。