42-设备分配与回收

设备的分配与回收

设备分配时考虑的因素

  1. 设备的固有属性
    1. 独占设备:一段时间内只能分配给一个进程
    2. 共享设备:可以分配给多个设备使用的设备[宏观上共享,微观上交替]
    3. 虚拟设备:采用SPOOLing技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程 使用(如采用SPOOLing技术实现的共享打印机)
  2. 设备的分配算法
    1. 先来先服务
    2. 优先级算法
    3. 短任务算法
  3. 设备分配中的安全性
    1. 安全分配算法:为进程分配一个设备后就将进程阻塞,本次I/O完成后将进程唤醒;一段时间内每个进程只能使用一个设备
      1. 优点:破坏了请求与保持条件,不会死锁
      2. 缺点:对于一个进程来说,CPU和I/O设备只能串行工作
    2. 不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个请求得不到满足时才将进程阻塞。
      1. 优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
      2. 缺点:有可能发生死锁

静态分配与动态分配

静态分配:进程运行钱为其分配全部所需资源,运行结束后归还资源[破坏了请求与保持条件]。
动态分配:进程运行中动态申请设备资源

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

设备控制器通道之间的关系:一个通道可以控制多个控制器,一个控制器可以控制多个设备
设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况
设备控制表(DCT):设备类型、设备标识符、设备状态、指向控制器表的指针、重复执行次数或时间.设备队列的队首指针。
控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理
通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理
系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目

设备分配的步骤

  1. 根据进程请求的物理设备名查找SDT(物理设备名是进程请求分配时提供的参数)
  2. 根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程
  4. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

设备分配步骤的改进方法

缺点

  1. 用户编程时必须使用"物理设备名",底层细节对用户不透明,不方便编程
  2. 若换了一个物理设备,则程序无法运行
  3. 若进程请求的物理设备正在忙碌,进程也必须阻塞等待。
    改进方法
  4. 建立逻辑设备名与物理设备名的映射机制,用户编程时只需要提供逻辑设备名。
  5. 设备逻辑表(LUT)建立了逻辑设备名与物理设备名之间的映射关系,某用户进程第一次使用设备时使用逻辑设备名向操作系统发出请求,操作系统根据用户指定的设备类型查找系统设备表,找到一个空闲的设备分配给进程,并在LUT中增加相应表项。
    如果之后用户进程再次通过相同的逻辑设备名请求使用设备,则操作系统通过LUT表即可知道用户进程实际要使用哪个物理设备了,并且也能知道该设备的驱动程序入口。
    逻辑设备表的设置问题:
  6. 整个系统只有一张LUT,各用户所用的逻辑设备名不允许重复
  7. 每个用户只有一张LUT,各个用户的逻辑设备名可重复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝学不会嵌入式!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值