设备分配

设备分配中的数据结构
1.设备控制表DCT
在这里插入图片描述
系统为每个设备设置一-张设备控制表,用于记录该设备的情况。
在设备控制表中,包含:
(1)设备类型
(2)设备标识符
(3)设备队列的队首指针(队列中存放请求设备未被满足的PCB)
(4)设备状态
(5)与设备相连的控制器表指针
(6)重复执行次数。系统规定在设备工作中发生错误时可重复执行次数。
2.控制器控制表
在这里插入图片描述
系统为每个设备控制器设置一张设备控制器
表,用于记录该设备控制器的情况。包含:
●设备控制器标识符
●设备控制器状态
●与设备控制器相连的通道表指针
●控制器队列的队首指针
●控制器队列的队尾指针
3.通道控制表
在这里插入图片描述
系统为每个通道配有一-张通道表,用于记录该通道的情况。包含:
通道标识符
通道状态
与通道连接的设备控制器表首址
通道队列的队首指针
通道队列的队尾指针
4.系统设备表
系统设备表是个系统范围的数据结构,记录了系统中全部设备的情况。
每个设备占一个表目,其中包括:
设备类型
设备标识符
设备控制表
设备驱动程序的入口
设备分配时应考虑的因素
1.设备的固有属性
(1) 独享设备。采取独占分配策略
(2) 共享设备。可以通过某种调度方式,分配给多个进程使用。
(3) 虚拟设备。 指通过采用虚拟技术,使一台物理设备可变成多台
逻辑上的共享设备。可以分配给多个进程使用。
2.设备分配算法
(1) 先来先服务
当多个进程对同一设备提出I/0请求时,该算法根据进程提出请求的先后次序,排成一个设备请求队列,总是将设备分配给队首进程。
(2)优先级高者优先
在这种算法中,总是优先权高的进程优先获得资源。对于优先权相同的进程,按照先来先服务的原则排队。
3.设备分配中的安全性
(1) 安全分配方式
当进程请求资源时,便进入阻塞状态,直到I/0操作完成才被唤醒。但
进程的并发度低,资源的利用率低。
(2)不安全分配方式
当进程请求资源时,仍继续运行,需要时又发出第2个I/0请求,第3个I/0请求等,按照安全性算法进行计算,仅当状态安全时,才分配。这种方式稍复杂,但进程的并发度高。
独占设备的分配方式
1.基本的设备分配程序
当进程提出I/0请求后,按下列3个步骤进行分配。
(1) 分配设备
首先,根据I/0请求中的物理设备名,查找SDT, 找出该设备的设备控制表DCT,根据DCT中的设备状态字段,可知设备是否正忙。
若忙,将该进程的PCB挂在设备的等待队列中;
若不忙,按照一定的算法计算设备分配的安全性,来分配设备。
(2)分配控制器
在系统将设备分配给请求进程后,从DCT中找到与该设备相连的控制
器的COCT,根据COCT中的状态字段,可知该设备控制器是否忙。
若忙,将该进程的PCB挂在设备控制器的等待队列中;
若不忙,将设备控制器分配给进程。
(3)分配通道
在系统将设备控制器分配给请求进程后,从控制器控制表COCT
中找到与该控制器相连的通道的通道控制表CHCT,根据CHCT中的状态字段,可知该通道是否正忙。
若忙,将该进程的PCB挂在通道的等待队列中;
若不忙,将通道分配给进程。
2.设备分配程序的改进
(1)增加设备的独立性
进程利用逻辑设备名请求I/0。系统首先从系统设备表SDT中找出第一个该类设备的设备控制表DCT,若设备忙,再查找第2个该类设备的DCT;仅当所有该类设备都忙时,才将该进程的PCB挂在该类设备的等待队列中。
(2)考虑多通路情况
可以按照多通路情况进行改进。例如,若设备连接的第一个控制器忙碌时,应查看第2个控制器,仅当所有该类设备控制器都忙时,才将该进程的PCB挂在该类设备控制器的等待队列中。同理,通道分配也是一样的。
SPOOLing技术
1.什么是SPOOLing
当系统中引入了多道程序技术后,可以利用其中的一-道程序,来模
拟脱机输入时的外围控制机功能,把低速I/0设备上:的数据传送到高速磁盘上;再用另一道程序来模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上。
这样,便可在主机的直接控制下,实现脱机输入、输出功能。此时
的外围操作与CPU对数据的处理同时进行,把这种在联机情况下实现的同时外围操作称为SPOOLing,或称为假脱机操作。
2.SPOOLing系统的组成
在这里插入图片描述
(1)输入井、输出井
这是在磁盘上开辟的两大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I/0设备输入的数据:输出井是模拟脱机输出时的磁盘设备,用于暂存用户程序的输出数据。
(2) 输入缓冲区、输出缓冲区
为缓和CPU与磁盘之间速度不匹配的矛盾,在内存中开辟输入缓冲区、输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以
后再传送到输入井;输出缓冲区用于暂存由输出井送来的数据,以后再传送到输出设备。
(3)输入进程、输出进程
两个进程用于模拟脱机I0时的外围控制机。输入进程用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备、通过输入缓冲区、再送到输入井,当CPU需要数据时,直接从输入井读入内存;输出进程用于模拟脱机输出时的外围控制机,将用户要求输出的数据,先从内存送到输出井,待输出设备空闲时,再将输出井中的数据,通过输出缓冲区、送到输出设备
3.共享打印机
当用户进程请求打印输出时,SPOOLing 系统同意为它打印输出,但并不立即把打印机分配给该用户进程,只为它做两件事:
①由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中;
②输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将 该表挂到请求打印队列上。
如果还有进程请求打印,系统仍为之做.上述两件事情。
当打印机空闲时,输出进程从请求打印队列的队首,取出一张请求打
印表,根据表中的要求,将要打印的数据,从输出井传送到内存缓冲区,进行打印;直到所有请求响应完成,输出进程阻塞;仅当再有打印请求时,才被唤醒。
4. SPOOLing系统的特点
(1)提高了I/O的速度。
(2)将独占设备改造为共享设备。
(3)实现了虚拟设备功能。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值