设备的分配与回收(考虑因素,数据结构,分配步骤)

news/2024/11/28 17:55:38/

目录

  • 1.设备分配时应考虑的因素
    • 1.设备的固有属性
    • 2.设备分配算法
    • 3.设备分配中的安全性
    • 1.安全分配方式
    • 2.不安全分配方式
  • 2.静态分配与动态分配
  • 3.设备分配管理中的数据结构
    • 1.“设备、控制器、通道”之间的关系
    • 2.设备控制表(DCT)
    • 3.控制器控制表(COCT)
    • 4.通道控制表(CHCT)
    • 5.系统设备表(SDT)
  • 4.设备分配的步骤
    • 1.缺点
  • 5.设备分配步骤的改进方法
    • 1.逻辑设备表(LUT)
    • 2.逻辑设备表的设置问题

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

1.设备的固有属性

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

2.设备分配算法

先来先服务优先
优先级高者优先
短任务优先

3.设备分配中的安全性

从进程运行的安全性上考虑,设备分配有两种方式:

1.安全分配方式

为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)
一个时段内每个进程只能使用一个设备
优点:破坏了“请求和保持”条件,不会死锁
缺点:对于一个进程来说,CPU和I/O设备只能串行工作

2.不安全分配方式

进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。
只有某个I/O请求得不到满足时才将进程阻塞。
一个进程可以同时使用多个设备.
优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
缺点:有可能发生死锁(可采用的策略:死锁避免、死锁的检测和解除)

2.静态分配与动态分配

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

动态分配:进程运行过程中动态申请设备资源。

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

1.“设备、控制器、通道”之间的关系

一个通道可控制多个设备控制器,每个设备控制器可控制多个设备。
在这里插入图片描述

2.设备控制表(DCT)

系统为每个设备配置一张DCT,用于记录设备情况。
在这里插入图片描述

3.控制器控制表(COCT)

每个设备控制器都会对应一张COCT。
操作系统根据COCT的信息对控制器进行操作和管理。

在这里插入图片描述

4.通道控制表(CHCT)

每个通道都会对应一张CHCT。
操作系统根据CHCT的信息对通道进行操作和管理。
在这里插入图片描述

5.系统设备表(SDT)

记录了系统中全部设备的情况,每个设备对应一个表目。

在这里插入图片描述

4.设备分配的步骤

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

注∶只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可后动I/O设备进行数据传送。

1.缺点

①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程。
②若换了一个物理设备,则程序无法运行。
③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。

改进方法:
建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名。

5.设备分配步骤的改进方法

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

1.逻辑设备表(LUT)

建立了逻辑设备名与物理设备名之间的映射关系。
某用户进程第一次使用设备时使用逻辑设备名向操作系统发出请求,操作系统根据用户进程指定的设备类型(逻辑设备名)查找系统设备表,找到一个空闲设备分配给进程,并在LUT中增加相应表项。
如果之后用户进程再次通过相同的逻辑设备名请求使用设备,则操作系统通过LUT表即可知道用户进程实际要使用的是哪个物理设备了,并且也能知道该设备的驱动程序入口地址。

在这里插入图片描述

2.逻辑设备表的设置问题

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


http://www.ppmy.cn/news/1183641.html

相关文章

jQuery中ajax如何使用

jQuery中ajax如何使用及代码详解 1. 引言 在现代Web开发中,使用Ajax进行异步数据交互变得非常普遍。而在jQuery中,提供了便捷的方法来实现Ajax请求,简化了开发过程。本文将介绍jQuery中如何使用Ajax以及通过代码详解其使用方法。 2. Ajax简介…

设置爱奇艺代理教程

设置爱奇艺代理教程 活泼与直观:设置爱奇艺代理,让你的网络更加自由! 轻松口语化:首先,打开爱奇艺APP,进入设置页面。 设置->网络->代理设置 活泼与直观:在代理设置页面,我…

uniapp获取地理位置的API是什么?

UniApp获取地理位置的API是uni.getLocation。它的作用是获取用户的当前地理位置信息,包括经纬度、速度、高度等。通过该API,开发者能够实现基于地理位置的功能,如显示用户所在位置附近的商家、导航服务、天气查询等。 以下是一个示例&#x…

大彩串口屏读写文件问题

分区 本文使用的是大彩串口屏M系列的: 串口屏内部有三个分区,分别为A、B、C三个区: A区:系统区,存储组态工程文件 B区:数据区,存储配置信息,记录数据、历史曲线等 C区:备…

08.K8S高可用方案

K8S高可用方案 1、高可用部署方式 官方提供两种高可用实现方式: 堆叠etcd 拓扑,其中 etcd 节点与控制平面节点共存;外部 etcd 节点,其中 etcd 与控制平面在不同的节点上运行;1.1、堆叠 etcd 拓扑 主要特点: 每个 master 节点上运行一个 apiserver 和 etcd, etcd 只与本…

漏洞复现-dedecms文件上传(CVE-2019-8933)

dedecms文件上传_CVE-2019-8933 漏洞信息 Desdev DedeCMS 5.7SP2版本中存在安全漏洞CVE-2019-8933文件上传漏洞 描述 ​ Desdev DedeCMS(织梦内容管理系统)是中国卓卓网络(Desdev)公司的一套基于PHP的开源内容管理系统&#x…

【Unity程序技巧】Input管理器

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

C51--PWN-舵机控制

PWM开发sg90舵机 1、简介 PWM(pulse width modulation)是脉冲宽度调制缩写。 通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码,通过调节占空比的变化来…