计算机操作系统重点概念整理-第六章 输入输出I/O管理【期末复习|考研复习】

第六章 输入输出I/O管理【期末复习|考研复习】

计算机操作系统系列文章传送门:
第一章 计算机系统概述
第二章 进程管理
第三章 进程同步
第四章 内存管理
第五章 文件管理
第六章 输出输出I/O管理


文章目录

  • 第六章 输入输出I/O管理【期末复习|考研复习】
  • 前言
  • 六、输入输出I/O管理
    • 6.1 I/O设备
    • 6.2 I/O控制器的功能和组成
      • 6.2.1 I/O控制器的组成
      • 6.2.2 I/O控制器的功能
    • 6.3 I/O控制方式
      • 6.3.1 程序直接控制
      • 6.3.2 中断驱动方式
      • 6.3.3 DMA方式(Direct Memory access)直接存储器存取
      • 6.3.4 通道控制方式
      • 6.3.5 四种方式总结
    • 6.4 I/O软件层次结构
    • 6.5 缓冲区管理
      • 6.5.1 缓冲区含义和作用
      • 6.5.2 单缓冲
      • 6.5.3 双缓冲
      • 6.5.4 循环缓冲区和缓冲池
      • 6.5.5 高速缓存和缓冲区的区别
    • 6.6 设备的分配与回收
      • 6.6.1 设备分配的数据结构
      • 6.6.2 设备分配的步骤
      • 6.6.3 改进步骤
    • 6.7 SPOOLing技术
      • 6.7.1 输入输出井和输入输出缓冲区
      • 6.7.2 输入进程和输出进程
      • 6.7.3 SPOOLing技术的过程
  • 结语


前言

给大家整理了一下计算机操作系统中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王道的计算机操作系统和西电的计算机操作系统。


六、输入输出I/O管理

6.1 I/O设备

I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
按传输速率分类分为低速设备:键盘、鼠标;中速设备:行式打印机、激光打印机;高速设备:磁带机、磁盘机、光盘机等。
按信息交换的单位分类:块设备和字符设备。信息存储以数据块为单位表则是块设备,属于有结构设备,如磁盘。字符设备其传输的单位是字符,属于无结构类型,如交互式终端机打印机等,在输入输出时采用中断驱动方式。

6.2 I/O控制器的功能和组成

6.2.1 I/O控制器的组成

在这里插入图片描述

6.2.2 I/O控制器的功能

1、接收和识别CPU发出的指令(read/write。I/O控制器中控制寄存器来存放参数和命令);2、向CPU报告设备的状态(记录在状态寄存器中。1表示空闲,0表示忙碌);3、数据交换(数据暂时存储在数据寄存器中用来供CPU暂存和取走);4、地址识别(区分各个寄存器)。

6.3 I/O控制方式

6.3.1 程序直接控制

计算机从外部设备读取数据到存储器,每读一个字的数据。对读入的每一个字,CPU都要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中。
写的过程:CPU通过控制线发出I/O指令,通过地址线发出要操纵的是哪个设备,通过数据总线将要输出的数据放入到I/O控制器中的数据寄存器中,另外要注意CPU指令中的参数也是通过数据总线放入到控制器的控制寄存器中.CPU也会从控制器中的状态寄存器读出设备此时的状态(例:空闲还是被占用).之后I/O逻辑通过与设备的接口将CPU送过来的数据输出到相应的设备中.数据的流向:
读:I/O设备-》CPU-》内存;写:内存-》CPU》I/O设备
CPU的干预频率:一直轮询。数据传送的单位:一个字
优点:简单;缺点:CPU和I/O只能串行工作,CPU要一直轮询检查,长期处于忙等状态,CPU利用率低。

6.3.2 中断驱动方式

引入中断机制,因此在CPU发出读或写命令时,可将等待I/O的进程阻塞,先切换别的进程执行,当I/O完成后控制器会向CPU发出一个中断信号,CPU检测到中断信号后会保存当前进程的运行环境,去转而执行中断处理程序处理该中断,处理中断过程中CPU从I/O控制器读一个字的数据传输到CPU寄存器,再写入主存。接着CPU恢复等待I/O的进程的运行环境然后继续执行。
读:I/O设备-》CPU-》内存;写:内存-》CPU》I/O设备
CPU的干预频率:I/O操作开始前和完成后要CPU介入,等待I/O时CPU切换别的进程执行。数据传送的单位:一个字
优点:CPU和I/O可以并行工作,CPU利用率提升;缺点:I/O设备和内存之间的传输都要经过CPU,频繁的中断处理会消耗较多的CPU时间。

6.3.3 DMA方式(Direct Memory access)直接存储器存取

主要用于块设备的I/O控制
数据的传送单位时块。数据的流向是从设备直接存放内存或者从内存直接到设备不需要CPU作为中间。仅在传送一个或多个数据块的开始和结束时才需要CPU干涉。在开始时CPU指明此次要进行的操作,如读操作并说明要读入多少数据,存放在内存中什么位置以及数据在外部设备上的地址,如磁盘上的地址。DMA控制器会根据CPU提出的要求完成读写工作,整块数据传输完成后才向CPU发出中断信号。
DMA中设置四类寄存器
在这里插入图片描述

优点:数据传输以块为单位,CPU介入频率降低,数据传输效率增加,CPU和I/O设备的并行性提高;缺点:如果要读多个离散的数据块,要多次中断才能完成。

6.3.4 通道控制方式

解决DMA方式连续存储的问题。通道是一种硬件,简化版CPU,可以识别的执行一系列通道指令。
CPU干预的频率:极低。通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读写后才发出中断信号请求CPU干预。数据传输的单位:一组数据块。数据的流向在通道的控制下进行读写分别由I/O设备到内存和内存到I/O设备。
优点CPU、通道、I/O设备可并行工作,资源利用率高。缺点实现复杂需要专门的通道硬件支持。

6.3.5 四种方式总结

在这里插入图片描述

6.4 I/O软件层次结构

在这里插入图片描述
用户层I/O软件:实现与用户交互的接口,用户可以直接调用在用户层提供的与I/O操作相关库函数对设备进行操作。(假脱机技术-SPOOLing技术)
以下四层为I/O软件的层次:以下三层为I/O系统I/O核心子系统。
设备独立性软件:用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护、设备分配与释放等,同时为设备管理和数据传输提供必要的存储空间。设备独立性使应用程序独立于具体使用的物理设备。为实现设备独立性而引入逻辑设备和物理设备这2个概念,在应用程序中使用逻辑设备名来请求使用某类设备,而在系统执行时必须将逻辑设备并映射成物理设备并使用。使用逻辑设备名的好处:1、增加设备分配的灵活性;2、易于实现I/O重定向,所谓I/O重定向是指用于I/O操作的设备可以更换而不改变应用程序。为了实现设备独立性必须在驱动程序上设置1层设备独立性软,设备独立性软件的主要功能可以分为以下2个方面:1、执行所有设备的公有操作;2、向用户层提供统一的接口(read/write调用)。(I/O调度、设备保护、设备分配与回收、缓冲区管理 )
设备驱动程序:与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。
中断处理程序:用于保存被中断进程的CPU环境,转入相应的中断处理程序,处理完并恢复被中断进程的现场后,返回到被中断的进程。
硬件设备:IO设备通常包括一个机械部件和电子部件,为了达到设计的模块性和通用性,一般将其分开电子部件称为设备控制器或适配器,通常是电路板,而机械部件则是设备本身。

6.5 缓冲区管理

6.5.1 缓冲区含义和作用

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可利用内存作为缓冲区。一般情况下,更多的是利用内存作为缓冲区,“设备独立性软件”的缓冲区管理就是要组织管理好这些缓冲区。
作用:1、缓和CPU与I/O设备之间速度不匹配的矛盾。2、减少CPU的中断频率,放宽对CPU中断响应的时间限制。3、解决数据粒度不匹配的问题。4、提高CPU与I/O设备之间的并行性。

6.5.2 单缓冲

当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。
在这里插入图片描述

处理一块数据平均时间Max(C,T)+M

6.5.3 双缓冲

采用双缓冲策略,处理一个数据块的平均耗时为Max (T,C+M)。

6.5.4 循环缓冲区和缓冲池

循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列。
缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状况可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)。又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout) 、用于提取输出数据的工作缓冲区(sout)。
在这里插入图片描述

6.5.5 高速缓存和缓冲区的区别

在这里插入图片描述

6.6 设备的分配与回收

从设备特性来看采用下述3种使用方式的设备分别称为独占设备、共享设备和虚拟设备。独占使用设备:在申请设备时,若设备空闲则将其独占,不允许其他进程申请使用,直至设备被释放才允许其他进行申请使用,如打印机。分时共享设备:独占使用设备时,设备利用率很低,通过分时共享来提高利用率,如磁盘设备的I/O操作,每个进程的I/O请求可以通过分时来交替进行。以SPOOLing技术方式使用外部设备,即假脱机I/O技术,实质上是对I/O操作进行批处理。

6.6.1 设备分配的数据结构

设备分配依据的主要数据结构有设备控制表DCT ,控制器控制表COCT,通道控制表CHCT和系统设备表SDT。 设备控制表DCT,一个设备控制表就表征一个设备,而这个控制表中的表项就是设备的各个属性。设备控制器控制设备与内存交换数据而设备控制器又需要请求通道为他服务,因此每个控制器控制表COCT中必有一个表项存放指向相应通道控制表CHCT的指针,一个通道可为多个设备控制器服务,因此CHCT与COCT的关系是一对多的关系。系统设备表SDT,整个系统只有一张SDT,它记录已连接到系统中所有物理设备的情况,每个物理设备占一个表目。

6.6.2 设备分配的步骤

①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
注∶只有设备、控制器、通道三者都分配成功时,这次设备分配才算成功,之后便可后动/O设备进行数据传送。
缺点:①用户编程时必须使用“物理设备名”,底层细节对用户不透明,不方便编程。②若换了一个物理设备,则程序无法运行。③若进程请求的物理设备正在忙碌,则即使系统中还有同类型的设备,进程也必须阻塞等待。
改进方法:建立逻辑设备名与物理设备名的映射机制,用户编程时只需提供逻辑设备名。

6.6.3 改进步骤

为了提高设备分配的灵活性和设备的利用率方便实现IO重定向引入设备独立性,设备独立性是指应用程序独立于具体使用的物理设备。设备独立性软件需要通过“逻辑设备表(LUT,Logical UnitTable)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。操作系统系统可以采用两种方式管理逻辑设备表(LUT) :
第一种方式,整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统。第二种方式,为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中。

6.7 SPOOLing技术

为了缓和CPU的高速性能与I/O设备低速性之间的矛盾引入了脱机输入输出技术。该技术利用专门的外围控制器将低速I/O设备上的数据传输到高速磁盘上。

6.7.1 输入输出井和输入输出缓冲区

输入井和输出井是指在磁盘上开辟的2个存储区域:输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据;输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据。输入缓冲区和输出缓冲区是在内存中开辟的2个缓冲区:输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井中,输出缓冲区是用于暂存从输出井送来的数据,以后再传送到输出设备上。

6.7.2 输入进程和输出进程

输入进程模拟脱机输入时的外围控制器将用户要求的数据从输入机通过输入缓冲再送到输入井。输出进程模拟脱机输出时的外围控制机把用户要求输出的数据先从内存送到输出井,待输出设备空闲时再将输出井中的数据经过输出缓冲区送到输出设备。

6.7.3 SPOOLing技术的过程

1、由输出进程在输出井中为之申请一个空闲磁盘块区并将要打印的数据送入其中;2、输出进程在为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中再将该表挂到请求打印队列上。
SPOOLling系统的主要特点有提高了I/O的速度,将独占设备改造为共享设备实现了虚拟设备功能。

结语

计算机操作系统的重点概念已经复习结束啦,菠菠萝宝祝大家期末高分,考研一战成硕,考上心仪的学校!=V=

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

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

相关文章

决策树完成图片分类任务

数据集要求: 训练集 和 验证集 (要求分好) 图片放置规则 : 一个总文件夹 放类别名称的子文件夹 其中子文件夹 为存放同一类别图片 举个例子 分类动物 则 总文件夹名称为动物 子文件夹为 猫 狗 猪猪 。。。 其中猫的文件夹里面…

在windows服务器上部署一个单机项目以及前后端分离项目

目录 一. 单机项目在windows服务器上的部署 1.1 在本机上测试项目无误 1.1.1 在数据库中测试sql文件没问题 1.1.2 在tomcat中测试war文件无误 1.1.3 测试完成后,进入浏览器运行单机项目确保无误 1.2 在windows服务器中运行项目 二. 前后端分离项目在服务器上…

ChatGLM系列二:ChatGLM2的介绍及代码实践

一、介绍 2023年06月25日,清华大学开源了 ChatGLM2-6B 模型,是 ChatGLM 模型的升级版本。ChatGLM2-6B 在多个方面有显著提升:模型性能更强,在各种测试集上的表现更好;支持更长的上下文,最大上下文长度提升…

【Ubuntu 终端终结者Ctrl shift e无法垂直分页解决办法】

Ubuntu 终端终结者Ctrl shift e无法垂直分页解决办法 错误原因解决办法 错误原因 这是因为ibus输入法有一个快捷键占用了这个终端终结者的快捷键 解决办法 打开命令行输入 ibus-setup进入到如下页面随后将其中的表情注释的快捷键删除即可

postman接收后端返回的文件流并自动下载

不要点send,点send and download,postman接受完文件流会弹出文件保存框让你选择保存路径

【Linux】MAC帧协议 + ARP协议

文章目录 📖 前言1. 数据链路层2. MAC帧格式3. 再谈局域网4. ARP协议4.1 路由器的转发过程:4.2 ARP协议格式: 5. 如何获得目的MAC地址 📖 前言 在学完网络层IP协议之后,本章我们将继续向下沉一层,进入到数…

ARM,汇编指令

一、汇编指令 1、搬移指令 mov r0 ,#3 mov r1,r0 msr cpsr,r0 mrs r0,cpsr 2、条件执行及标志位 cmp moveq movgt 3、机器码 1)、立即数合法性 2)、立即数不合法 ldr r0,0x12345678 伪指令解决不合法的问题 前4位表示16个数,一个数移动2次。 …

C# Socket通信从入门到精通(4)——多个异步TCP客户端C#代码实现

前言: 在之前的文章C# Socket通信从入门到精通(3)——单个异步TCP客户端C#代码实现我介绍了单个异步Tcp客户端的c#代码实现,但是有的时候,我们需要连接多个服务器,并且对于每个服务器,我们都有一些比如异步连接、异步发送、异步接收的操作,那么这时候我们使用之前单个…

代码随想录 | Day56

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.最长公共子序列2.不相交的线3.最大子数组和 今日心得学习及参考书籍 今日学习目标 最长公共子序列(1143) 不相交的…

LVS集群-DR模式

概念: LVS-DR模式,也是最常用的lVS负载方式,DR DIRECT ROUTING 直接路由模式 负载均衡器lVS调度器,只负责请求和转发到后端的真实服务器,但是影响结果,由后端服务器直接转发给客户端,不需要经…

Chimera:混合的 RLWE-FHE 方案

参考文献: [HS14] S. Halevi and V. Shoup. Algorithms in HElib. In Advances in Cryptology–CRYPTO 2014, pages 554–571. Springer, 2014.[HS15] S. Halevi and V. Shoup. Bootstrapping for HElib. In Advances in Cryptology–EUROCRYPT 2015, pages 641–6…

【vue3 】 创建项目vscode 提示无法找到模块

使用命令创建 vue3 创建新应用 npm create vuelatest会看到一些可选功能的询问? √ 请输入项目名称: … vue-project √ 是否使用 TypeScript 语法? … 否 / 是 √ 是否启用 JSX 支持? … 否 / 是 √ 是否引入 Vue Router 进行单…

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台,借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为:Version 2.428 SonarQube版本为:Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…

Python —— UI自动化用例前置处理日志封装

1、UI自动化用例增加前置 1、fixture(夹具)的使用 前置顾名思义是在执行测试用例之前做的一些事情,在自动化测试时会碰到用例执行前需要做一些前置操作,以及用例执行后需要做一些后置操作,比如登录、退出等&#xff…

Leetcode—80.删除有序数组中的重复项II【中等】

2023每日刷题&#xff08;十&#xff09; Leetcode—80.删除有序数组中的重复项II 双指针实现代码 int removeDuplicates(int* nums, int numsSize){int i 0;int j 1;int k 1;int tmp nums[i];while(j < numsSize) {if(nums[j] tmp && k < 2) {nums[i] n…

YOLOv5— Fruit Detection

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第7周&#xff1a;咖啡豆识别&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https…

P1868 饥饿的奶牛

根据题意可以知道是一个动态规划&#xff0c;看完数据范围之后可以知道是一个线性DP。 解决方法有点类似于背包问题&#xff0c;枚举背包的每一个空间。 如果把坐标轴上每个点都看成一个块儿&#xff0c;只需要按顺序求出前 i 个块儿的最大牧草堆数&#xff0c;f[i] 就是前i的…

【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》

在软考中软件工程模块主要包含以下考点&#xff1a; 文章目录 软件过程模型&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;逆向工程&#x1f31f;基于构件的软件工程&#x1f31f;&#x1f31f;软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…

支持向量机(SVM)

一. 什么是SVM 1. 简介 SVM&#xff0c;曾经是一个特别火爆的概念。它的中文名&#xff1a;支持向量机&#xff08;Support Vector Machine, 简称SVM&#xff09;。因为它红极一时&#xff0c;所以关于它的资料特别多&#xff0c;而且杂乱。虽然如此&#xff0c;只要把握住SV…