设备分配

----- 在多道程序环境下,系统中的设备供所有进程共享。为防止诸进程对系统资源的无序竞争,特规定系统设备不允许用户自行使用,必须

由系统统一分配。每当进程向系统提出I/O请求时,只要是可能和安全的,设备分配程序便按照一定的策略,把设备分配给请求用户(进程)。

在有的系统中,为了确保在CPU与设备之间能进行通信,还应分配相应的控制器和通道

1、设备分配中的数据结构

---- 在进行设备分配时,通常都需要借助于一些表格的帮助。在表格中记录了相应设备控制器状态及对设备或控制器进行控制所需的信息

在进行设备分配时所需的数据结构(表格)由:设备控制表(DCT)控制器控制表(COCT)通道控制表(CHCT)系统设备表(SDT)等。

1.1 设备控制表(DCT)

系统为每一个设备都配置了一张设备控制表,用于记录本设备的情况:

----- 设备类型:type、设备标识符:deviceid、设备状态:等待/不等待 忙/闲、指向控制器表的指针、重复执行次数或时间、设备队列的队首指针。

设备控制表中,除了有用于指示设备类型的字段type和设备标识字段deviceid外,还应含有下列字段:

----- 设备队列队首指针。凡因请求本设备而未得到满足的进程,其PCB都应按照一定的策略排成一个队列,称该队列为设备请求队列或设备队列。

----- 设备状态。当设备自身正处于使用状态时,应将设备的忙/闲标志置“1”。若与该设备相连接的控制器或通道正忙,也不能启动该设备,此时应将

设备的等待标志置“1”。

----- 与设备连接的控制器表指针。该指针指向与该设备所连接的控制器的控制表,在设备到主机之间具有多条通路的情况下,一个设备将与多个

控制器相连接。此时,在DCT中还应设置多个控制器表指针

----- 重复执行次数。由于外部设备在传送数据时,较易发生数据传送错误,因而在许多系统中,如果发生传送错误,并不立即认为传送失败,而是

令它重新传送,并由系统规定设备在工作中发生错误时应重复执行的次数

1.2 控制器控制表、通道控制表和系统设备表

1)控制器控制表(COCT,Controller control table)。系统为每一个控制器都设置了一张用于记录本控制器情况的控制器控制表。其中记录了:

     控制器标识符-controllerid、控制器状态-忙/闲、与控制器连接的通道表指针、控制器队列的队首指针、控制器队列的队尾指针。

2)通道控制表(CHCT,Channel control table)。每个通道都配有一张通道控制表。其中记录了:

     通道标识符-channelid、通道状态-忙/闲、与通道连接的控制器表的指针通道队列的队首指针、通道队列的队尾指针。

3)系统设备表(SDT,System device table)。这是系统范围的数据结构,其中记录了系统中全部设备的情况。每个设备占一个表目,其中包括有

     设备类型、设备标识符、设备控制表及设备驱动程序的入口等项。

2、设备分配时应考虑的因素

2.1 设备的固有属性

---- 在分配设备时,首先应考虑与设备分配有关的设备属性。设备的固有属性可分成三种:独占性,指这种设备在一段时间内只允许一个进程独占,

即“临界资源”;共享性,指这种设备允许多个进程同时共享;可虚拟性,设备本身虽是独占设备,但经过某种技术处理,可以把它改造成虚拟设备。

根据设备的固有属性应采取不同的分配策略:

1)独占设备。对于独占设备,应采用独享分配策略,即将一个设备分配给某进程后,便由该进程独占,直至该进程完成或释放该设备,然后系统

才能再将该设备分配给其他进程使用。缺点:设备得不到充分利用,而且还可能引起死锁。

2)共享设备。对于共享设备,可同时分配给多个进程使用,此时需注意对这些进程访问该设备的先后次序进行合理的调度。

3)可虚拟设备。由于可虚拟设备是指一台物理设备在采用虚拟技术后,可变成多台逻辑上的虚拟设备,因而说,一台可虚拟设备是可共享的设备,

可以将它同时分配给多个进程使用,并对访问该(物理)设备的先后次序进行控制。

2.2 设备分配算法

---- 对设备进行分配的算法,与进程调度的算法有些相似之处,但前者相对简单,通常只采用以下两种分配算法:

1)先来先服务。当有多个进程对同一设备提出I/O请求时,该算法是根据诸进程对某设备提出请求的先后次序,将这些进程排成一个设备请求队列

设备分配程序总是把设备首先分配给队首进程。

2)优先级高者优先。在进程调度中的这种策略,是优先权高的进程优先获得处理机

如果对这种高优先权进程所提出的I/O请求也赋予高优先权,显然有助于这种进程尽快完成。

在利用该算法形成设备队列时,将优先权高的进程排在设备队列前面,而对于优先级相同的I/O请求,则按先来先服务原则排队。

2.3 设备分配时的安全性

---- 从进程运行的安全性考虑,设备分配有以下两种方式。

1)安全分配方式。在这种分配方式中,每当进程发出I/O请求时,便进入阻塞状态,直到其I/O操作完成时才被唤醒。

在采用这种分配策略时,一旦进程已经请求(获得)某种设备(资源)后便阻塞,使该进程不可能再请求其他任何资源,因此,这种分配方式已经摒弃了

造成死锁的四个必要条件之一的"请求和保持"条件,从而使设备分配是安全的。缺点:进程进展缓慢,即CPU与I/O设备是串行工作的

2)不安全分配方式。在这种分配方式中,进程在发出I/O请求后仍继续运行,需要时又发出第二个I/O请求、第三个I/O请求等。仅当进程所请求的

设备已被另一进程占用时,请求进程才进入阻塞状态。这种分配方式的优点是:一个进程可同时操作多个设备,使进程推进迅速

缺点:分配不安全,因为它可能具备“请求和保持”条件,从而可能造成死锁。因此,在设备分配程序中,还应再增加一个功能,以用于对本次的设备

分配是否会发生死锁进行安全性计算,仅当计算结果说明分配是安全的情况下才进行设备分配。

2.4 设备独立性---后续


例题:为实现设备分配,应为每一类设备配置一张 (设备控制表


参考文献:

设备分配

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值