非常详细!操作系统【IO核心子系统】

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶

🏆🏆本文完整PDF源文件请翻阅至文章底部下载。🏆🏆


  • 1 I/O核心子系统——概述
    • 1.1 核心子系统要完成的功能
      • 1.1.1 假脱机技术
      • 1.1.2 I/O调度
      • 1.1.3 设备保护
      • 1.1.4 设备分配与回收
      • 1.1.5 缓冲区管理(缓冲与高速管理)
    • 1.2 注意
  • 2 SPOOLing技术
    • 2.1 总览
    • 2.2 什么是脱机技术
      • 2.2.1 概述
      • 2.2.2 脱机技术的流程
      • 2.2.3 示意图
      • 2.2.4 脱机技术的优点
    • 2.3 假脱机技术(SPOOLing)
      • 2.3.1 示意图
      • 2.3.2 解释
    • 2.4 假脱机技术的应用
      • 2.4.1 背景
      • 2.4.2 实现原理
    • 2.5 总结
  • 3 设备的分配与回收
    • 3.1 总览
    • 3.2 设备分配时应该考虑的因素
      • 3.2.1 设备的固有属性
      • 3.2.2 设备分配算法
      • 3.2.3 设备分配中的安全性
    • 3.3 设备分配方式
      • 3.3.1 静态分配方式
      • 3.2.2 动态分配方式
    • 3.4 设备分配管理中的数据结构
      • 3.4.1 设备、控制器与通道之间的关系
      • 3.4.2 设备控制表(DCT,Device Control Table)
      • 3.4.3 控制器控制表(COCT,Controller Control Table)
      • 3.4.4 通道控制表(CHCT,Channel Control Table)
      • 3.4.5 系统设备表(SDT,System Device Table)
    • 3.5 设备分配的步骤
      • 3.5.1 描述
      • 3.5.2 存在的缺点
      • 3.5.3 如何解决
    • 3.6 改进的设备分配方法
      • 3.6.1 描述
      • 3.6.2 逻辑设备表(LUT)
    • 3.7 总结
  • 4 缓冲区管理
    • 4.1 总览
    • 4.2 缓冲区的定义与作用
      • 4.2.1 什么是缓冲区
      • 4.2.2 缓冲区的作用
    • 4.3 单缓冲管理方法
      • 4.3.1 什么是单缓冲策略
      • 4.3.2 注意
      • 4.3.3 CPU处理一块数据的平均时间
    • 4.4 双缓冲管理方法
      • 4.4.1 什么是双缓冲
      • 4.4.2 CPU处理一块数据的平均时间
    • 4.5 使用单/双缓冲在通信时的区别
      • 4.5.1 使用单缓冲
      • 4.5.2 使用双缓冲
    • 4.6 循环缓冲区
      • 4.6.1 解释
      • 4.6.2 示意图
    • 4.7 缓冲池
      • 4.7.1 解释
      • 4.7.2 工作流程
    • 4.8 总结
  • 5 总结


1 I/O核心子系统——概述

1.1 核心子系统要完成的功能

1.1.1 假脱机技术

1.1.2 I/O调度

即各种调度算法。

1.1.3 设备保护

操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限(如:只读、读和写等)。
在UNIX系统中,设备被看做是一种特殊的文件,每个设备也会有对应的FCB。当用户请求访问 某个设备时,系统根据FCB中记录的信息来判断该用户是否有相应的访问权限,以此实现“设备保护”的功能

1.1.4 设备分配与回收

1.1.5 缓冲区管理(缓冲与高速管理)

1.2 注意

2、3在之前的笔记中已经介绍过,后面的笔记主要介绍1、4、5

2 SPOOLing技术

2.1 总览

image1

2.2 什么是脱机技术

2.2.1 概述

在早期的操作系统中,计算机处于手工操作阶段:主机直接从 I/O设备获得数据,由于设备速度慢,主机速度很快。人机速度矛盾明显,主机要浪费很多时间来等待设备

2.2.2 脱机技术的流程

在外围控制机的控制下, 慢速输入设备的数据先被输入到更快速的磁带上。 之后主机可以从快速的磁带上读入数据。输出过程类似。

2.2.3 示意图

image2

2.2.4 脱机技术的优点

image3

2.3 假脱机技术(SPOOLing)

2.3.1 示意图

image4

2.3.2 解释

(1)输入进程、输出进程相当于脱机技术中的外围处理机
(2)输入井、输出井相当于脱机技术中的高速磁带
(3)在用户输入时,输入进程在内存中开辟一块临时区域存放用户输入的数据,在输入完成后再将数据复制到输入井中。输出过程同理。
(4)之所以叫假脱机是因为它采用的是脱机技术的原理,但是用软件的方式实现。

2.4 假脱机技术的应用

2.4.1 背景

打印机属于一种慢速的I/O设备,同时也属于临界资源,同一时间只可以有一个进程使用。但是实际生活中,我们通常是连续传入好几个文件。

2.4.2 实现原理

image5

2.5 总结

image6

3 设备的分配与回收

3.1 总览

image1

3.2 设备分配时应该考虑的因素

3.2.1 设备的固有属性

image2

3.2.2 设备分配算法

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

3.2.3 设备分配中的安全性

(1)安全分配方式
①解释
为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒
②例子
进程使用打印机时,该进程被阻塞,只有当进程要求打印的数据全部打印完成后该进程才可以去进行其他的操作。
③优缺点
image3

(2)不安全分配方式
①解释
进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞
②例子
进程申请使用打印机时,之需将数据传入内核中,就可以继续去进行另外的工作。
③优缺点
image4

3.3 设备分配方式

3.3.1 静态分配方式

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

3.2.2 动态分配方式

进程运行过程中动态申请设备资源

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

3.4.1 设备、控制器与通道之间的关系

一个通道可控制多个设备控制器,每个设备控制器可控制多个设备。
示意图:
image5

3.4.2 设备控制表(DCT,Device Control Table)

(1)解释
系统为每个设备配置一张DCT,用于记录设备情况
(2)示意图
image6

3.4.3 控制器控制表(COCT,Controller Control Table)

(1)解释
每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器
进行操作和管理
(2)示意图
image7

3.4.4 通道控制表(CHCT,Channel Control Table)

(1)解释
每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和
管理。
(2)示意图
image8

3.4.5 系统设备表(SDT,System Device Table)

(1)解释
记录了系统中全部设备的情况,每个设备对应一个表目。
(2)示意图
image9

3.5 设备分配的步骤

3.5.1 描述

image10

3.5.2 存在的缺点

image11

3.5.3 如何解决

image12

3.6 改进的设备分配方法

3.6.1 描述

image13

3.6.2 逻辑设备表(LUT)

(1)解释
类似于快表。系统在查找用户需要的逻辑设备的时候,首先会查看LUT,当该设备不在其中时再去SDT中查找,之后将该设备添加到LUT中,以便用户下次快速查找。

(2)示意图
image14

(3)逻辑设备表的功能

image15

(4)逻辑设备表的设置

image16

3.7 总结

image17

4 缓冲区管理

4.1 总览

image1

4.2 缓冲区的定义与作用

4.2.1 什么是缓冲区

image2

4.2.2 缓冲区的作用

image3
解释
①CPU是高速的,I/O设备一般而言是低速的。
进行写操作时,CPU快速的将数据放入缓冲区就可以去做其他的事情了,在这个时间内I/O设备可以慢慢的读取缓冲区的内容。
相反的,进行读操作时,I/O设备可以先将数据放入缓冲区内,之后再让CPU快速的读取
②联系I/O控制方式中的直接控制
③输出进程可以一次生成一块数据,而I/O设备每次只可以输入一个字符
④CPU无须一直等待I/O设备的输入输出

4.3 单缓冲管理方法

4.3.1 什么是单缓冲策略

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。

4.3.2 注意

(1)当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时, 可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
(2)用户进程的内存空间中,会分出一片工作区来接受输入/输出数据(一般也默认工作区大小与缓冲区相同)。

4.3.3 CPU处理一块数据的平均时间

在“单缓冲”题型中,可以假设初始状态为工作区满,缓冲区空。则下一次状态又回到工作区满,缓冲区空的过程中所耗费的时间就是CPU处理一块数据的平均时间。
(1)假设I/O设备将数据输入到缓冲区中所耗费的时间为T,用户进程将数据从缓冲区读入到工作区所耗费的时间为M,CPU处理数据的时间为C。如图所示。注意同一时刻只可以有一个进程操作缓冲区。
image4
(2)当T>C时,整个过程如下图所示。则总耗时为T+M
image5
(3)当T<C时,整个过程如下图所示。则总耗时为C+M
image6
(4)因此总结可得:
采用单缓冲策略,处理一块数据平均耗时 Max(C, T)+M

4.4 双缓冲管理方法

4.4.1 什么是双缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)

4.4.2 CPU处理一块数据的平均时间

(1)假设初始状态为:工作区空,其中一个缓冲区满,另一个缓冲区空。则示意图如下所示。
image7

(2)当T>C+M时,整个工作流程如图所示。处理一块数据的平均用时= T
image8

(3)当T<C+M时,整个工作流程如图所示。
image9
可以看到,在T时刻,缓冲区2已经被充满,但是工作区中的数据还没有被完全处理完。假如2T<2M+C,则当工作区中的数据被处理完之后,缓冲区1又被I/O设备冲入了数据。可以看出,此时我们很难找到一个时刻,可以恢复到初始状态——工作区空,其中一个缓冲区满,另一个缓冲区空。
但是总而言之:
image10

(4)此时我们可以得到结论:
采用双缓冲策略,处理一个数据块的平均耗时为 Max (T, C+M)

4.5 使用单/双缓冲在通信时的区别

4.5.1 使用单缓冲

示意图如图所示。很显然,若两个相互通信的机器只设置单缓冲区,在任一时刻只能实现数据的单向传输。
image11

4.5.2 使用双缓冲

示意图如图所示。若两个相互通信的机器设置双缓冲区,一个缓冲区用来存储发送的数据,另一个缓冲区用来存储接收的数据。则同一时刻可以实现双向的数据传输
image12

4.6 循环缓冲区

4.6.1 解释

将多个大小相等的缓冲区链接成一个循环队列。系统维护一个in指针和一个out指针。in指针指向的缓冲区可以向其中填入数据,out指针指向的缓冲区可以从里面取出数据。

4.6.2 示意图

image13

4.7 缓冲池

4.7.1 解释

image14
缓冲队列的示意图如图所示
image15

缓冲池的示意图如图所示
image16

4.7.2 工作流程

(1)输入进程请求输入数据
系统从空缓冲队列中取下一块缓冲区放入收容输入区(hin),进程可以向其中输入数据,待进程输入完成后,系统再将该充满数据的缓冲区挂到输出队列的队尾(输入数据的目的肯定是将数据输出)。

(2)计算进程想要取得一块输入数据
系统从输入队列中取得一块冲满输入数据的缓冲区作为“提取输入数据的工作缓冲区(sin)”。待进程将缓冲区读空后,系统再将空缓冲区挂到空缓冲区队列队尾。

(3)计算进程想要将准备好的数据冲入缓冲区。
系统从空缓冲队列中取出一块作为“收容输出数据的工作缓冲区(hout)”。待进程将数据冲满后,再将缓冲区挂到输出队列队尾,准备输出。

(4)输出进程请求输出数据
系统从输出队列中取得一块冲满输出数据的缓冲区作为“提取输出数据的工作缓 冲区(sout)”。待进程将缓冲区读空后,再将空缓冲区挂到空缓冲区队列的队尾。

4.8 总结

image17

5 总结

本文PDF文件下载链接:提取码:ikun

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Task定时任务

目录 1、介绍 2、cron表达式 2.1、在线生成器 2.2、通配符 3、代码示例 3.1、使用步骤 3.2、 代码开发 3.3、测试 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发…

HTTP基本概念-HTTP缓存技术

大家好我是苏麟 , 今天说说HTTP缓存技术 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTP缓存技术 HTTP 缓存有哪些实现方式? 对于一些具有重复性的 HTTP 请求&#xff0c;比如每次请求得到的数据都一样的&#xff0c;我们可以把这对「请求-响…

重磅!OpenAI发布文生视频模型Sora——视频模型的奇点或许来临!!

文章目录 1 卓越能力1.1 60s超长时间 高度详细复杂的场景1.2 复杂的相机运动1.3 同一场景多个镜头 2 技术原理3 不足4 安全战略5 碎碎念 OpenAI发布文生视频模型Sora——视频模型的奇点或许来临&#xff01;&#xff01; 初七啦&#xff0c;得开始工作了&#xff0c;没想到第一…

蓝桥杯真题:距离和

import java.util.*; public class 距离和 {public static void main(String[] args){String st"LANQIAO";int ans0;char ch[]st.toCharArray();for(int i0;i<ch.length;i){for(int ji1;j<ch.length;j){ansMath.abs(ch[j]-ch[i]);}}System.out.println(ans);} …

2.12日学习打卡----初学RocketMQ(三)

2.12日学习打卡 目录&#xff1a; 2.12日学习打卡一. RocketMQ高级特性&#xff08;续&#xff09;消息重试延迟消息消息查询 二.RocketMQ应用实战生产端发送同步消息发送异步消息单向发送消息顺序发送消息消费顺序消息全局顺序消息延迟消息事务消息消息查询 一. RocketMQ高级特…

【C++】友元、内部类和匿名对象

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 1. 友元 1.1 友元函数 1.2 友元类 2. 内部类 2.1 成员内部类 2.2 局部内部类 3. 匿名对象 1. 友元 友元提供了一种突破封装…

yarl,一个强大的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个强大的 Python 库 - yarl。 Github地址&#xff1a;https://github.com/aio-libs/yarl Python 中的 yarl 库是一个强大的工具&#xff0c;用于处理 URL&#xff08;统一资源定位符&#xff09…

行测考试怎么搜题找答案?用这5款神器就够了!!! #职场发展#媒体

以下软件拥有强大的搜索功能&#xff0c;能够快速找到与题目相关的资料和答案&#xff0c;让大学生们更容易理解和掌握知识点。 1.GT4T 可在14万个语言对间进行翻译。GT4T不仅能在任何窗口获得所选内容的翻译建议&#xff0c;还也可批量翻译Office、PDF、CAT、Markdown、Asci…

事务及在SpringBoot项目中使用的两种方式

1.事务简介 事务&#xff08;transaction&#xff09;是访问并可能操作各种数据项的一个数据库操作序列&#xff0c;这些操作要么全部执行&#xff0c;要么全部不执行&#xff0c;是一个不可分割的工作单位。 事物的四大特性: 原子性&#xff08;Atomicity&#xff09;&#xf…

【智能家居入门4】(FreeRTOS、MQTT服务器、MQTT协议、微信小程序)

前面已经发了智能家居入门的1、2、3了&#xff0c;在实际开发中一般都会使用到实时操作系统&#xff0c;这里就以FreeRTOS为例子&#xff0c;使用标准库。记录由裸机转到实时操作系统所遇到的问题以及总体流程。相较于裸机&#xff0c;系统实时性强了很多&#xff0c;小程序下发…

相机图像质量研究(17)常见问题总结:CMOS期间对成像的影响--靶面尺寸

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

用EL操作JAVABEAN属性

用EL操作JAVABEAN属性 问题陈述 Smart SoftWare Inc.想要开发一款维护雇员数据(例如姓、名字、职位)的Web应用程序。该组织决定将雇员数据存储在一个JavaBean中。另外,它还希望该Web应用程序能让用户从此JavaBean中检索数据并用JSP页面和EL显示。 解决方案 要解决上述问题…

.net和jar包windows服务部署

一.NetCore 1.创建启动脚本run_instal.bat,例如程序文件为ApiDoc.exe set serviceName"Apidoc Web 01" set serviceFilePath%~dp0ApiDoc.exe set serviceDescription"ApiDoc 动态接口服务 web 01"sc create %serviceName% BinPath%serviceFilePath% sc c…

【JavaEE】_文件与IO

目录 1.文件概述 1.1 文件的概念 1.2 文件的存储 1.3 文件的分类 1.4 目录结构 1.5 文件操作 1.5.1 文件系统操作 1.5.2 文件内容操作 2. Java文件系统操作 2.1 File类所处的包 2.2 构造方法 2.3 方法 2.3.1 与文件路径、文件名有关的方法 2.3.2 文件是否存在与普…

新时代异步 IO 框架:IO_URING 的原理、用法、业界示例分析

文章目录 IO_URING基本介绍常见 I/O 模型IO_URING 原理核心结构工作模式高级特性 用法APIliburing基本流程Demo 业界示例SeaStar / ScyllaDBCEPHRocksDBClickHouse IO_URING 基本介绍 常见 I/O 模型 当前 Linux 的几种 I/O 模型&#xff1a; I/O 模型 同步 I/O 是目前应用最…

2024.2.10 HCIA - Big Data笔记

1. 大数据发展趋势与鲲鹏大数据大数据时代大数据的应用领域企业所面临的挑战和机遇华为鲲鹏解决方案2. HDFS分布式文件系统和ZooKeeperHDFS分布式文件系统HDFS概述HDFS相关概念HDFS体系架构HDFS关键特性HDFS数据读写流程ZooKeeper分布式协调服务ZooKeeper概述ZooKeeper体系结构…

【C++】C++11上

C11上 1.C11简介2.统一的列表初始化2.1 {} 初始化2.2 initializer_list 3.变量类型推导3.1auto3.2decltype3.3nullptr 4.范围for循环5.final与override6.智能指针7. STL中一些变化8.右值引用和移动语义8.1左值引用和右值引用8.2左值引用与右值引用比较8.3右值引用使用场景和意义…

GPU独显下ubuntu屏幕亮度不能调节解决方法

GPU独显下屏幕亮度不能调节&#xff08;假设你已经安装了合适的nvidia显卡驱动&#xff09;&#xff0c;我试过修改 /etc/default/grub 的 GRUB_CMDLINE_LINUX_DEFAULT"quiet splash acpi_backlightvendor" &#xff0c;没用。修改和xorg.conf相关的文件&#xff0c;…

【python】类创建、实例化和调用类方法、子类、继承、私有属性、静态方法

一、类属性&#xff1a;定义在类中函数外的属性;self代表类的实例。 其中 number属于类属性&#xff0c;name、age属于实例属性&#xff1b;实例属性一般在初始函数中定义。 class people:number300 #类属性def __init__(self,name,age):#初始化方法 左右两个下划线self.nam…

就是民族的气节

我们拥有一个名字叫中国 - 张明敏 一把黄土塑成千万个你我 静脉是长城 动脉是黄河五千年的文化是生生不息的脉搏&#xff08;齐楚燕韩赵魏秦&#xff09;提醒你 提醒我我们拥有个名字叫中国&#xff08;中原地区为主体&#xff0c;河南&#xff0c;山东&#xff0c;安徽&…
最新文章