【王道·操作系统】第五章 输入输出管理【未完】

news2024/11/18 8:34:29

一、I/O设备

在这里插入图片描述

1.1 I/O设备的基本概念

  • I/O,Input/Output:输入/输出
  • I/O 设备:将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件
  • UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作

1.2 I/O设备的分类

  • 按使用特性分:
    • 人机交互类外设(数据传输速度慢):鼠标、键盘、打印机等——用于人机交互
    • 存储设备(数据传输速度快):移动硬盘、光盘等——用于数据存储
    • 网络通信设备(数据传输速度介于上述二者间):调制解调器等——用于网络通信
  • 按传输速率分:
    • 低速设备:鼠标、键盘等——传输速率为每秒几个到几百字节
    • 中速设备:如激光打印机等——传输速率为每秒数千至上万个字节
    • 高速设备:如磁盘等——传输速率为每秒数千字节至千兆字节的设备
  • 按信息交换的单位分:
    • 块设备(传输速率较高,可寻址,即对它可随机地读/写任一块):如磁盘等——数据传输的基本单位是“块”
    • 字符设备(传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式):鼠标、键盘等——数据传输的基本单位是字符

二、I/O控制

2.1 I/O控制器

在这里插入图片描述

  • I/O设备:机械部件、电子部件(I/O控制器、设备控制器)
    • 机械部件主要用来执行具体I/O操作,如鼠标/键盘的按钮、显示器的LED屏、移动硬盘的磁臂、磁盘盘面
    • 电子部件通常是一块插入主板扩充槽的印刷电路板
  • CPU无法直接控制I/O设备的机械部件,因此,I/O设备需要一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,即I/O控制器,又称设备控制器
  • CPU控制I/O控制器,又由I/O控制器来控制设备的机械部件

2.1.1 I/O控制器主要功能

  • 接受和识别CPU发出的命令:如CPU发来的 read/write 命令,I/O控制器中会有相应的控制寄存器来存放命令和参数
  • 向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态,如:1表示空闲,0表示忙碌
  • 数据交换:I/O控制器中会设置相应的数据寄存器
    • 输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备
    • 输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据
  • 地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”;I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器

2.1.2 I/O控制器组成

在这里插入图片描述

  • 一个I/O控制器可能会对应多个设备
  • 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作

2.1.3 两种寄存器编址方式

  • 有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O
  • 另一些计算机则采用I/O专用地址,即寄存器独立编址
    在这里插入图片描述

2.2 I/O控制方式

在这里插入图片描述

2.2.1 程序直接控制方式

  1. 完成一次读/写操作的流程(Key word:轮询)
  2. CPU干预的频率很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查
  3. 数据传送的单位:每次读/写一个字
  4. 数据的流向:每个字的读/写都需要CPU的帮助
    • 读操作(数据输入):I/O设备 → 内存;
    • 写操作(数据输出):内存 → 设备
  5. 主要缺点和主要优点
    • 优点:实现简单;在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)
    • 缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于**“忙等”状态** ,CPU利用率低
      在这里插入图片描述

2.2.2 中断驱动方式

  1. 完成一次读/写操作的流程(Key word:中断)
  2. CPU干预的频率
    • 每次I/O操作开始之前、完成之后需要CPU介入
    • 等待I/O完成的过程中CPU可以切换到别的进程执行
  3. 数据传送的单位:每次读/写一个字
  4. 数据的流向
    • 读操作(数据输入):I/O设备 → CPU → 内存
    • 写操作(数据输出):内存 → CPU → /O设备
  5. 主要缺点和主要优点
    • 优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询;CPU和I/O设备可并行工作,CPU利用率得到明显提升
    • 缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU,而频繁的中断处理会消耗较多的CPU时间

2.2.3 DMA方式

  • DMA方式( Direct Memory Access,直接存储器存取):主要用于块设备的I/O控制
    1. 数据的传送单位是“块”,不再是一个字、一个字的传送
    2. 数据的流向是从设备直接放入内存,或者从内存直接到设备,不再需要CPU作为“快递小哥”
    3. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
  • DMA控制器
    在这里插入图片描述
  1. 完成一次读/写操作的流程
  2. CPU干预的频率:仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
  3. 数据传送的单位:每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
  4. 数据的流向(不再需要经过CPU)
    • 读操作(数据输入):I/O设备 → 内存
    • 写操作(数据输出):内存 → 设备
  5. 主要缺点和主要优点
    • 优点:数据传输以“块”为单位,CPU介入频率进一步降低;数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加;CPU和I/O设备的并行性得到提升
    • 缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块;如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成

2.2.4 通道控制方式

  • 通道:一种硬件,可以理解为是 “弱鸡版的CPU”,通道可以识别并执行一系列通道指令
  • 与CPU相比,通道可以执行的指令很单一,并且通道程序是放在主机内存中的,也就是说通道与CPU共享内存
    在这里插入图片描述
  1. 完成一次读/写操作的流程
  2. CPU干预的频率极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预
  3. 数据传送的单位:每次读/写一组数据块
  4. 数据的流向(在通道的控制下进行
    • 读操作(数据输入):I/O设备 → 内存
    • 写操作(数据输出):内存 → I/O设备
  5. 主要缺点和主要优点
    • 缺点:实现复杂,需要专门的通道硬件支持
    • 优点:CPU、通道、I/O设备可并行工作,资源利用率很高

三、I/O软件层次结构

  • I/O软件层次

四、输入/输出管理

4.1 输入/输出应用程序接口

4.2 设备驱动程序接口

五、I/O核心子系统

假脱机技术SPOOLing

设备的分配与回收

缓冲区管理

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

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

相关文章

C语言无类型指针 void* 学习

int * 类型的指针变量,只能保存int型的数据的地址; double * 类型的指针变量,只能保存double型的数据的地址; void 指针可以指向任意类型的数据,可以用任意类型的指针对 void 指针赋值; void 在英文中作为…

基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

【LeetCode】动态规划 刷题训练(七)

文章目录 918. 环形子数组的最大和题目解析状态转移方程f[i]状态转移方程g[i]状态转移方程 初始化返回值完整代码 152. 乘积最大子数组题目解析状态转移方程f[i]状态转移方程g[i]状态转移方程 初始化完整代码 1567. 乘积为正数的最长子数组长度题目解析状态转移方程f[i]状态转移…

前端-盒子模型

元素显示模式 块级 行内 行内块 外边距折叠现象 合并现象 塌陷现象 (1)合并现象 场景:垂直布局的块级元素,上下的 margin 会合并 结果:最终两者距离为 margin 的最大值 解决方法:只给其中一个盒子设置 …

u盘ntfs和fat32哪个好 把u盘改成ntfs有什么影响

u盘在日常生活中的使用频率很高,许多用户在选购u盘时很少会注意到u盘格式,但u盘的格式对u盘的使用有很大影响。u盘格式有很多,常见的有ntfs和fa32,u盘ntfs和fat32哪个好?这要看u盘的使用场景。把u盘改成ntfs有什么影响…

简要记录java 锁

Java中的锁机制主要分为Lock和Synchronized. Synchronized在JVM里的实现是基于进入和退出Monitor对象来实现方法同步和代码块同步的。monitorenter指令是在编译后插入到同步代码块的开始位置,而monitorexit是插入到方法结束处和异常处,JVM要保证每个mon…

datatable刷新数据,js不整体刷新页面,使用DataTables表格插件定时更新后台数据变化

文章目录 前言一、meta的http-equiv属性二、使用DataTables表格插件2.1.整体思路2.2.将$(#myTableId).DataTable({……})封装成函数2.3刷新表格数据函数2.4统一调用刷新表格的自动加载函数2.4定时间隔执行刷新自动加载函数 前言 最近遇到一个需求,需要刷…

【新版系统架构】第七章-系统架构设计基础知识(架构风格、复用)

软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版) 第一章-绪论第二章-计算机系统基础知识(一)第二章-计算机系统基础知识(二)第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

安装两个mysql

标题:安装两个mysql 参考blog:MySQL–修改mysql服务可执行文件的路径(Windows) 参考视频:mysql安装-安装多个mysql方法 安装第一个,网上有很多教程,这里就附上一个链接了:mysql5.5安装 安装第…

JS知识点汇总(七)--数据类型

1. JavaScript中的简单数据类型有哪些? 1、概述 JS 中有六种简单数据类型:undefined、null、boolean、string、number、symbol ES10中的新特性 BigInt (任意精度整数),目前还处于stage-4阶段,不出意外即将成为js的第七种基本数据…

036:mapboxGL点击某位置,转换坐标为地址,弹出地理信息

第036个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中点击某位置,转换坐标位地址,弹出地理信息. 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共106行)相关API参考:专栏目标示例效果 配置方式 1)…

完整的复数类

复数类应该具有的操作 运算:,-,*,/ 比较:,! 赋值: 求模:modulus 利用操作符重载 统一复数与实数的运算方式 统一复数与实数的比较方式 注意事项 C 规定赋值操作符 () 只能重载…

vue项目运行不起来,可能是版本等不兼容问题

给pakeage.json 运行脚本前加上:set NODE_OPTIONS--openssl-legacy-provider && 即可。

echarts 实现3D饼图

2023.6.30今天我学习了如何使用echarts渲染一个3d的饼图&#xff0c;效果如下&#xff1a; 相关代码如下&#xff1a; <template><div ref"pie3d"/> </template> <script>mounted() {this.myChart this.$echarts.init(this.$refs.pie3d);…

【AUTOSAR】BMS开发实际项目讲解(二十五)----电池管理系统安全状态过渡

安全状态过渡 关联的系统需求 TSR-BMS-S201、TSR-BMS-S202、TSR-BMS-S203、TSR-BMS-S204、TSR-BMS-S601、TSR-BMS-S602、TSR-BMS-S603、TSR-BMS-S604、TSR-BMS-S605、TSR-BMS-S606、TSR-BMS-S607、TSR-BMS-S608、TSR-BMS-S609、TSR-BMS-S610、TSR-BMS-S611、TSR-BMS-S612; TSC…

【Linux系统编程】—进程学习笔记(fork进程创建、退出、僵死进程与孤儿进程、如何避免僵死进程)

目录 一、进程关键概念 二、进程创建实战 1、fork函数 2、fork创建一个子进程的一般目的&#xff1a; 3、fork函数实例&#xff1a; 4、fork的写时拷贝技术&#xff08;COW&#xff09; 三、进程退出 1、正常退出 2、异常退出 3、总结 四、僵死进程与孤儿进程 1、什…

融合学习:跨文化交流的学习平台

在全球化的时代&#xff0c;跨文化交流已经成为了一个不可避免的现象。在这种情况下&#xff0c;融合学习平台成为了一个非常重要的工具&#xff0c;可以帮助人们更好地了解和学习不同文化之间的差异和相似之处。本文将探讨融合学习平台的重要性&#xff0c;以及如何选择最佳的…

构建交互式数据框架:使用Gradio的Dataframe模块

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

查找算法-线性搜索

线性搜索 简介 线性搜索是一种简单的搜索算法&#xff0c;也被称为顺序搜索。它从数据集的起始位置开始&#xff0c;逐个比较每个元素&#xff0c;直到找到目标元素或遍历完整个数据集为止。如果目标元素存在于数据集中&#xff0c;线性搜索会返回该元素的位置或索引&#xf…

照片如何转存到手机笔记中?具体方法教程在这里

传统的笔记形式一般是以文字的形式记录&#xff0c;通常是在一个笔记本中写下自己的所感所想、工作、生活等方面的内容。有时也有人会选择贴上照片&#xff0c;成为个人回忆的重要资料。 而随着手机笔记的出现&#xff0c;很多人选择使用它来记录&#xff0c;因为我们可以随时…