设备分配与回收、缓冲区管理

news2024/10/7 18:19:56

设备分配与回收

  1. 是什么:设备分配的任务是按照一定的策略,为提出I/O请求的进程分配合适的设备,确保CPU与I/O设备之间能正常通信,还应分配相应的控制器和通道。
  2. 设备分配管理中的数据结构
    • 设备控制表DCT:每个设备对应一张DCT,用于记录设备情况
      • 关键字段有:类型、标识符、状态、指向COCT的指针、重复执行次数或时间(当重复执行多次io后仍不成功会认为此次io失败)、等待队列指针(由进程PCB组成队列)
    • 控制器控制表COCT:每个控制器对应一张COCT,操作系统根据COCT的信息对控制器进行操作和管理
      • 关键字段有:控制器标识符、状态、指向CHCT的指针、等待队列指针
    • 通道控制表CHCT:每个控制器对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理
      • 关键字段有:通道标识符、状态、指向COCT的指针、等待队列指针
    • 系统设备表SDT:记录整个系统中所有设备的情况,每个设备对应一个表目
      • 关键字段有:设备类型、设备标识符(即物理设备名)、DCT、驱动程序入口
  3. 设备分配的步骤
    • 根据进程请求的物理设备名查找SDT
    • 根据SDT找到DCT
      • 若设备忙碌则将进程PCB挂到设备等待队列中
      • 若设备不忙碌则将设备分配给进程
    • 根据DCT找到COCT
      • 若控制器忙碌则将进程PCB挂到控制器等待队列中
      • 不忙碌则将控制器分配给进程
    • 根据COCT找到CHCT
      • 若通道忙碌则将进程PCB挂到通道等待队列中
      • 不忙碌则将通道分配给进程
    • 只有设备、控制器、通道三者都分配成功,这次设备分配才算成功。之后便可启动I/O设备进行数据传送

设备分配步骤的改进

  • 改成根据进程请求的逻辑设备名(即设备类型)查找SDT。
  • 增加一个逻辑设备表LUT:用户根据逻辑设备名查找SDT时若找到指定类型的、且空闲的设备,就将其分配给该进程。操作系统在LUT中新增一个表项
    • 逻辑设备表LUT建立了逻辑设备名与物理设备名之间的映射关系。如上所示,用户进程第一次使用设备时是用逻辑设备名向操作系统发出请求,然后操作系统查SDT找到空闲设备分配并在LUT中新增表项。若之后用户进程再通过相同的逻辑设备名请求使用该设备,操作系统通过LUT表即可知道该进程要使用哪个物理设备,也能知道该设备的驱动程序入口地址
    • LUT和DMT(Device Mapping Table设备映射表)是一个东西。DMT是Windows下的,LUT是Unix下的,都是建立逻辑设备名到物理设备名的映射关系(以便之后根据设备类型选择调用相应的驱动程序)。属于设备独立性软件要干的事情
  1. 设备分配中应考虑的因素
    • 设备的固有属性:
      • 独占性
      • 共享性
      • 虚拟性
      • 原则是既要充分发挥设备的使用效率,尽可能地让设备忙碌,又要避免由于不合理的分配方法造成进程死锁
    • 设备的分配算法
      • 先来新服务
      • 高优先级优先
    • 设备分配中的安全性
      • 安全分配方式:进程只要发出一个I/O请求就立即阻塞,直到I/O完成才被唤醒。即一个进程在同一时间段内只能使用一个设备,发出I/O请求后就不能再请求任何资源。破坏了死锁产生的“请求和保持”条件,不会发生死锁。但对于同一个进程,CPU和I/O设备串行工作,进程推进的效率不高
      • 不安全分配方式:进程可以同时发出多个I/O请求,直到某个I/O设备不可用才阻塞。这种方式下一个进程可同时操作多个设备,使得进程快速推进。但分配不安全,可能造成死锁(可用银行家算法来避免死锁)
    • 设备独立性:将用户程序与具体物理设备隔离开来,即用户面对的是逻辑设备,而分配程序将逻辑设备转换为物理设备后,再根据要求的物理设备号进行分配
      • 使得系统增减或变更设备时不必修改源程序,便于处理I/O设备故障,提高系统可靠性,并使设备的分配更加灵活,提高设备的利用率

缓冲区管理

  1. 缓冲区的作用
    • 缓和CPU与I/O设备之间速度不匹配的矛盾:CPU可以把要输出的数据快速放入缓冲区,之后就可以做别的事。慢速的I/O设备可以慢慢从缓冲区取走数据
    • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
    • 解决数据粒度不匹配问题:如输出进程每次可以生成一块数据,但I/O设备每次只能输出一个字符
    • 提高CPU与I/O设备之间的并行性
  2. 单缓冲:用户进程请求某种块设备读入若干块数据,操作系统在主存中为其分配一个缓冲区。用户进程的内存空间中,会分出一片工作区来接受输入/输出数据,一般默认工作区大小与缓冲区大小相同
    请添加图片描述
    请添加图片描述
  3. 双缓冲:若用户进程请求某种块设备读入若干块数据,操作系统会在主存为其分配两个缓冲
    请添加图片描述
    在这里插入图片描述
    请添加图片描述
    请添加图片描述
  4. 循环缓冲
  5. 缓冲池
    • 三个队列:空缓冲队列、输入队列、输出队列
    • 四种工作缓冲区:
      • 用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区
      • 用于收容输出数据的工作缓冲区、用于提取输出数据的工作缓冲区

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Bean 生命周期顺序验证

看到一篇写的很好的 Spring Bean 生命周期的博客:一文读懂 Spring Bean 的生命周期,在此写个简单的 Bean 进行验证。 1. 创建Springboot项目 基于 springboot 的2.1.8.RELEASE 创建一个简单项目,只添加 spring-aop 包以引入spring依赖。 &…

关于流控RTS/CTS ,DTR/DSR的说明

最近在调试代码过程中遇到一些流控的问题,关于相关概念做了一些总结。 以9针脚232串口为例子: DCD:接受信号检出,也叫数据载波检出线(Data Carrier detection,DCD),主要用于表示Modem已经接通通…

六、事务-2.事务操作

解决问题:要把转账的三步操作控制在一个事务之内 当前每一个SQL语句就是一个事务,默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。 一、方式一:修改当前窗口事务提…

全球化时代的文化代言人:海外网红如何影响消费行为?

随着全球化的推进,互联网和社交媒体的普及,海外网红在当今社会中扮演着越来越重要的角色。这些在网络平台上拥有大量粉丝的人物不仅仅是娱乐的代表,更成为了文化的代言人,影响着人们的消费行为。 从美妆产品到时尚潮流&#xff0…

我们到底在用Hibernate还是Spring Data JPA还是JPA???

Hibernate 和 JPA 和Spring Data JPA JPA JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范 Hibernate Hibernate是一个JPA规范的具体实现,是ORM类型的框架,对象映射模型。 Hibernate 可以自…

ModuleNotFoundError: No module named ‘google‘

这个错误表明你的代码在执行过程中遇到了一个模块导入问题。根据报错信息,问题似乎出现在导入google.protobuf模块时,提示找不到google模块。 解决这个问题的一种可能方法是确保你的环境中安装了protobuf库,因为google.protobuf实际上是prot…

持续性能优化:确保应用保持高性能

在当今数字化时代,应用程序的性能已经成为用户体验和业务成功的关键因素之一。无论是Web应用、移动应用还是企业级软件,用户对于速度和响应性的要求越来越高。因此,持续性能优化已经成为保证应用在竞争激烈的市场中脱颖而出的重要策略。 什么…

FTP传文件传易丢失且运维管理难,是否有好的替代解决方案?

文件传输协议(FTP),诞生于1971年,自20世纪70年代发明以来,FTP已成为传输大文件的不二之选。内置有操作系统的 FTP 可提供一个相对简便、看似免费的文件交换方法,因此得到广泛使用。 后来由于FTP缺乏足够的安…

计算机字节单位以及换算

字节 字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,同时也表示一些计算机编程语言中的数据类型和语言字符。字节是二进制数据的单位。一个字节通常8位长。 字节单位 换算 1字节(Byte) 8位(bit) 1KB( KB,千字节) …

Lnmp架构-Redis

redis 部署 make的时候需要gcc和make 如果在纯净的环境下需要执行此命令 [rootserver3 redis-6.2.4]# yum install make gcc -y 注释一下这几行 vim /etc/redis/6739.conf 2.Redis主从复制 设置 11 是master 12 13 是slave 在12 上 其他节点以此内推 此时在 11 master …

【JAVA+Geoserver】使用Geoserver的REST API发布样式,文本丢失问题,已解决

文章目录 问题描述原因分析在geoserver检查sld文本推测一、是否是geoserver-manager的API优化sld文本,导致文本内容丢失结论:geoserver-manager并没有优化文本 推测二、API接口本身就有问题结论:可以确定是geoserver的内部出现问题 解决方法在…

CSS布局,表格按钮无线延长

C有时候有有时候没有,如下样式会导致B在ctrl滚轮放大缩小中的表格会无限加宽 .A{ display: flex; width: 100% } .B{ flex: 1 } 解决方案: 1.如果C一直在 .A{display: flex; width: 100% justify-content: space-between; } .B{width: calc(100% - 200…

移动隔断墙的用途和空间布局,设计合适的结构,包括固定方式

移动隔断墙的用途: 1. 划分空间:移动隔断墙可以在需要时将一个大空间划分为多个小空间,以满足不同的使用需求。 2. 提供隐私:移动隔断墙可以为需要隐私的区域提供屏障,例如办公室中的会议室或私人办公室。 3. 增加灵活…

C语言程序设计——小学生计算机辅助教学系统

题目:小学生计算机辅助教学系统 编写一个程序,帮助小学生学习乘法。然后判断学生输入的答案对错与否,按下列任务要求以循序渐进的方式分别编写对应的程序并调试。 任务1 程序首先随机产生两个1—10之间的正整数,在屏幕上打印出问题…

2023年高教社杯 国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…

可直接运营的餐饮外卖点餐自提单多门店小程序开发演示

适合鲜花店、蛋糕店、奶茶店、餐饮店、便利店等门店商家的小程序。 小程序系统支持外卖和自提两种模式,帮助商家打造自己的私域流量池,减少对美团和饿了么的依赖,提升用户点餐、就餐体验。 支持会员签到获取积分的功能,积分可用…

喜报|擎创科技携手华胜天成,深度探索企业数字化转型之路

近日,上海擎创信息技术有限公司(简称“擎创科技”)与北京华胜天成科技股份有限公司(简称“华胜天成”)达成战略合作伙伴关系。 擎创科技副总裁冯陈湧与华胜天成副总裁崔勇、助理总裁郭涛一致认为在金融、保险、证券、…

神代码鉴赏

1:瞒天过海 猜下如下代码会输出啥: public static void main(String[] args) {// \u000d System.out.println("coder Hydra"); }啥也不输出,不,看结果: 神奇吧!这是因为\u000d就是换行符的unicode编码&a…

hive表向es集群同步数据20230830

背景:实际开发中遇到一个需求,就是需要将hive表中的数据同步到es集群中,之前没有做过,查看一些帖子,发现有一种方案挺不错的,记录一下。 我的电脑环境如下 软件名称版本Hadoop3.3.0hive3.1.3jdk1.8Elasti…

Oralce Client11和PL/SQL12安装

初始环境: 1.阿里云轻量应用服务器已经安装Oracle11g https://blog.csdn.net/testleaf/article/details/111826134 2.阿里云轻量应用服务器已经配置Oracle11g https://blog.csdn.net/testleaf/article/details/109096654 具体目标: 1.安装Oralce Client1…