【操作系统】IO核心子系统原理讲解

文章目录

  • 1. 前言
  • 2. 假脱机技术(SPOOLing技术)
  • 3. 设备分配与回收
    • 3.1 设备分配应考虑的因素
    • 3.2 静态分配与动态分配
    • 3.3 设备管理中的数据结构
    • 3.4 设备分配步骤
    • 3.5 设备的回收步骤
  • 4. 缓冲区管理
    • 4.1 单缓冲
    • 4.2 双缓冲
    • 4.3 循环缓冲
    • 4.4 缓冲池

1. 前言

上篇文章了解了操作系统IO软件层次结构。本篇文章将继续深入,了解这些IO软件的实现方式。

在这里插入图片描述

2. 假脱机技术(SPOOLing技术)

要明白脱机技术,首先要了解什么是联机技术。在最开始的计算机中,程序员要先手动完成输入后,再由CPU开始进行运算,这就是联机技术的思路。

而脱机技术是程序员先手动通过外围机进行输入,外围机再将输入内容发送至磁带中供CPU运算使用。由于磁带的读取速度明显由于手工输入,使得效率得到了提升。

在这里插入图片描述

假脱机技术也是使用了这个思想,输入输出设备通过输入/出进程,先将数据存储在内存中,而后再传输至磁盘的输入/出井中,交由CPU完成运算。

在这里插入图片描述

3. 设备分配与回收

3.1 设备分配应考虑的因素

针对不同设备,在不同情况下可能需要考虑多种因素。比如:固有属性(独占?共享?)、分配算法(调度算法等)、安全性(何时阻塞?)。

3.2 静态分配与动态分配

静态分配与动态分配的区别主要在于进程运行前是分配所有资源,还是运行中动态的申请资源。

3.3 设备管理中的数据结构

操作系统中存在一些了IO相关的表来进行IO设备管理。具体结构如下:

在这里插入图片描述
通道设备在计算机中数量不多,为了充分的利用通道,通常多个IO设备可以共享通道。如果对通道不了解,可以前往IO管理方式。

3.4 设备分配步骤

结合上图:设备管理中的数据结构,设备分配步骤大致有以下几步:

  • 根据物理设备名查SDT;(由于进程不一定知道物理设备名,因此针对这个问题,通常会通过逻辑设备名来查询SDT)
  • 查DCT,尝试分配给进程;
  • 查COCT,尝试分配给进程;
  • 查CHCT,尝试分配给进程;

3.5 设备的回收步骤

所谓的设备回收步骤,其实就是设备分配步骤的逆操作,逐步释放资源。

4. 缓冲区管理

为了缓解CPU和I/O设备间速度不匹配的矛盾,建立了临时的存储区域,即缓冲区。缓冲区的优势有以下几点:

  • 缓和CPU和I/O设备速度不匹配的矛盾;
  • 减少CPU中断的频率,放款对CPU相应时间的限制;
  • 解决数据粒度不匹配的问题;
  • 提高CPU与I/O设备的并行性;

根据缓冲区的数量,可以分为:单缓冲、双缓冲、循环缓冲、缓冲池。

4.1 单缓冲

顾名思义,单缓冲就是只有一个缓冲区,且该缓冲区的大小为一个盘块的大小。其具有以下两个特点(包括其他几种缓冲类型都具有这个特点!!!):

  • 非空不写(如果缓冲区不是空的,那么不会将数据冲入缓冲区);
  • 未满不读(如果缓冲区没有刷满数据,则不读取);

在这里插入图片描述

4.2 双缓冲

双缓冲具有两个缓冲区。由于单缓冲区的情况下当缓冲区未满时需要等待其刷满才能进行处理,导致CPU的等待,因此在双缓冲区的模式下,当一个缓冲区刷满后CPU开始处理,同时第二个缓冲区也已经开始刷入数据,可以交替进行,减少了CPU的等待时间,提高了效率。

在这里插入图片描述

4.3 循环缓冲

循环缓冲进一步增加了缓冲区的数量,将一组缓冲区首位链接起来。

循环缓冲增加了两个指针:

  • in指针:指向下一个可以冲入数据的空缓冲区;
  • out指针:指向下一个可以取出数据的满缓冲区;

在这里插入图片描述

4.4 缓冲池

利用池化的思想,根据缓冲区的不同状态进行分组,每组通过队列来进行保存。缓冲区具有下面几种状态:

  • 空缓冲:还未刷入数据;
  • 满缓冲:已经刷满数据;
    • 满输入缓冲:刷入的数据用于输入;
    • 满输出缓冲:刷入的数据用于输出;

因此缓冲队列便对应以下几种:

在这里插入图片描述

无论是输入刷入数据到缓冲区还是输出数据到缓冲区,都要从空队列的对位获取空缓冲区;
当用户进程向IO设备进行输出时,从空队列获取空缓冲区并刷入数据,刷满后添加到输出队列;
当IO设备向用户进程进行输入时,从空队列获取空缓冲区并刷入数据,刷满后添加到输入队列;


专栏推荐

  • 操作系统;
  • springCloud从0开始;

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

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

相关文章

项目环境配置 本地/测试/预发/生产

在本地目录下新建文件 dev测试环境 development 本地开发环境 production 生产环境 uat预发布环境 .env.dev VUE_APP_API_PATH /api # 测试 VUE_APP_API_PATH http:// # 生成dist名称 VUE_APP_DIST dist_dev .env.development # 本地开发环境 VUE_APP_API_PATH…

基于element-ui后台模板,日常唠嗑

后面会补充github地址 文章目录 目录 文章目录 案例说明 1.引入库 2.创建布局组件 3.创建布局组件 4.菜单效果展示 5.创建顶部组件 5.创建顶部面包屑组件 6.创建内容区域组件 7.效果总览 7.布丁(实现一些小细节) 前言一、pandas是什么?二、使…

【AIGC】信息量、熵、交叉熵、KL散度、二值交叉熵(Binary Cross-Entropy,BCE)

本文详细的推导了二值交叉熵(BCE)和二值交叉熵损失函数(BCE Loss)之间的关系。 一、 理论基础 A : f ( ⋅ ) A:f(\cdot) A:f(⋅) 表示 A A A定义为 f ( ⋅ ) f(\cdot) f(⋅),这是人们为了某些目的而将 A A A定义成 f ( ⋅ ) f(\cdot) f(⋅)的,有意义的…

爱创科技总裁谢朝晖荣获“推动医药健康产业高质量发展人物”

中国医药市场规模已经成为全球第二大医药市场,仅次于美国。近年来,随着中国经济的持续增长和人民生活水平的提高,医药市场需求不断扩大。政府对医疗卫生事业的投入也在不断加大,为医药行业的发展创造了良好的政策环境。为推动医药…

从入门到精通:JMeter接口测试全流程详解!

利用Jmeter做接口测试怎么做呢?过程真的是超级简单。 明白了原理以后,把零碎的知识点填充进去就可以了。所以在学习的过程中,不管学什么,我一直都强调的是要循序渐进,和明白原理和逻辑。这篇文章就来介绍一下如何利用…

华为昇腾开发板共享Windows网络上网的方法

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 具体参考文章:linux(内网)通过window 上网。具体是两步:一是在windows上设置internet连接共享。二是打开Atlas 200I D…

YOLO目标检测——垃圾检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:智能化垃圾分类系统、垃圾回收和处理领域的优化管理等方面数据集说明:垃圾分类检测数据集,真实场景的高质量图片数据,数据场景丰富,含报纸、蛋壳、矿泉水瓶、电池、拉链顶罐、塑料餐盒、纸质药盒、香蕉皮…

Confluence Server Webwork 预身份验证 OGNL 注入 (CVE-2021-26084)

漏洞描述 Confluence 是由澳大利亚软件公司 Atlassian 开发的基于 Web 的企业 wiki。 存在一个 OGNL 注入漏洞,允许未经身份验证的攻击者在 Confluence Server 或 Data Center 实例上执行任意代码。 漏洞环境及利用 搭建docker环境 Confluence搭建见前文 Atlas…

穿山甲SDK 集成·android接入广告·app流量变现

接入穿山甲SDK的app 数独训练APP 广告接入示例: Android 个人开发者如何接入广告SDK,实现app流量变现 接入穿山甲SDK app示例: android 数独小游戏 经典数独休闲益智 随着移动互联网的快速发展,广告成为了许多应用开发者获取收益的主要方…

OpenStack云计算平台-Dashboard(图形化)

目录 一、安装和配置 1、安全并配置组件 2、完成安装 ​二、验证操作 一、安装和配置 1、安全并配置组件 安装软件包: yum install openstack-dashboard 编辑文件 vim /etc/openstack-dashboard/local_settings vim /etc/httpd/conf.d/openstack-dashboard.…

【目标检测】保姆级别教程从零开始实现基于Yolov8的一次性筷子计数

前言 一,环境配置 一,虚拟环境创建 二,安装资源包 前言 最近事情比较少,无意间刷到群聊里分享的基于百度飞浆平台的一次性筷子检测,感觉很有意思,恰巧自己最近在学习Yolov8,于是看看能不能复…

STM32F103C8T6第6天:adc、iic、spi、温湿度dht11在lcd1602显示

1. ADC介绍 ADC是什么? Analog-to-Digital Converter,指模拟/数字转换器 ADC的性能指标 量程:能测量的电压范围分辨率:ADC能辨别的最小模拟量,通常以输出二进制数的位数表示,比如:8、10、1…