操作系统设备的分配与回收

Posted bfhonor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统设备的分配与回收相关的知识,希望对你有一定的参考价值。

一、设备的分配与回收

(一)设备分配时应考虑的因素

1. 设备的固有属性

  • 设备的固有属性可分为三种:独占设备、共享设备、虚拟设备
  • 独占设备——一个时段只能分配给一个进程(如打印机)
  • 共享设备——可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
  • 虚拟设备——采用 SPOOLing 技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用 SPOOLing 技术实现的共享打印机)
  • 设备的分配算法:先来先服务、优先级高者优先、短任务优先…

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

  • 从进程运行的安全性上考虑,设备分配有两种方式:
  • ①、安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)
    【一个时段内每个进程只能使用一个设备
    优点:破坏了“请求和保持”条件,不会死锁
    缺点:对于一个进程来说,CPU和I/O设备只能串行工作】
  • ②、不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。
    【一个进程可以同时使用多个设备
    优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
    缺点:有可能发生死锁(死锁避免、死锁的检测和解除)】

(二)静态分配与动态分配

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源【破坏了“请求和保持”条件,不会发生死锁】
  • 动态分配:进程运行过程中动态申请设备资源

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

  • “设备、控制器、通道”之间的关系:一个通道可控制多个设备控制器,每个设备控制器可控制多个设备
  • 设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况.
  • 控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。
  • 通道控制表(CHCT):每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
  • 系统设备表(SDT):记录了系统中全部设备的情况,每个设备对应一个表目。

(四)设备分配的步骤

  • ①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
  • ②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
  • ③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
  • ④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
  • 缺点:
    ①、用户编程时必须使用"物理设备名",底层细节对用户不透明,不方便编程
    ②、若换了一个物理设备,则程序无法运行
    ③、若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待
  • 改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名

(五)设备分配步骤的改进方法

  • ①、根据进程请求的逻辑设备名查找SDT(注:用户编程时提供的逻辑设备名其实就是“设备类型”
  • ②、查找SDT,找到用户进程指定类型的、并且空闲的设备,将其分配给该进程。操作系统在逻辑设备表(LUT)中新增一个表项
  • ③、根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
  • ④、根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。

  • 逻辑设备表的设置问题:
    ①、整个系统只有一张LUT:各用户所用的逻辑设备名不允许重复,适用于单用户操作系统
    ②、每个用户一张LUT:不同用户的逻辑设备名可重复,适用于多用户操作系统

以上是关于操作系统设备的分配与回收的主要内容,如果未能解决你的问题,请参考以下文章

操作系统设备的分配与回收

操作系统设备的分配与回收

操作系统笔记——设备的分配与回收

操作系统王道考研 p67 设备的分配与回收

Android内存优化相关

垃圾回收与内存分配——总结篇