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

news2024/11/15 3:39:45

第六章 输入输出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=

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

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

相关文章

c++的4中类型转换操作符(static_cast,reinterpret_cast,dynamic_cast,const_cast),RTTI

目录 引入 介绍 static_cast 介绍 使用 reinterpret_cast 介绍 使用 const_cast 介绍 使用 dynamic_cast 介绍 使用 RTTI(运行时确定类型) 介绍 typeid运算符 dynamic_cast运算符 type_info类 引入 原本在c中,我们就已经接触到了很多类型转换 -- 隐式类型转…

论文阅读——GPT3

来自论文:Language Models are Few-Shot Learners Arxiv:https://arxiv.org/abs/2005.14165v2 记录下一些概念等。,没有太多细节。 预训练LM尽管任务无关,但是要达到好的效果仍然需要在特定数据集或任务上微调。因此需要消除这个…

YOLOv5配置文件之 - yaml

在YOLOv5的目录中,models文件夹里存储了YOLO的模型配置。 ./models/yolov5.yaml 定义了YOLOv5s网络结构的定义文件 yaml的主要内容 参数配置 nc: 80 类别数量 depth_multiple: 0.33 模型深度缩放因子 width_multiple: 0.50 控制卷积特征图的通道个数 anchors配…

JSON(详解)

目录 什么是JSON? 哪里会用到JSON? JSON的特点 JSON的优点 JSON的缺点 JSON和cJSON的关系 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示…

Linux mkdir命令:创建目录(文件夹)

mkdir 命令,是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用。mkdir 命令的基本格式为: [rootlocalhost ~]# mkdir [-mp] 目录名 -m 选项用于手动配置所创建目录的权限,而不再使用默认权限。 -p…

shell算数运算指令、

1.shell算数运算的指令 (( )) $[ ] let expr expr的字符串运算 例子: 2.shell的if分支结构

1624. 两个相同字符之间的最长子字符串

1624. 两个相同字符之间的最长子字符串 java代码&#xff1a; class Solution {public int maxLengthBetweenEqualCharacters(String s) {int[] hash new int[26];Arrays.fill(hash, -1); // fill是Arrays静态方法int max -1;for (int i 0; i < s.length(); i) { // 对…

计算机毕业设计 基于SpringBoot大学生创新创业项目管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

ResNet简单解释

什么是Resnet&#xff1f; resnet是一种残差网络&#xff0c;简单看一下resnet的结构 上面是ResNet&#xff0c;下面是传统的 ResNet里的一小块就是这样的 为什么要引入ResNet&#xff1f; 理论上讲&#xff0c;随着网络加深&#xff0c;我们获取的信息越来越多多&#xff0…

C语言 每日一题 PTA 10.27 day5

1.高速公路超速处罚 按照规定&#xff0c;在高速公路上行使的机动车&#xff0c;达到或超出本车道限速的10 % 则处200元罚款&#xff1b; 若达到或超出50 % &#xff0c;就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。 输入格式 : 输入在一行中给出2个正…

构造类型详解及热门题型结构体大小的计算

在编写程序时&#xff0c;简单的变量类型已经不能满足程序中各种复杂数据的需求&#xff0c;因此c语言还提供了构造类型的数据&#xff0c;构造数据是有基本数据按照一定的规则组成的。 目录 结构体类型的概念 结构体变量的定义 结构体变量的初始化 结构体变量的引用 结构…

老年少女测试媛入职感想

作为一枚从事通信行业测试的老年少女测试媛&#xff0c;入职离职也有两三次了。现在又在一家企业入职了。虽然心里也清楚离职和入职&#xff0c;无非也就是从一个公司的坑里跳出来&#xff0c;再跳到另外一个公司的坑里罢了&#xff0c;明明知道老东家的坑是填不完的了&#xf…

【Java 进阶篇】Java Request 获取请求头数据详解

在Java Web开发中&#xff0c;获取HTTP请求的请求头数据是一项常见任务。HTTP请求的请求头包含了客户端发送给服务器的额外信息&#xff0c;这些信息对于服务器来说很重要&#xff0c;因为它们可以包含用户代理、授权信息、Cookies等内容。在Java中&#xff0c;可以使用HttpSer…

二分查找法(查找左右端点)

前言 本文将会向您介绍二分查找法&#xff08;查找左右端点&#xff09;&#xff0c;关于朴素的二分查找法已经在之前讲过了朴素二分查找您可以点此超链接 查找右端点 如果您仅仅是想要参考如何查找左右端点&#xff0c;可以直接跳转到下文的模板处 ps&#xff1a;以下是本…

Linux常用的指令(2023.10.27)

文章目录 查看目录下文件的大小虚拟环境相关删除虚拟环境多版本的cuda切换修改虚拟环境名称 文件的移动、删除和复制文件的复制文件的删除文件的移动 查看目录下文件的大小 du&#xff08;disk usage 磁盘使用率&#xff09;命令查看当前目录和子目录文件夹、文件大小情况 du …

YOLOv7优化:渐近特征金字塔网络(AFPN)| 助力小目标检测

💡💡💡本文改进:渐近特征金字塔网络(AFPN),解决多尺度削弱了非相邻 Level 的融合效果。 AFPN | 亲测在多个数据集能够实现涨点,尤其在小目标数据集。 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀…

开源投票系统源码至尊版带礼物道具 无限多开 盈利模式超丰富

网络投票系统已经成为各种活动、比赛、评选等场景中不可或缺的一部分。春哥团队开源投票系统源码至尊版是一种功能强大、灵活可定制的投票系统&#xff0c;不仅具有高度的安全性和稳定性&#xff0c;还支持多种盈利模式&#xff0c;含完整版代码包&#xff0c;支持投票礼物道具…

设备的分配与回收(考虑因素,数据结构,分配步骤)

目录 1.设备分配时应考虑的因素1.设备的固有属性2.设备分配算法3.设备分配中的安全性1.安全分配方式2.不安全分配方式 2.静态分配与动态分配3.设备分配管理中的数据结构1.“设备、控制器、通道”之间的关系2.设备控制表&#xff08;DCT)3.控制器控制表(COCT)4.通道控制表&#…

P1868 饥饿的奶牛

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

基于机器视觉的火车票识别系统 计算机竞赛

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖&#xff0c;适合作为竞赛…