设备的分配与回收

设备的分配与回收

image


一、设备分配时的考虑因素

image

(一)设备的固有属性

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

(二)设备分配算法

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

(三)设备分配中的安全性

image

(回顾:第二章的死锁及其处理策略)

(补充:不安全分配方式并不意味着进入了不安全状态(不安全状态见死锁的处理策略))

二、静态分配与动态分配

  • 静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源

    (有了全部资源才能开始运行。破坏了“请求和保持”条件(见死锁产生的四个条件),不会发生死锁)

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

    (可能发生死锁)

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

image

(一)DCT 设备控制表 Device Control Table

image

(二)COCT 控制器控制表 Controller Control Table

image

(三)CHCT 通道控制表 Channel Control Table

image

(四)SDT 系统设备表 System Device Table

image

四、设备分配的步骤

  1. 根据进程请求的物理设备名查找 SDT(注:物理设备名是进程请求分配设备时提供的参数)。

image

  1. 根据 SDT 找到 DCT,若设备忙碌则将进程 PCB 挂到设备等待队列中,不忙碌则将设备分配给进程。

image

  1. 根据 DCT 找到 COCT,若控制器忙碌则将进程 PCB 挂到控制器等待队列中,不忙碌则将控制器分配给进程。

image

  1. 根据 COCT 找到 CHCT,若通道忙碌则将进程 PCB 挂到通道等待队列中,不忙碌则将通道分配给进程。

image

——重点:

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

五、设备分配步骤的改进

原本的第一步:根据进程请求的物理设备名查找 SDT(注:物理设备名是进程请求分配设备时提供的参数)。

image

改进方法:

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

image

LUT 逻辑设备表 Logical Unit Table 见 5.4 节 I/O 软件层次结构

image

——重点:

最终的设备分配步骤为:

逻辑设备名——(LUT——物理设备名——SDT)——DCT——COCT——CHCT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853751.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub项目迁移到GitLab

GitHub项目迁移到GitLab 1.克隆GitHub项目到本地 [root@gitclient ~]# mkdir gitrepos [root@gitclient ~]# cd gitrepos [root@gitclient gitrepos]# git init . hint: Using master as the name for the initial branch. This default branch name hint: is subject to chang…

极狐GitLab 正式发布安全补丁版本 17.6.2、17.5.4、 17.4.6

本分分享极狐GitLab 补丁版本 17.6.2, 17.5.4, 17.4.6 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何措施。 参考资料GitLab 专业升级…

IO应用程序接口设备驱动程序接口

IO应用程序接口&设备驱动程序接口 ‍ ​​ ‍一、输入/输出应用程序接口 背景:在设备独立软件层向上提供各种各样的输入/输出应用程序接口的原因是: 用户层的应用程序无法用一个统一的系统调用接囗来完成所有类型设备的 I/O ​​ ‍ 三种输入/输出应用程序接口:字符设备…

IO核心子系统

IO核心子系统 I/O 核心子系统要实现的功能就是中间三层要实现的功能。 前言:本节仅作介绍和导学,主要列举 I/O 子系统实现的相关功能,详细跳转至各对应节 ​​ ‍​​ ‍ 一、I/O 调度 用某种算法确定一个好的顺序来处理各个 I/O 请求。(类比进程调度) 如:磁盘调度(先来…

【日记】天气好好,然后打了两天游戏(562 字)

正文昨天和今天打了两天游戏,笑死。黑神话发布更新了,多打了几次虎先锋,今天晚上才过了二郎神。二郎神是真难啊。不过之后的法天相地战也是真帅啊。幸好之前没有看攻略被剧透一脸。除此之外好像就没做什么了。太懒了。中午吃饭,店家问我在读书还是工作了。后面我们聊起来。…

如何让 localStorage 数据实现实时响应

重大事项 📣 :重大事项提前通知!快来围观,不容错过! 极限科技 一直致力于为开发者和企业提供优质的开源工具,提升整个技术生态的活力。除了维护国内最流行的分词器 analysis-ik 和 analysis-pinyin,也在不断推动更多高质量开源产品的诞生。 在极限科技成立三周年之际,…

loadSend:免费开源局域网数据传输工具 全平台支持 传输工具

前言 不同系统的电脑、手机,文件传输有没有简单一点的方法? 手机是iPhone,电脑是Windows,如何更快捷传输文件呢? 我们最常用和用得最多的文件传输工具可能就是微信以及 QQ 了吧! 其实,如果只是在局域网内,用微信这一类聊天工具来传输文件并不算特别合适,除了可能存在的…

焦作本地在线教育系统价格

近年来,在线教育的普及使得传统教培模式受到了新的挑战。无论是大型教育集团,还是地方性的教培中心,纷纷转型线上,寻求更为灵活的盈利方式和发展机遇。在众多竞争者中,了解并运用合适的在线教育系统对维持市场地位至关重要。图源 凸知@www.tuzhi.ltd对于许多像焦作地区教育…

项目管理看板:实现任务透明化与实时跟踪

一、项目管理看板的定义与背景 1.1 什么是项目管理看板? 项目管理看板(Project Management Kanban)是一种可视化的任务管理工具,旨在帮助团队或项目管理者清晰地展示项目任务的状态,并对任务的进展进行实时跟踪。看板通常分为若干列,每一列代表任务的不同阶段(例如:待办…

实验六 C语言结构体、枚举应用编程

实验任务1 task1.c1 // P286例8.172 // 对教材示例代码作了微调,把输出学生信息单独编写成一个函数模块3 // 打印不及格学生信息、打印所有学生信息均调用该模块实现4 5 #include <stdio.h>6 #include <string.h> 7 #define N 3 // 运行程序输入测试时,可…

H7-TOOL自制Flash读写保护算法系列,为凌欧LKS32MC45x/MC05x/MC08x制作使能和解除算法,支持在线烧录和脱机烧录使用2024-12-15

说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。 实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂…

Jenkins拉取GitLab代码

Jenkins、GitLab、Jenkins拉取GitLab代码Jenkins从GitLab中拉取代码 1.在Jenkins主机上生成ssh密钥 [root@jenkins gitrepo]# ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): Enter passph…