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.mfbz.cn/a/368505.html

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

相关文章

重写Sylar基于协程的服务器(4、协程调度模块的设计)

重写Sylar基于协程的服务器(4、协程调度模块的设计) 重写Sylar基于协程的服务器系列: 重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar) 重写Sylar基于协程的服务器(1、日…

2.03作业

1.请编程实现单向循环链表的头插,头删,尾插,尾删。 2.请编程实现单向循环链表约瑟夫环 约瑟夫环:用循环链表编程实现约瑟夫问题 n个人围成一圈,,从某人开始报数,1,2,......,m,数到…

牛客-NC249946-小d和孤独的区间

牛客-小d和孤独的区间 题目如上 1 s 1s 1s的时间限制,说明我们应该找到一种“巧法” 根据提示,我们只需要找到“中间全部都是 0 0 0,只有一个1的区间”即可 但是在找的途中,我们不仅要顾及当前 1 1 1之前的 0 0 0的个数&#xff…

JProfiler for Mac:提升性能和诊断问题的终极工具

在当今的高性能计算和多线程应用中,性能优化和问题诊断是至关重要的。JProfiler for Mac 是一个强大的性能分析工具,旨在帮助开发者更好地理解其应用程序的运行情况,提升性能并快速诊断问题。 JProfiler for Mac 的主要特点包括:…

常见API

文章目录 Math类1.1 概述1.2 常见方法 System类2.1 概述2.2 常见方法 Runtime3.1 概述3.2 常见方法 Object类4.1 概述4.2 常见方法 Objects类5.1 概述5.2 常见方法 BigInteger类6.1 引入6.2 概述6.3 常见方法6.4 底层存储方式: 7 BigDecimal类7.1 引入7.2 概述7.3 常…

PAT-Apat甲级题1005(python和c++实现)

PTA | 1005 Spell It Right 1005 Spell It Right 作者 CHEN, Yue 单位 浙江大学 Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English. Input Specification: Each input file cont…

kubernetes-深入理解Pod对象:调度

一、创建一个Pod的工作流程 Pod创建流程: 1、kubectl 向 APIServer 发起一个 Pod 创建请求。 2、APIServer 接受到 Pod 创建请求后,不是直接创建 Pod,而是将 Pod 的数据写入 etcd 中,待写入操作执行完成,APIServer 将…

vue3 之 组合式API - setup选项

首先我们先看下setup选项的写法和执行时机 setup选项中写代码的特点 语法糖 总结 setup选项的执行时机? beforeCreate钩子之前 自动执行 setup写代码的特点是什么? 定义数据 函数 然后以对象方式return 经过语法糖的封装更简单的使用组合式API set…

mybatis-plus 3.5.1 自动填充无效问题

使用了mybatis-plus的自动填充功能,但是我debug的时候进都进不去 这是为什么? 我在新增的时候连insertFill方法都进不去 原因是,我没有在我的新增实体类上加上 fill FieldFill.INSERT 还有些问题是配置类, 没有扫描到的问题,这个网上一搜一大把 注意,这个实体类是你新增的…

BUUCTF-Real-[struts2]s2-013

struts2的标签中 <s:a> 和 <s:url> 都有一个 includeParams 属性&#xff0c;可以设置成如下值none - URL中不包含任何参数&#xff08;默认&#xff09; get - 仅包含URL中的GET参数 all - 在URL中包含GET和POST参数 当includeParamsall的时候&#xff0c;会将本次…

ep-bg-purple-dark element-plus 不生效

element-plus 官网里面的 Layout 布局中的示例&#xff0c;官方文档中添加类名 class"grid-content ep-bg-purple-dark" 有相应的样式 import element-plus/theme-chalk/index.css //默认css样式 英文 import element-plus/dist/index.css 两…

ctfshow web-76

开启环境: c?><?php $anew DirectoryIterator("glob:///*"); foreach($a as $f) {echo($f->__toString(). );} exit(0); ?> cinclude("/flagc.txt");exit(); c?><?php $anew DirectoryIterator("glob:///*"); foreach($a…

图解Java多线程设计模式

第5章Producer-Consumer模式 Producer是生产者的意思&#xff0c;指的是生成数据的线程。Consumer则是"消费者"的意思&#xff0c;指的是使用数据的线程。生产者安全地将数据交给消费者。但当虽然仅是这样看似简单的操作&#xff0c; 但当生产者和消费者以不同的线…

XUbuntu22.04之跨平台远程控制工具(二百一十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

学术研究新突破:发现新型相变存储器

斯坦福大学的研究人员开发出了一种新型相变存储器&#xff0c;该存储器有望帮助计算机更快、更高效地处理大量数据。在最近发表于《自然通讯》的一篇论文中&#xff0c;研究人员详细介绍了这项技术&#xff0c;表明一种新材料可能会使基于电阻高低状态切换以创建计算机数据“0”…

算法设计与分析实验:回溯

目录 一、组合总和 1.1 具体思路 1.2 思路展示 1.3 代码实现 1.4 复杂度分析 1.5 运行结果 二、全排列 2.1 具体思路 2.2 思路展示 2.3 代码实现 2.4 复杂度分析 2.5 运行结果 三、N皇后问题 3.1 具体思路 3.2 思路展示 3.3 代码实现 3.4 复杂度分析 3.5 运行…

jsp自助点餐管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 自助点餐管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

关于Ubuntu下docker-mysql:ERROR 2002报错

报错场景&#xff1a; mysql容器创建好后登录mysql时即使密码正确也是报出下方提示&#xff1a; 原因是在创建mysql容器在创建时本地目录缺失&#xff0c; 先去自建一个目录&#xff0c;例如&#xff1a; /opt/my_sql 正确完整目录如下&#xff1a; docker run --namemys…

深度学习水论文怎么缝模块?搭积木永不过时!(附80个即插即用模型)

深度学习如何创新&#xff1f;如何水模型&#xff1f;总结来说就八个字&#xff1a;排列组合&#xff0c;会讲故事。说直白点&#xff0c;就是缝模块。 先看看别人怎么做&#xff0c;然后根据自己的实际情况将这些模块来一波随机组合&#xff0c;这样效率会高很多。我这边已经…

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者&#xff08;灯光控制&#xff09;订阅者&#xff08;灯光状态接收&#xff09;&#xff1a; 9.1.3 拓…
最新文章