您的位置:首页 > 科技 > IT业 > html中文网_网站设计与制作说明_三一crm手机客户端下载_全国免费信息发布平台

html中文网_网站设计与制作说明_三一crm手机客户端下载_全国免费信息发布平台

2024/12/27 7:09:13 来源:https://blog.csdn.net/qq_51216031/article/details/144749276  浏览:    关键词:html中文网_网站设计与制作说明_三一crm手机客户端下载_全国免费信息发布平台
html中文网_网站设计与制作说明_三一crm手机客户端下载_全国免费信息发布平台

目录

1、设备分配应考虑的因素

2、静态分配与动态分配

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

(1)设备控制表 DCT

(2)控制器控制表COCT

(3)通道控制表CHCT

(4)系统设备表SDT

4、分配过程

5、分配改进

6、逻辑设备表LUT的设置

7、回收


1、设备分配应考虑的因素

需要考虑设备固有属性、分配算法、设备安全等因素

什么是设备固有属性?
例如:独占式设备、共享设备、虚拟设备,就是设备的固有属性
独占式设备:同一时间,只能一被分配给一个进程,例如打印机
共享设备:同一时间,可以被多个进程使用,例如磁盘(宏观共享,微观依旧是串行,交替使用)
虚拟设备:例如假脱机技术实现的设备

什么是设备的分配算法?
就是一个设备什么时候分,分给谁等问题
一般的就是以下集中算法
先来先服务算法
优先级高优先算法
短任务优先算法等

什么叫做设备安全?
就是设备在被使用过程中,不能发生异常情况,例如死锁。
根据安全,有两种分配方式:
安全分配方式:一个进程在被分配一个设备后,必须阻塞,等待设备执行完毕,之后进程才可以进行其他任务
这样的优点是,不会发生死锁;但是设备和进程只能串行执行,效率低

不安全分配方式:一个进程被分配一个设备后,不用等待设备的执行,而是可以继续执行其他任务,例如申请新的设备等。
这样的优点是,进程和设备可以并行运行,效率高;但是可能会发生死锁问题

2、静态分配与动态分配

静态分配:就是进程运行前,就为其分配好全部的资源,运行结束后释放资源
动态分配:根据进程需要,动态的进行申请资源。

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

在理解数据结构之前
需要了解通道、控制器、设备之间的关系
一个通道可以管理多个控制器
一个控制器可以管理多个设备
通道->多控制器->设备
他们三者之间是从属的关系

(1)设备控制表 DCT

系统为每一个设备配置一张DCT,用于记录设备情况

设备控制表记录设备的以下信息

字段说明示例
设备类型标识设备的类型,例如打印机、鼠标、键盘等打印机、鼠标、键盘
设备表示符(物理设备名)设备的唯一标识符,例如MAC地址、设备ID等00:14:22:01:23:45 (MAC地址)
设备状态设备当前状态:如空闲、忙碌、故障等空闲、忙碌、故障
指向控制器表的指针每个设备由一个控制器控制,该字段指向控制器表中相应控制器指针(例如:控制器表ID)
重复执行次数或时间设备操作失败后的重复执行次数或时间,超限则视为失败3次、5秒(如:重试3次,超时5秒)
设备队列的队列指针设备的进程等待队列指针,指向等待设备的进程队列队列ID(如:队列1、队列2)

设备类型:标识设备的类型,例如打印机、鼠标、键盘等
设备表示符:物理设备名,即MAC地址
设备状态:设备是忙碌的,还是空闲,还是故障等
指向控制器表的指针:每个设备由一个控制器控制,该指针指向相应控制器
重复执行次数或时间:一个设备进行一次操作时,可能会失败,此时设备会进行多次重复,超过一定次数后才认定失败,这个字段就表示的失败次数
设备队列的队列指针:该设备的进程等待队列,很多进程可能在排队等待设备

(2)控制器控制表COCT

每一个设备控制对应一张COCT表,操作系统根据该表对控制器进行操作管理

控制器控制表记录以下信息:

字段说明示例
控制器标识符标识控制器的唯一ID控制器ID: 1、控制器ID: 2
控制器状态控制器当前状态,例如空闲、忙碌、故障等空闲、忙碌、故障
执行通道表的指针控制器由一个通道管理,该字段指向通道表中相应的通道指针(如:通道表ID)
控制器队列的首指针指向等待使用该控制器的进程队列的第一个进程队列首指针
控制器队列的尾指针指向等待使用该控制器的进程队列的最后一个进程队列尾指针

控制器标识符:标识控制器的唯一ID
控制器状态:标识控制器的状态,例如忙碌、空闲、故障等
执行通道表的指针:每一个控制器由一个通道管理,该指针指向对应通道
控制器队列的首指针、尾指针:指向等待使用该控制器的进程等待队列

(3)通道控制表CHCT

每一个通道对应一张CHCT,操作系统根据该表对通道进行操作和管理

通道控制表记录以下信息:
通道标识符:标识通道的唯一ID
通道状态:标识通道的状态,例如忙碌、空闲、故障等
通道队列的首指针、尾指针:指向等待使用该通道的进程等待队列

(4)系统设备表SDT

记录系统中全部设备的情况,每一个对应一个表目
表目又指向一个具体的表


该表中记录:
设备类型、设备标识符、设备控制表、驱动程序入口等信息

4、分配过程

(1)进程根据物理设备名,查找系统设备表
(2)根据系统设备表,查找到设备控制表;此时如果设备忙碌,则进程加入该设备的等待队列
(3)根据设备控制表找到控制器表;此时如果控制器忙碌,则进程加入控制器等待队列
(4)根据控制器表到通道控制表;此时如果通道忙碌,则进程加入通道等待队列
只有设备、控制器、通道三者同时空闲并分配,才算做进程分配设备成功
上述这种分配方式有明显的缺点,
缺点如下:
第一,什么是物理设备名?我不知道啊,对应不熟悉的用户,直接没法用
第二,如果物理设备名是A,现在换了一个设备,叫做B,程序崩溃
第三,假设现在有多台同类型的设备,例如有1000台打印机,此时1号打印机忙碌,可是你恰好用的1号打印机的名字,即使其他所有打印机都是空闲,此时进程也只能等,不能切换

5、分配改进

根据上述不足,我们可以改进如下:
不要用物理设备名字
使用逻辑设备名字
让操作系统进行逻辑设备和物理设备的映射
这就需要增加一个新的数据结构表,叫做逻辑设备表,负责物理设备和逻辑设备映射关系
这个逻辑设备表记录设备的物理名、逻辑名、设备驱动程序地址等信息
如图:

此时,怎么分配?
(1)进程申请设备,只提供设备逻辑名,根据此逻辑名,找到系统设备表
什么是设备逻辑名?
其实就是设备类型
(2)根据系统设备表,查找类型匹配,并且空闲的设备
在系统设备表中,就有记录了所有设备的表目,且每个表目都指明了该设备属于什么类型
此时,只需要对系统设备表进行查找,找到类型匹配,并且空闲的设备即可;然后分配
此时操作系统还要做一件事:在逻辑设备表中新增一个表项
此后,如果进程通过相同的逻辑设备名访问该设备
就可以直接通过该逻辑设备表进行查找,进行相应的分配工作

(3)根据设备控制表,找到控制器控制表,如空闲则分配;否则进程挂入控制器等待队列
(4)根据控制器控制表,找到通道;如果忙碌则挂入通道等待队列
只有设备、控制器、通道三者同时被分配,进程才算设备分配成功

6、逻辑设备表LUT的设置

逻辑设备表有几张表?
可以整个系统只有一张:
每个用户所用的逻辑设备名不允许重复,适用于单用户操作系统

也可以每一个用户一张:不同用户的逻辑设备名可以重复,适用于多用户操作系统

7、回收

修改相应的结构数据即可


 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com