0203-2-输入输出系统

第六章:输入输出系统

在这里插入图片描述

I/O系统的功能,模型和接口

I/O系统管理的对象是I/O设备和相应的设备控制器。

I/O系统的基本功能

  • 隐藏物理设备的细节
  • 与设备的无关性
  • 提高处理机和I/O设备的利用率
  • 对I/O设备进行控制
  • 确保对设备的正确共享
  • 错误处理

I/O软件的层次结构

  • 用户层I/O软件
  • 设备独立性软件
  • 设备驱动程序(厂家开发)
  • 中断处理程序
  • 硬件

I/O系统的分层

  • 中断处理程序
  • 设备驱动程序
  • 设备独立性软件

I/O系统接口

  • 块设备接口
    • 指以数据块为单位来组织和传送数据信息的设备
    • 典型的块设备是磁盘、光盘
    • 块设备的基本特征
      • ①传输速率较高,通常每秒钟为几兆位;
      • ②它是可寻址的,即可随机地读/写任意一块;
      • ③磁盘设备的I/O采用DMA方式。
  • 流设备接口
    • 又称字符设备指以单个字符为单位来传送数据信息的设备
    • 这类设备一般用于数据的输入和输出,有交互式终端、打印机
    • 字符设备的基本特征
      • ①传输速率较低;
      • ②不可寻址,即不能指定输入时的源地址或输出时的目标地址;
      • ③字符设备的I/O常采用中断驱动方式。
  • 网络通信接口
    • 提供网络接入功能,使计算机能通过网络与其他计算机进行通信或上网浏览。

I/O设备和设备控制器

分类

  • 使用特性分
    • 存储设备
    • I/O设备
  • 传输速率分
    • 低速设备(几字节——几百字节)
      • 典型的设备有键盘、鼠标、语音的输入
    • 中速设备(数千——数万字节)
      • 典型的设备有行式打印机、激光打印机
    • 高速设备(数十万——千兆字节)
      • 典型的设备有磁带机、磁盘机、光盘机

设备并不是直接与CPU进行通信,而是与设备控制器通信。在设备与设备控制器之间应该有一个接口。

  • 数据信号:控制器 ← 设备 ← 控制器
    • 传送数据信号,输入、输出bit
  • 控制信号: 控制器 → 设备
    • 执行读、写操作的信号
  • 状态信号:设备当前使用状态

设备控制器

  • 主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换
  • 基本功能
    • 接收和识别命令
      • 控制寄存器、命令译码器
    • 数据交换
      • 实现CPU与控制器,控制器与设备间的数据交换
    • 标识和报告设备的状态
    • 地址识别
      • 配置地址译码器,识别不同的设备
    • 数据缓冲区
    • 差错控制
  • 设备控制器的组成
    • 设备控制器与处理机(CPU)的接口
      • 实现CPU与设备控制器之间的通信
    • 设备控制器与设备的接口
      • 控制器可连接多个设备
    • I/O逻辑
      • 实现对设备的控制
      • CPU利用该逻辑向控制器发送I/O命令
      • 命令、地址译码

内存映像I/O

  • 驱动程序将抽象I/O命令转换出的一系列具体的命令,参数等数据装入设备控制器的相应寄存器,由控制器来执行这些命令,具体实施对I/O设备的操作

I/O通道

  • 目的:建立独立的I/O操作(组织, 管理和结束),使由CPU处理的I/O工作转由通道完成(解放CPU,实现并行)

  • 什么是I/O通道?

    • 是一种特殊的处理机,具有通过执行通道程序完成I/O操作的指令
    • 特点:指令单一(局限于与I/O操作相关的指令),与CPU共享内存
  • 基本过程:

    • CPU向通道发出I/O指令->通道接收指令->从内存取出通道程序处理I/O->向CPU发出中断
  • 通道类型

    • 字节多路通道
      • 低中速连接子通道时间片轮转方式共享主通道
      • 字节多路通道不适于连接高速设备,这推动了按数组方式进行数据传送的数组选择通道的形成。
    • 数组选择通道
      • 这种通道可以连接多台高速设备,但只含有一个分配型子通道,在一段时间内只能执行一道通道程序, 控制一台设备进行数据传送, 直至该设备传送完毕释放该通道。这种通道的利用率很低。
    • 数组多路通道
      • 含有多个非分配型子通道,前两种通道的组合,通道利用率较好
  • 瓶颈问题

    • 原因;通道不足
    • 解决办法:增加设备到主机间的通路,而不增加通道(结果类似RS触发器)

中断机构和中断处理程序

中断

  • 分类
    • 中断(外部触发)
      • 对外部I/O设备发出的中断信号的响应
    • 陷入(内部原因:除0)
      • 由CPU内部事件引起的中断
  • 中断向量表(类比51单片机)
    • 中断程序的入口地址表
  • 中断优先级
    • 对紧急程度不同的中断处理方式
  • 对多中断源的处理方式
    • 屏蔽中断
    • 嵌套中断

中断处理程序

  • 测定是否有未响应的中断信号
  • 保护被中断进程的CPU环境
  • 转入相应的设备处理程序
  • 中断处理
  • 恢复CPU 的现场并退出中断

设备驱动程序

是I/O进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称为设备驱动进程

主要任务是接受来自它上一层的与设备无关软件的抽象请求,并执行这个请求。

功能

    1. 接收由I/O进程发来的命令和参数, 并将命令中的抽象要求转换为具体要求。例如,将磁盘块号转换为磁盘的盘面、 磁道号及扇区号。
    1. 检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。
    1. 发出I/O命令,如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。
    1. 及时响应由控制器或通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。
    1. 对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序。

设备驱动程序的处理过程

  • 将用户和上层软件对设备控制的抽象要求转换成对设备的具体要求,如对抽象要求的盘块号转换为磁盘的盘面、磁道及扇区。
  • 检查I/O请求的合理性。
  • 读出和检查设备的状态,确保设备处于就绪态。
  • 传送必要的参数,如传送的字节数,数据在主存的首址等。
  • 工作方式的设置。
  • 启动I/O设备,并检查启动是否成功,如成功则将控制返回给I/O控制系统,在I/O设备忙于传送数据时,该用户进程把自己阻塞,直至中断到来才将它唤醒,而CPU可干别的事。

对I/O设备的控制方式

  • I/O控制的宗旨
    • 减少CPU对I/O控制的干预
    • 充分利用CPU完成数据处理工作
  • I/O 控制方式
    • 轮询的可编程I/O方式
    • 中断驱动I/O方式
    • DMA控制方式
    • I/O通道控制方式

DMA控制器组成

  • 主机与DMA控制器的接口
  • DMA控制器与块设备的接口
  • I/O控制逻辑

与设备无关的I/O软件

基本概念

  • 含义: 应用程序独立于具体使用的物理设备。
  • 驱动程序是一个与硬件(或设备)紧密相关的软件。为实现设备独立性,须在驱动程序上设置一层软件,称为设备独立性软件。
  • 设备独立性(Device Independence)的优点
    • 以物理设备名使用设备
    • 引入了逻辑设备名
    • 逻辑设备名称到物理设备名称的转换(易于实现I/O重定向)

与设备无关的软件

  • 设备驱动程序的统一接口
  • 缓存管理
  • 差错控制
  • 对独立设备的分配与回收
  • 独立于设备的逻辑数据块

设备分配中的数据结构

  • 设备控制表DCT
  • 控制器控制表COCT
  • 通道控制表CHCT
  • 显然,在有通道的系统中,一个进程只有获得了通道,控制器和所需设备三者之后,才具备了进行I/O操作的物理条件
  • 系统设备表SDT
  • 逻辑设备表LUT
  • 分配的流程,从资源多的到资源紧张的:LUT->SDT->DCT->COCT->CHCT
  • 在申请设备的过程中,根据用户请求的I/O设备的逻辑名,查找逻辑设备和物理设备的映射表;以物理设备为索引,查找SDT,找到该设备所连接的DCT;继续查找与该设备连接的COCT和CHCT,就找到了一条通路。

用户层的I/O软件

系统调用与库函数

  • OS向用户提供的所有功能,用户进程都必须通过系统调用来获取
  • 在C语言以及UNIX系统中,系统调用(如read)与各系统调用所使用的库函数(如read)之间几乎是一一对应的。而微软的叫Win32API

假脱机系统(spooling)

  • spooling技术是对脱机输入/输出系统的模拟
  • 主要组成
    • 输入/输出井
    • 输入/输出缓冲区
    • 输入/输出进程
    • 井管理程序
  • 特点(体现操作系统的虚拟性)
    • 提高了I/O的速度
      • 对数据所进行的I/O操作,已从对低速设备演变为对输入井或输出井中的数据存取。
    • 将独占设备改造为共享设备
      • 实际分给用户进程的不是打印设备,而是共享输出井中的存储区域
    • 实现了虚拟设备功能
      • 将独占设备变成多台独占的虚拟设备。

缓冲区管理

缓冲的引入(原因)

  • 缓和CPU与I/O设备间速度不匹配的矛盾
  • 减少对CPU的中断频率,放宽对CPU中断响应时间的限制
  • 提高CPU和I/O设备之间的并行性
  • 解决数据粒度不匹配的问题

单缓冲区

  • 即在CPU计算的时候,将数据数据输入到缓冲区(大小取决与T和C的大小)

双缓冲区

  • 即允许CPU连续工作(T不断)

环形缓冲区(专为生产者和消费者打造)

  • 组成
    • 多个缓冲区
    • 多个指针
  • 使用
    • Getbuf过程
    • Releasebuf过程
  • 同步问题

缓冲池(理解为更大的缓冲区)

  • 组成
    • 空白缓冲队列(emq)
      • 由空缓冲区链接而成F(emq),L(emq)分别指向该队列首尾缓冲区
    • 输入队列(inq)
      • 由装满输入数据的缓冲区链接而成F(inq),L(inq)分别指向该队列首尾缓冲区
    • 输出队列(outq)
      • 由装满输出数据的缓冲区链接而成F(outq), L(outq)分别指向该队列首尾缓冲
  • Getbuf和Putbuf过程
    • 收容:缓冲池接收外界数据
    • 提取:外界从缓冲池获得数据
  • 缓冲区工作方式(从缓冲区的角度来看)
    • 收容输入
    • 提取输入
    • 收容输出
    • 提取输出

磁盘存储器的性能和调度

数据的组织和格式

磁盘的类型

  • 固定头磁盘(贵)
  • 移动头磁盘

磁盘访问的时间(关键)

  • 寻道时间Ts=m*n+s
  • 旋转延迟时间Tr
  • 传输时间Tt=b/rN
  • 总时间Ta=Ts+1/2r+b/rN

磁盘的调度算法(掌握图表)

  • 先来先服务(FCFS)
    • 优点:公平,简单
    • 缺点:可能导致某些进程的请求长期得不到满足
  • 最短寻道时间优先(SSTF)
    • 说明:要求访问的磁道和当前磁头所在的磁道距离最近,以使每次的寻道时间最短
  • 扫描算法(SCAN)
    • 扫描算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁道当前的移动方向
    • 联想电梯的运行
    • 可防止低优先级进程出现“饥饿”的现象
  • 循环扫描算法(CSCAN)
    • 算法规定磁头单向移动,例如,只是自里向外移动,当磁头移到最外的磁道并访问后,磁头立即返回到最里的欲访问磁道,亦即将最小磁道号紧接着最大磁道号构成循环,进行循环扫描
  • NStepScan算法
    • N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次这些子队列。
  • FSCAN算法
    • 是Nstepscan算法的简化,将磁盘请求队列分成两个子队列

XMind: ZEN - Trial Version

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

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

相关文章

Vite与Webpack打包内存溢出问题优雅处理方式

Vite与Webpack打包内存溢出问题处理 文章目录 Vite与Webpack打包内存溢出问题处理1. Vite1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系统的环境变量 2. Webpack1. 打包错误提示2. 命令行方式解决3. 配置环境变量方式解决1. 设置变量2. 配置系…

【DDD】学习笔记-什么是模型

从领域驱动的战略设计进入战术设计,简单说来,就是跨过系统视角的限界上下文边界进入它的内部,从分层架构的逻辑分层进入到每一层的内部。在思考内部的设计细节时,首先需要思考的问题就是:什么是模型(Model&…

NETX90-多协议通讯芯片

随着作为信息物理系统核心技术的工业物联网的发展,Hilscher 基于 netX 51/52成功开发了新一代网络控制器netX90,其安全性是产品的核心价值。可实现更高性能的集成,并提高功率效率等级,凭借其较小的外形尺寸能够满足规格尺寸更小的…

css新手教程

css新手教程 课程:14、盒子模型及边框使用_哔哩哔哩_bilibili 一.什么是CSS 1.什么是CSS Cascading Style Sheet 层叠样式表。 CSS:表现(美化网页) 字体,颜色,边距,高度,宽度&am…

Linux信号详解~

目录 前言 一、初识信号 二、信号的概念 三、信号的发送与捕捉 3.1 信号的发送 3.1.1 kill 命令 3.1.2 kill 函数 3.1.3 raise函数 3.1.4 abort函数 3.2 信号的捕捉 3.2.1 signal函数 3.2.2 sigaction函数 3.2.3 图示 四、信号的产生 4.1 硬件异常产生信号 4.2 …

CMake Msys2 搭配vscode

(一)MSYS2介绍 MSYS2(Minimal SYStem 2)是一个集成了大量的GNU工具链、工具和库的开源软件包集合。它提供了一个类似于Linux的shell环境,可以在Windows系统中编译和运行许多Linux应用程序和工具。 MSYS2基于MinGW-w64平台,提供了…

Linux---进程间通信 | 管道 | PIPE | MKFIFO | 共享内存 | 消息队列

管道 管道是UNIX中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的数据流称为一个管道。 一个文件,可以被多个进程打开吗?可以,那如果一个进程打开文件,往文件里面写数据,另一个进程打开文…

MySQL 中 int(1) 和 int(10) 会影响存储的长度吗

一、MySQL 中 int(1) 和 int(10) 在MySQL数据库设计中,经常会遇到 int 类型的字段,并会习惯性的指定长度,比如: int(1) 和int(10),而一些新手可能会误解它们之间的关系,认为 int(10) 能够存储更多的数据。…

Android Camera2 API 后台服务

最近在搞CameraAPP需要将Camera2弄成一个后台服务,发现跟预览的Activity没多大变动只是加了Service,和一些简单的修改。之前的公司也用到Camera2,发现用到的时候还是蛮多的所以记录一下,代码在文章末尾 camera2的结构如下&#x…

Peter算法小课堂—Dijkstra最短路算法

大家好,我们人见人爱、花见花开、车见车爆胎的Peter Pan来啦,hia~hia~hia。今天,我们今天来学习毒瘤的最短路算法啦。啊这……什么是Dijkstra算法?长文警告⚠ 正经点啊 手算样例 大家思考一下,你在手算样例的时候&am…

企业申请sectigo ip https证书

Sectigo(原名Comodo,在整合https证书业务后改名为Sectigo)是一家知名的数字证书提供商,拥有多种类型的数字证书,例如单域名https证书、多域名https证书、通配符https证书、IP https证书和代码签名证书等满足各类用户的…

2024022期传足14场胜负前瞻

2024022期赛事由英超4场,德甲2场、意甲4场、西甲4场组成。售止时间为2月4日(周日)19点00分,敬请留意: 本期中深盘较多,1.5以下赔率3场,1.5-2.0赔率7场,其他场次是平半盘、平盘。本期…

TCP 协议的相关特性

1. TCP格式 TCP特性:有连接,全双关,面向字节流,可靠传输。(TCP安身立命的本钱,初心就是解决“可靠传输”问题) 其实TCP的特征有很多这里我就简单的介绍几个。 2. 确认应答 其实用来确保可靠性&…

Java并发基础:CountDownLatch全面解析!

内容概要 CountDownLatch的优点在于能够简洁高效地协调多个线程的执行顺序,确保一组线程都完成后才触发其他线程的执行,适用于资源加载、任务初始化等场景。它提供了清晰的等待/通知机制,易于理解和使用,是提升多线程程序性能和可…

面试数据结构与算法总结分类+leetcode题目目录【基础版】

🧡🧡🧡算法题目总结: 这里为大家总结数据结构与算法的题库目录,如果已经解释过的题目会标注链接更新,方便查看。 数据结构概览 Array & String 大家对这两类肯定比较清楚的,同时这也是面试…

Java基础—反射

Java基础-反射 前置知识动态语言JVM堆Java引用变量类型编译时类型运行时类型举栗特殊情况 RRTI概念为什么需要RTTI例子 Class类对象前置知识类加载器概念作用 Class类对象的概念Class类对象的总结 总结一下前置知识 反射基础概念为什么要学反射我需要学到什么程度 反射的基础内…

GMT绘图笔记

(1)图框设置。在利用GMT绘制图件时,需要设置边框的类型,字体的大小,标记距离边框的距离。主要涉及的参数有: gmt set MAP_FRAME_TYPE plain/fancy 可以调整边框为火车轨道或者线段。 (2)调整图框的粗细:主要是包含有…

解决vue3+ts打包,ts类型检查报错导致打包失败,goview打包报错options

最近拉的开源大屏项目goview,在打包的过程中一直报Ts类型报错导致打包失败,项目的打包命令为: “build”: “vue-tsc --noEmit && vite build” 是因为 vue-tsc --noEmit 是 TypeScript 编译器(tsc)的命令&…

Mov转MP4怎么转换?如何播放mov视频?

MOV文件格式的使用场景 MOV文件格式以其支持多种媒体数据类型的特性而闻名,包括视频、音频、文本、动画等。它常用于存储包含视频剪辑、电影、音频轨道等多媒体元素的文件。由于其在质量和编辑方面的优越性,MOV文件在电影制作、广告宣传、多媒体演示等领…