第5章 输入/输出(I/O)管理

news2024/11/27 12:39:41

 

 

  • 5.1 I/O管理概述
    • 5.1.1 I/O设备

      • I/O设备的分类(按使用特性分类)
      • I/O设备的分类(按传输速率分类)
      • I/O设备的分类(按信息交换的单位分类)

    • 5.1.2 I/O控制方式

      • 有4种:

        • 1. 程序直接控制方式
        • 2. 中断驱动方式
        • 3. DMA方式
        • DMA方式的特点
        • (1)基本单位是数据块。
        • (2)所传送的数据,是从I/O设备直接送入内存,或者相反。
        • (3)仅在传送一个或多个数据块的开始和结束时,才需要CPU的干预,整块数据的传送是在DMA控制器下完成的。
        • DMA控制器的组成
        • (1)命令/状态寄存器(CR)。
        • (2)内存地址寄存器(MAR)。
        • (3)数据寄存器(DR)。
        • (4)数据计数器(DC)。
        • DMA方式与中断驱动方式的主要区别
        • 4. 通道控制方式
        • I/O通道与DMA方式的主要区别
        • I/O通道与一般处理机的区别:通道指令的类型单一;没有自己的内存,通道所执行的通道程序放在主机的内存中(即通道与CPU共享内存)。
      • 总结比较
    • 5.1.3 I/O子系统的层次结构

      • I/O子系统的层次结构
      • (1)用户层I/O软件。实现与用户交互接口。
      • (2)设备独立性软件。用于实现用户程序与设备驱动器的统一接口、设备命令、设备保护,以及设备分配与释放等,同时也为设备管理和数据传送提供必要的存储空间。
      • 设备独立性软件的主要功能可分为以下两个方面:
      • ①执行所有设备的公有操作。包括:对设备的分配与回收;逻辑设备名映射为物理设备名;对设备进行保护,禁止用户直接访问设备;缓冲管理;差错控制;提供独立于设备的大小统一的逻辑块, 屏蔽设备之间信息交换单位大小和传输速率的差异。
      • ②向用户层(或文件层)提供统接口。 无论何种设备,它们向用户所提供的接口应是相同的。例如,对各种设备的读/写操作,在应用程序中都统使用read/write命令等。
      • (3)设备驱动程序。与硬件直接相关,负责具体实现系统对设备发出的操作指令。
      • (4)中断处理程序。用于处理中断相关事项。
      • (5)硬件设备。包括一个机械部件(设备本身)和一个电子部件(设备控制器或适配器)。
      • 设备控制器的主要功能如下:
      • (1)接收和识别CPU或通道发来的命令,如磁盘控制器能接收读、写、查找等命令。
      • (2)实现数据交换,包括设备和控制器之间的数据传输;通过数据总线或通道,控制器和主存之间的数据传输。
      • (3)发现和记录设备及自身的状态信息,供CPU处理使用。
      • (4)设备地址识别。
      • 设备控制器送来的必须包含以下组成部分:
      • ①设备控制器与CPU的接口。该接口有三类信号线:数据线、地址线和控制线。数据线通常与两类寄存器相连:数据寄存器(存放从设备送来的输入数据或从CPU送来的输出数据)和控制/状态寄存器(存放从CPU送来的控制信息或设备的状态信息)。
      • ②设备控制器与设备的接口。设备控制器连接设备需要相应数量的接口,一个接口连接一台设备。每个接口中都存在数据、控制和状态三种类型的信号。
      • ③I/O控制逻辑。用于实现对设备的控制。它通过一组控制线与CPU交互,对从CPU收到的I/O命令进行译码。CPU启动设备时,将启动命令发送给控制器,同时通过地址线把地址发送给控制器,由控制器的I/O逻辑对地址进行译码,并相应地对所选设备进行控制。
  • 5.2 I/O核心子系统
    • 5.2.1 I/O子系统概述
      • I/O核心子系统提供的服务主要有:I/O调度、缓冲与高速缓存、设备分配与回收、假脱机、设备保护和差错控制。
    • 5.2.2 I/O调度概念
      • I/O调度就是确定一个好的顺序来执行这些I/O请求,减少I/O完成所需要的平均等待时间,提高计算机效率。
    • 5.2.3 高速缓存与缓冲区
      • 1. 磁盘高速缓存(Disk Cache)
        • 引入目的:提高磁盘的I/O速度,对高速缓存复制的访问要比原始数据访问更加高效。
        • 定义:磁盘高速缓存技术指利用内存中的存储空间来暂存从磁盘中读出的一系列盘块种的信息。 因此,磁盘高速缓存逻辑上属于磁盘,物理上则是驻留在内存种的盘块。
        • 高速缓存在内存中分为两种形式:
        • 一种是在内存中开辟一个单独的存储空间作为磁盘高速缓存,大小固定。
        • 另一种是把未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O时共享。
      • 2. 缓冲区(Buffer)

        • 引入目的:
        • (1)缓和CPU与I/O设备间速度不匹配的矛盾。
        • (2)减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
        • (3)解决基本数据单元大小不匹配的问题。
        • (4)提高CPU和I/O设备的并行性。
        • 实现方法:
        • (1)采用硬件缓冲器,成本太高,只在一些关键部位采用。
        • (2)采用缓冲区(位于内存区域)
        • 缓冲区特点:
        • 缓冲区数据非空时,不能放入数据,只能传出数据;
        • 缓冲区为空时,可以放入数据,但必须把缓冲区充满后,才能传出数据。
        • 根据系统设备缓冲器的个数,缓冲技术分为以下几类:
        • (1)单缓冲。
        • 思想:在设备和处理机之间设置一个缓冲区。设备和处理机交换数据时,先把被交换数据写入缓冲区,然后需要数据的设备或处理机从缓冲区取走数据。
        • 计算:单缓冲区处理每块数据的用时为MAX(C,T) + M。
        • T指的是将从磁盘将一块数据写入缓冲区的时间。
        • M是指将缓冲区的数据传送到用户区的时间。
        • C指的是CPU对这一块数据的处理时间。
        • 图示
        • (2)双缓冲。
        • 引入目的:根据单缓冲的特点,CPU在传送时间M内处于空闲状态,由此引入双缓冲。
        • 思想:I/O设备写入数据时先装填到缓冲区1,在缓冲区1满后才开始装填缓冲区2,与此同时处理机可以从缓冲区1中取出数据放入用户进程处理,当缓冲区1的数据处理完成时,缓冲区2已经填满,则处理机又从缓冲区2取出数据放入用户进程处理,而I/O设备又可以装填缓冲区1。双缓冲机制提高了处理机和输入设备的并行操作的程度。
        • 计算:双缓冲区处理一块数据的用时为MAX(C + M , T)。
        • T指的是将从磁盘将一块数据写入缓冲区的时间。
        • M是指将缓冲区的数据传送到用户区的时间。
        • C指的是CPU对这一块数据的处理时间。
        • 图示
        • (3)循环缓冲。
        • 思想:包含多个大小相等的缓冲区,每个缓冲区中有一个链接指针指向下一个缓冲区,最后一个缓冲区指向第一个缓冲区,多个缓冲区构成一个环形。
        • (4)缓冲池。
        • 组成:由多个系统公用的缓冲区组成,缓冲区按使用情况可以形成三个队列:空缓冲队列、装满输入数据的缓冲队列(输入队列)和装满输出数据的缓冲队列(输出队列)。还应有4种缓冲区:用于收容输入数据的工作缓冲区、用于提取输入数据的工作缓冲区、用于收容输出数据的工作缓冲区和用于提取输出数据的工作缓冲区。
        • 思想:当输入进程需要输入数据时,便从空缓冲队列的队首摘下一个空缓冲区, 把它作为收客输入工作缓冲区,然后把输入数据输入其中,装满后再将它挂到输入队列队尼。当计算进程需要输入数据时,便从输入队列取得. 个缓冲区 作为提取输入 工作缓冲区,计算进程从中提取数据,数据用完后再将它挂到空缓冲队列尾。当计算进程需要输出数据时,便从空缓冲队列的队首取得一个空缓冲区,作为收容输出工作缓冲区,当其中装满输出数据后,再将它挂到输出队列队尾。当要输出时,由输出进程从输出队列中取得一个装满输出 数据的缓冲区,作为提取输出工作缓冲区,当数据提取完后,再将它挂到空缓冲队列的队尾。
      • 3. 高速缓存与缓冲区的对比

        • 图表
    • 5.2.4 设备分配与回收
      • 1. 设备分配概述
        • 设备分配:是指根据用户的I/O请求分配所需的设备。
        • 分类(从设备的特性来分):
        • (1)独占式设备(独占设备):指申请设备时,若设备空闲则将其独占,不再允许其他进程申请使用,一直等到该设备被释放才允许其他进程申请使用。如打印机。
        • (2)分时式共享使用设备(共享设备):当设备没有独占使用的要求时,可以通过分时共享使用提高利用率。如对磁盘的I/O操作。
        • (3)以SPOOLing方式使用外部设备(虚拟设备):SPOOLing技术即假脱机技术,实质上就是对I/O操作进行批处理。 是一种以空间换时间的技术,而请求分页系统种的页面调度算法是一种以时间换空间的技术。
      • 2. 设备分配的数据结构

        • 设备分配依据的主要数据结构:设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)。

        • 设备控制表(DCT):一个设备控制表就表示一个设备,控制表的表项就是该设备的各个属性。每个设备由机械部件和电子部件(控制器)组成,故每个DCT都需要一个表项来表示控制器(电子部件),即需要一个指向控制器控制表(COCT)的指针,因此DCT与COCT具有一一对应的关系。
        • 控制器控制表(COCT):设备控制器控制设备与内存交换数据,而设备控制器又需要请求通道为它服务,故每个COCT必定有一个表项存放指向相应通道控制表(CHCT)的指针。
        • 通道控制表(CHCT):一个通道可以为多个设备控制器服务,因此CHCT种必定又一个指针指向一个表,这个表上的信息就是CHCT提供服务的那几个设备控制器,因此CHCT与COCT是一对多的关系。
        • 系统设备表(SDT):整个系统只有一张SDT,它记录已连接到系统中的所有物理设备的情况,每个物理设备占一个表目。
      • 3. 设备分配的策略 设备分配主要考虑的因素有:I/O设备的固有属性、I/O设备的分配算法、I/O设备分配的安全性以及I/O设备的独立性。对于独占设备,既可以采用动态分配方式又可以采用静态分配方式,往往采用静态分配方式。对于共享设备,一般采用动态分配方式,通常采用先请求先分配和优先级高者优先的分配算法。​​

        • (1)设备分配原则。
        • 分配的总原则:既要充分发挥设备的使用效率,又要避免造成进程死锁,还要将用户程序与具体设备隔离开。
        • (2)设备分配方式
        • 设备分配方式有静态分配和动态分配两种。
        • (3)设备分配算法
        • 常用的动态分配算法有:先请求先分配、优先级高者优先等。
      • 4. 设备分配的安全性

        • 设备分配的安全性:是指分配中应防止发生进程死锁。
      • 5. 逻辑设备名到物理设备名的映射
        • 设备独立性:是指应用程序独立于具体使用的物理设备。 即用户在编程时使用的设备与实际设备无关,在用户程序中只需指明I/O使用的设备类型即可。
        • 设备独立性的优点
        • (1)方便用户编程。
        • (2)使程序运行不受具体机器环境的限制。
        • (3)便于程序的移植。
        • 如何实现设备独立性:在应用程序中使用逻辑设备名来请求使用某类设备,在系统中设置一张逻辑设备表(LUT),用于将逻辑设备名映射为物理设备名。
        • LUT表项:包括逻辑设备名、物理设备名和设备驱动程序入口地址。
        • 具体使用:当进程用逻辑设备名来请求分配设备时,系统为它分配相应的物理设备,并在LUT中建立一个表项,以后进程再利用逻辑设备名请求I/O操作时,系统通过查找LUT来寻找相应的物理设备和驱动程序。
        • 系统中采用两种方式建立逻辑设备表(LUT)
        • (1)整个系统只设置一张LUT。所有进程的设备分配情况都记录在这张表中,因此不允许有相同的逻辑设备名,主要适用于单用户系统。
        • (2)为每个用户设置一张LUT。
    • 5.2.5 SPOOLing技术(假脱机技术)
      • 引入目的:为了缓和CPU的高速性与I/O设备低速性直接的矛盾。
      • SPOOLing技术:该技术利用专门的外围控制机,将低速I/O设备上的数据传送到高速磁盘上(或者相反),是操作系统中采用的一项将独占设备改造成共享设备的技术。
      • SPOOLing系统的组成
        • 1. 输入井和输出井
        • 输入井:指在磁盘上开辟出的一个存储区域,模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。
        • 输出井:指在磁盘上开辟出的一个存储区域,模拟脱机输出时的磁盘,用于收容用户程序输出的数据。
        • 2. 输入缓冲区和输出缓冲区
        • 输入缓冲区:是在内存中开辟的一个缓冲区,用于暂存由输入设备送来的数据,以后再传送到输入井。
        • 输出缓冲区:是在内存中开辟的一个缓冲区,用于暂存由输出井送来的数据,以后再传送到输出设备。
        • 3. 输入进程和输出进程
        • 输入进程:模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井。当CPU需要输入数据时,直接将数据从输入井读入内存。
        • 输出进程:模拟脱机输出时的外围控制机,将用户要求输出的数据从内存传送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区传到输出设备。
      • SPOOLing系统的主要特点:
        • 提高了I/O的速度;
        • 将独占设备改造为共享设备;
        • 实现了虚拟设备功能。
      • SPOOLing技术是如何以时间换空间的?
        • 牺牲空间:在内存划出一片作为输入/输出缓冲区,在磁盘划出一块作为输入/输出井。
        • 节省时间:磁盘是一种高速设备,与内存交换数据的速度优于打印机等中低速I/O设备,如果不采用SPOOLing技术,那么CPU要向打印机大于数据,打印机的速度比较慢,故CPU必须迁就打印机,等打印机把数据打印完才能做其他工作,浪费了CPU时间。但在SPOOLing技术下,CPU把打印机要输出的数据先输出到磁盘的输出井中(这个过程由输出进程控制),然后做其他事情,若打印机被占用,SPOOLing系统会把这个打印请求挂到等待队列上,待打印机空闲时把数据打印出来,向磁盘输出数据的速度比向打印机输出数据的速度快,故节省了时间。

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

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

相关文章

都是同样条件的mysql select语句,为什么读到的内容却不一样?

假设当前数据库里有下面这张表。 老规矩,以下内容还是默认发生在innodb引擎的可重复读隔离级别下。 大家可以看到,线程1,同样都是读 age > 3 的数据。第一次读到1条数据,这个是原始状态。这之后线程2将id2的age字段也改成了3。…

kubelet源码 删除pod(二)

kubelet源码 删除pod(二) 本文中含有k8s的一个bug,我也正在努力提交PR,不过会不会被merge就不清楚了。 kubernetes PR地址 pod_workers.go是主要处理pod变化的文件,在1.22版本后对这个文件进行了比较大的修改。把属…

[附源码]SSM计算机毕业设计基于SSM的酒店管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

QT 字符串操作常用接口函数

目录常见字符串处理函数空白字符串处理函数查询字符串数据字符串比较字符串的转换QT版本的STLQLinkedList和QVector的区别QT提供的STL命名风格的迭代器QMap和QHash经过该简单设置可以防止msvc环境下使用qdebug打印输出时出现中文乱码的问题。 #include "learn.h" #i…

长话短说:学习网络安全自学好还是报培训班?

无论你是大学生还是在职人员,想学网络安全时,都会面临两个选择,自学或者报班。报班通常太费钱,时间又不自由;自学又不知道如何下手,担心自己坚持不下来。怎么办? 我们先分析一下自学和培训班的…

【文本分类】《融合注意力和剪裁机制的通用文本分类模型》

阅读摘要:   针对实际场景中长短文本大量的情况,提出了双通道注意力机制与长文本裁剪机制来改进文本分类模型,最终提高了精度。 参考文献:   [1] 融合注意力和剪裁机制的通用文本分类模型 参考论文信息 论文名称:《…

第三版全球干旱指数和潜在蒸散数据发布

Robert J. Zomer ;JianchuXu;AntonioTrabucco(Kunming Institute of Botany, Chinese Academy of Science;Euro-Mediterranean Center on Climate Change, IAFES Division, Sassari, Italy) 摘要 潜在蒸散(Potential evapotranspiration&…

Linux Shell 自动交互功能实现

1. EOF 多文本输入 需求案例 1 新交付了一批机器,每台机器只分配了一块落盘 ,现在根据需求对该盘进行分区并实现挂载,如何实现? 需求分析: 对于一个盘,实现分区挂载到不同目录,通常思路有两…

灯具行业MES解决方案,实现产品的正反向追溯

灯具照明行业产业链主要包括上游原材料、中游照明产品生产及封装、下游照明细分应用领域。产业链上游、中游多为资本密集与技术密集型行业,产品高度标准化,市场相对集中。而产业链下游产品需求相对个性化,多品类、多SKU,市场集中度…

探索性数据分析

有目的性的探索数据集以获取具体的优化方向和思路。 Intuition 探索性数据分析 (EDA) 以了解数据集的信号和细微差别。这是一个循环过程,可以在开发过程的各个阶段(标记之前/之后、预处理等)完成,具体取决于问题的定义程度。例如&…

【Proteus仿真】【STM32单片机】蔬菜大棚温湿度控制系统设计

文章目录一、主要功能二、硬件资源三、软件设计四、实验现象联系作者一、主要功能 本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶、DHT11温湿度、蜂鸣器、按键、LED、继电器、电机模块等。 主要功能: 系统运行后,LCD1602显示DH…

setup获取props和自定义事件、通过expose暴露给ref获取属性和方法、setup顶层async、setup返回函数

文章目录1. setup获取props和自定义事件2. 通过expose暴露给ref获取属性和方法3. setup顶层async4. setup返回函数1. setup获取props和自定义事件 child 组件&#xff1a; <template><div><h3>我是child组件 -- {{ title }}</h3><button click&qu…

We have awesome remote U.S. jobs waiting for engineers like you.

发件人&#xff1a;Turing - U.S. Software Jobs <hiringturing.com> Hi I saw your profile online and wanted to reach out! You might be a great fit for many high-paying remote U.S. software engineering opportunities on Turing.com. Turing is based in …

steam搬砖,长期稳定副业,附防坑指南助你不掉坑

大家伙&#xff0c;我是阿阳 今天给大家拆解一个冷门项目&#xff0c;国外steam游戏搬砖项目&#xff0c;这个项目也是自己正在做的第二个项目&#xff0c;虽然冷门&#xff0c;不暴利&#xff0c;做了这么久赚钱一直很稳定。站在一个搞钱人的角度来说&#xff0c;这个项目作为…

Docker部署单节点Kafka

文章目录Docker部署单节点Kafka参考镜像wurstmeister/zookeeper Overviewwurstmeister/kafka Overview部署单Brokerkafka 环境变量&#xff1a;启动与停止命令测试验证&#xff1a;参考文章Docker部署单节点Kafka 参考镜像 wurstmeister/zookeeper Overview docker pull wur…

Hadoop总结——HDFS

一、HDFS概述 1.1 HDFS产生背景 随着数据量越来越大&#xff0c;在一个操作系统管辖的范围内存不下了&#xff0c;那么就分配到更多的操作系统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;迫切需要一种系统来管理多台机器上的文件&#xff0c;这就是分布式文件…

记一次自定义starter引发的线上事故复盘

前言 本文素材来源于业务部门技术负责人某次线上事故复盘分享。故事的背景是这样&#xff0c;该业务部门招了一个技术挺不错的小伙子小张&#xff0c;由于小张技术能力在该部门比较突出&#xff0c;在入职不久后&#xff0c;他便成为这个部门某个项目组的team leader&#xff…

计算机外设:显示器是如何工作的?

本节我们将了解计算机的外设之一&#xff1a;显示器的底层工作原理。通过本节&#xff0c;你会知道电脑显示器是如何实时展示我们在计算机上的操作的&#xff0c;比如显示出一张“E”的字符。最后总结了计算机编程的本质&#xff0c;就是人们是通过设计&#xff0c;让字节代表不…

超迷你机械臂机器人,YYDS

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 超迷你机械臂机器人&#xff0c;YYDS 核心板&#xff1a; REF核心板 REF底板&#xff08;机械臂底座里面的控制器电路板&#xff09; 步进电机驱动 Peak示教器 文件&#xff1a; 3D模型设计源文件。 20步进…

Python机器学习 | AI芯片调研

AI芯片调研 1、 概念 AI芯片又叫AI加速器,专门用于处理人工智能应用中的大量计算任务的模块。 注意:其他非计算任务仍由CPU处理 2、 背景 神经网络需要大量的矩阵运算,CPU和传统计算架构无法满足对于并行计算能力的需求,需要特殊定制的AI芯片(GPU、TPU、NPU、DPU等等)…