【操作系统复习】第7章 输入/输出系统1

news2024/9/29 3:33:08

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方式。

getput操作:字符设备采用顺序存取方式。

get操作用于从字符缓冲区取得一个字符(到内存),并将它返回给调用者。

put操作用于将一个新字符(从内存)输出到字符缓冲区网络。

网络通信接口:

OS提供相应的网络软件和网络通信接口,以使计算机能通过网络同网络上的其他计算机进行通信,或上网浏览信息。

通常,设备并不是直接与CPU进行通信,而是与设备控制器通信,因此,在设备与设备控制器之间应有一接口,在该接口中有三类信号各对应一条信号线。

 

设备控制器

主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换

设备控制器是CPUI/O设备之间的接口接收从CPU发来的命令,并去控制I/O设备工作

设备控制器是一个可编址的设备

当仅控制一个设备时,它只有一个唯一的设备地址

若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备

设备控制器的组成

设备控制器与处理机的接口

实现CPU与设备控制器之间的通信,包括数据线、地址线和控制线

设备控制器与设备的接口

一个设备控制器可以连接一个或多个设备

I/O逻辑

实现对设备的控制

I/O通道的引入

目的:使一些原来由CPU处理的I/O任务转由通道来承担,从而把CPU从繁杂的I/O任务中解脱出来

通道与普通处理机

通道是特殊处理机

不同点:

p 指令类型单一

p 没有自己的内存(与CPU共享内存)

I/O通道类型

字节多路通道:按字节交叉方式工作的通道

数组选择通道:可以连接多台高速设备,但在一段时间内只允许一台设备传输数据,传输率高

数组多路通道:结合前两者优点,含

有多个非分配型子通道

通道不足,造成“瓶颈”现象

通道价格昂贵

解决办法:

增加设备到CPU间的通路而不增加通道

多通路方式不仅解决了“瓶颈”问题,而且提高了系统的可靠性

 

I/O设备的控制方式

1.使用轮询(Poll)的可编程I/O方式

由CPU定时发出询问,询问设备是否忙,进程进入忙等

不忙即进行I/O,否则转①

实现容易,但效率偏低,CPU会长期处于忙等待

2.使用中断(Interrupt)的可编程I/O方式(广泛采用

当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务。设备控制器于是按照该命令的要求去控制指定的I/O设备。此时,CPUI/O设备并行操作。

3. 直接存储器访问(DMADirect-Memory Access)方式

DMA的引入:进一步减少CPUI/O设备的干预

p 数据传输的基本单位是数据块

p 所传送的数据是从I/O设备直接送入内存的,或者相反

p 仅在传送一个或多个数据块的开始和结束时,才须CPU干预

4. I/O通道控制方式

引入:DMA方式的发展,可进一步减少CPU的干预。

p 是对一组数据块以读/写及有关的控制和管理为单位干预;

p 可实现CPU、通道和I/O设备三者的并行操作。

通道程序:由一系列通道指令所构成的。

p 通道指令不同于CPU指令。

p 指令包含:操作码、内存地址、计数、通道程序结束位P、记录结束位R

中断简介

中断和陷入

中断(Interrupt)是指CPUI/O设备发来的中断信号的一种响应

陷入(Trap)是指CPU内部事件所引起的中断

中断向量表

中断向量表存放每个设备的中断处理程序的入口地址,并为每个设备的中断请求作为一个中断号,对应于中断向量表中的一个表项

中断优先级

系统为每个中断源规定不同的优先级

对多中断源的处理方式

中断源:引起中断的事件

当处理机正在处理一个中断时,又来了一个新的中断请求,有两种处理方式:

屏蔽(禁止)中断

嵌套中断

设备驱动程序概述

设备驱动程序的功能

接收上层软件发来的抽象I/O请求,再把它们转换为具体要求后,发送给设备控制器,启动设备去执行设备驱动程序的特点

实现与设备无关的软件和设备控制器直接通信和转换的程序

与设备控制器以及I/O设备特性紧密相关 基本部分固化在ROM中

与I/O设备所采用的I/O控制方式紧密相关 允许可重入

设备处理方式

为每类设备设置一个进程,专门用于执行这类设备的I/O操作

在整个系统中设置一个I/O进程,专门用于执行系统中各类设备的I/O操作

不设置专门的设备处理进程,而只为各类设备设置相应的设备驱动程序

设备驱动程序与外界的接口

设备驱动程序与操作系统内核的接口

设备驱动程序与系统引导的接口

设备驱动程序与设备的接口

设备驱动程序的组成

设备驱动程序的注册与注销

设备的打开与释放

设备的读/写操作

设备的控制操作

设备的中断与轮询

与设备无关软件的基本概念

以物理设备名使用设备

非常不灵活,使用不方便

引入了逻辑设备名

逻辑设备是抽象的设备名,如/dev/printer

可实现I/O重定向(指用于I/O操作的设备可以更换,而不必改变应用程序)

逻辑设备名物理设备名的转换

必须具备将逻辑设备名转换为物理设备名的功能

系统配备逻辑设备表

 

 

在应用程序中请求使用I/O设备时,应使用逻辑设备名;而系统只识别物理设备名

逻辑设备表LUT:用于将逻辑设备名映射为物理设备名

包含:逻辑设备名、物理设备名和设备驱动程序入口地址

设置方式:整个系统一张LUT;每个用户一张LUT

大部分I/O软件都放在OS内部,仍有一小部分在用户层

假脱机技术

为了缓和CPU的高速性与I/O设备的低速性间的矛盾而引入了脱机输入、脱机输出技术。

利用一个程序模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上

用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备

外围操作与CPU对数据的处理同时进行,这种在联机情况下实现的同时

外围操作称为SPOOLing (Simultaneous Peripheral Operations On Line),或假脱机技术

输入井和输出井

在磁盘上开辟的两个大存储空间

输入井:模拟脱机输入时的磁盘设备,用于暂存输入设备输入的数据

输出井:模拟脱机输出时的磁盘,用于暂存用户程序的输出数据

输入缓冲区和输出缓冲区

缓和CPU和磁盘之间速度不匹配的矛盾

输入缓冲区:用于暂存由输入设备送来的数据,以后再传送到输入井。

输出缓冲区:用于暂存从输出井送来的数据,以后再传送给输出设备

 

提高了I/O的速度

独占设备改造为共享设备

实现了虚拟设备功能

假脱机打印机系统

打印机属于独占设备。利用SPOOLing技术,可将之改造为一台可供多个用户共享的设备,从而提高设备的利用率,也方便了用户。

共享打印机技术已被广泛用于多用户系统和局域网络(添加方法)

磁盘缓冲区:磁盘空间,暂存用户程序的输出数据

打印缓冲区:设在内存,暂存从磁盘缓冲区送来的数据

假脱机管理进程和假脱机打印进程

假脱机管理进程为每个要求打印的用户数据建立一个假脱机文件,并放入文件队列中

假脱机打印进程依次对队列中的文件进行打印

 

缓冲区管理

现代操作系统中,几乎所有的I/O设备在与CPU交换数据时,都用了缓冲区

缓冲区是一个存储区域,可以由专门的硬件组成;更多的是利用内存

缓冲管理的主要功能是组织好这些缓冲区,并提供获得和释放缓冲区的手段

单缓冲

每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区

在块设备输入时,

T:从磁盘把一块数据输入到缓冲区的时间

M:操作系统将该缓冲区中的数据传送到工作区的时间

CCPU对这块数据处理的时间。

T>C时,系统对每一块数据的处理时间为M+TC忽略)

反之,则为M+C

系统对每一块数据的处理时间为:Max(C,T)+M

 

双缓冲

 

 

环形缓冲区

当输入与输出若两者的速度相差悬殊,双缓冲的效果则不够理想,不过可以随着缓冲区数量的增加,使情况有所改善。

引入多缓冲机制,可将多个缓冲组织为循环缓冲。

多个缓冲区

在循环缓冲中包含多个缓冲区,其每个缓冲区的大小相同。

作为输入的多缓冲区可分为三种类型

用于装输入数据的空缓冲区R

已装满数据的缓冲区G

计算进程正在使用的现行工作缓冲区C

多个指针

作为输入的缓冲区可设置3个指针

用于指示计算进程下一个可用缓冲区G的指针Nextg

指示输入进程下次可用的空缓冲区R的指针Nexti

用于指示计算进程正在使用的缓冲区C的指针Current

缓冲池

 

缓存(Cache

缓存是保存数据副本的高速内存区域:

CPU缓存、磁盘缓存、光驱缓存等。

CPU缓存(高速缓存):

为了缓和CPU运行速率与内存读/写速率不匹配的矛盾;

CPU要读取一个数据时,首先从CPU缓存中查找,找到就立即读取并送给CPU处理;若没有找到,则从速率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据库调入缓存中。

缓存缓冲:

缓冲可以保存数据项的唯一的现有版本。

缓存只是提供一个位于其他地方的数据项的更快存储副本。

有时,同一个内存区,既可以是缓冲,也可以是缓存。

磁盘性能简述

磁盘的结构

盘面(磁头):磁盘设备可包含一或多个盘片,每个盘片分为一个或两个盘面,每个面上有一个读写磁头

磁道(柱面):每个盘面可分成若干条磁道

扇区:每条磁道逻辑上分成若干个大小相同的扇区。每个扇区的大小相当于一个盘块(数据块)

每条磁道上可存储相同数目的二进制位

磁盘密度即每英寸中所存储的位数,显然是内层磁道的密度较外层磁道的密度高

容量=柱面×磁头×扇区,每扇区存放512B数据

为了在磁盘上存储数据,必须先将磁盘格式化

如每条磁道含有30个固定大小的扇区,每个扇区容量为600个字节,其中512个字节存放数据,其余的用于存放控制信息

每个扇区包括2个字段

标识符字段:其中一个字节的SYNCH具有特定的位图像,作为该字段的定界符,利用磁道号、磁头号及扇区号三者来标识一个扇区;CRC字段用于段校验

数据字段:存放512个字节的数据

 

磁盘的访问时间

寻道时间 旋转延迟时间 传输时间

传输时间Tt

 

访问时间Ta

 

先来先服务FCFS

最简单的磁盘调度算法

根据进程请求访问磁盘的先后次序进行调度。

优点:公平、简单,每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。

缺点:由于未对寻道进行优化,致使平均寻道时间可能较长。FCFS仅适用于请求磁盘I/O的进程数目较少的场合。

最短寻道时间优先SSTF

选择这样的进程,其要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但不保证平均寻道时间最短

进程“饥饿”现象

SSTF寻道性能好,但可能导致某个进程发生“饥饿”现象。改进SSTF后,可防止进程出现“饥饿”现象。

SCAN算法

也称:电梯调度算法。

不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头当前的移动方向。

磁臂从磁盘的一端向另一段移动,沿途响应服务请求。当到达另一端时,磁头改变移动方向,继续处理。磁头在磁盘上来回扫描。

循环扫描算法CSCAN

CSCAN算法提供比SCAN算法更为均匀的等待时间

磁头从磁盘一段移到另一端,随着移动不断的处理请求。不过,当磁头移到另一端时,马上返回到磁盘开始,返回时并不处理请求。

将柱面当作一个环链,将最后柱面和第一柱面相连。

NStepSCAN算法:

“磁臂粘着”现象:进程反复请求对某一磁道的I/O操作;

将磁盘请求队列分为若干个长度为N的子队列;

按FCFS算法依次处理子队列;

每个子队列使用SCAN算法。

FSCAN算法:

是N步SCAN算法的简化;

请求队列分为两个子队列:

一是当前所有请求队列,按SCAN算法调度;

二是扫描期间,新出现的请求队列,推迟到下一次扫描时处理。

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

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

相关文章

实验三 传感器目标识别

【实验目的】 1、了解环境感知传感器目标识别的目的和方法, 掌握MATLAB中的目标检测方法。 2、了解MATLAB的目标检测器和检测函数,掌握车辆识别、行人识别、交通标志识别和道路识别等目标识别方法。 【实验性质】 验证性实验。 【实验要求】 MATLAB 202…

Kubernetes实战入门

文章目录 一、组件介绍(一)master主控节点(二)node工作节点 二、k8s核心概念(一)pod(二)controller(三)service 三、搭建k8s集群(一)基…

6.1 Python面向对象设计及应用

1 类和对象 对象是具有某些特性和功能的具体事物的抽象。每个对象都具有描述其特征的属性及附属于它的行为。如:一个人有姓名、性别、身高、体重等特征描述,也有走路、说话、学习、开车等行为。 每个对象都有一个类,类是创建对象实例的模板&…

基于springboot家具商城系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 开发软件:IDEA / Eclipse 是否Maven项目:是 前言 基于springboot家具商…

js数组排序的两种方法

1. 冒泡排序 原理&#xff1a;一次比较两个相邻的数&#xff0c;如果不符合规则互换位置&#xff0c;一次比较就能够将最大或最小的值放在数组最后一位继续对除【最后一位】之外的所有元素重复上述过程。 let arr [22,1,43,12,75,32]; for(let i 0; i < arr.length - 1;…

MySQL一条查询语句是怎么执行的?MySQL 的架构是什么样子?

先谈谈MySQL的架构&#xff0c;这样自然就搞清楚一条语句是怎么执行的了 首先&#xff0c;MySQL分为客户端&#xff0c;服务端&#xff0c;存储引擎 客户端&#xff1a; ● Java程序啊&#xff0c;可视化连接工具 Navicat啊等等&#xff0c;就是客户端&#xff1b; 服务端&…

Vivado 下 IP核 之ROM 读写

目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 &#xff08;1&#xff09;ROM 顶层模块代码 &#xff08;2&#xff09;ROM IP 核仿…

lua-5.3.6源码安装

参考博客有https://blog.csdn.net/m0_53157173/article/details/124653430和http://blog.chinaunix.net/uid-14824714-id-3125340.html。 https://www.lua.org/download.html下载网址。点击当前网址中的“download”超链接可以下载以前的版本。 cat /etc/redhat-release看一下…

408考研计算机之计算机组成与设计——计算机层次系统概述2

目录 一、 冯诺依曼机基本思想 二、计算机的功能部件 1、输出输入设备 2、存储器 3、运算器 4、控制器​​​​​​​ 三、指令执行过程的描述 一、 冯诺依曼机基本思想 首先&#xff0c;第一个问题&#xff0c;冯诺依曼是谁&#xff1f;小编第一次知道这个名字&#xff…

Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

可以按照以下步骤进行操作&#xff1a; 将十进制数123456789012转换成十六进制字符串&#xff1a; QString hexString QString("%1").arg(123456789012ull, 0, 16);其中&#xff0c;%1表示替换第1个参数&#xff0c;0表示输出的最小位数为0&#xff0c;16表示输出…

Capturing Omni-Range Context for Omnidirectional Segmentation总结笔记

Capturing Omni-Range Context for Omnidirectional Segmentation&#xff08;捕获全范围上下文进行全方位分割&#xff09; 目录 一、论文出发点 二、论文核心思想 三、论文工作中主要问题 四、方法论 五、实验 六、结论 一、论文出发点 大多数用于分析城市环境的分割…

springboot+swagger项目中,controller引入@NotEmpty等校验注解的问题

springboot项目 springbootswagger项目中&#xff0c;controller层如果使用对基本数据类型使用 NotEmpty Length 等校验注解&#xff0c;controller会获取不到值&#xff0c;加了RequestBody后可以获取到了&#xff0c;但是前端传值content-type必须是text/plain。所以建议con…

考研数据结构--树和二叉树(2)

文章目录 二叉树的遍历前序遍历中序遍历后序遍历层次遍历 不用栈的二叉树中序遍历算法Morris代码分析 二叉树的构造概述如何完成二叉树的构造**回顾****思考**各种遍历序列提供的信息二叉树遍历性质性质1性质2 线索化二叉树引入定义构造 堆堆的定义堆的性质堆的建立堆的元素插入…

GPT1解读:Improving Language Understanding by Generative Pre-Training

自然语言处理NLP是当代人工智能的关键领域&#xff0c;包含文本识别、智能问答等多个方向任务&#xff0c;通过监督学习方式一般需要大量带标签数据&#xff0c;而对某些特定任务&#xff0c;获取带标签数据成本非常高。GPT通过大量的未标记文本数据来学习一个通用预训练&#…

ZiKiT DICOM 存档(PACS)模态服务器 Crack

ZiKiT结合了DICOM存档&#xff08;PACS&#xff09;&#xff0c;模态工作列表服务器和HL7消息代理&#xff0c;它们共享相同的数据库并相互通信。 最新版本 – ZiKiT 2020 ZiKiT 提供动态映射规则和消息结构定义&#xff0c;同时保持合规性并遵守标准。该套件使非程序员能够在…

电动力学:电偶极辐射场

电磁辐射的产生条件 存在时变源&#xff08;时变的电荷源、时变的电流源&#xff0c;或时变的电磁场&#xff09;时变源的频率应足够高&#xff08;辐射系统的尺寸大小和电磁波波长差不多时&#xff0c;才有可能产生明显的辐射效应&#xff09;波源电路必须开放&#xff08;源电…

Android 如何获取有效的DeviceId

目录 前言官方唯一标识符建议使用广告 ID使用实例 ID 和 GUID不要使用 MAC 地址标识符特性常见用例和适用的标识符 解决方案DeviceIdANDROID_IDMac地址UUID补充 总结 前言 从 Android 10 开始&#xff0c;应用必须具有 READ_PRIVILEGED_PHONE_STATE 特许权限才能访问设备的不可…

新手建站:腾讯云轻量服务器安装宝塔镜像和使用方法

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

Java内存模型介绍

Java作为一种面向对象的&#xff0c;跨平台语言&#xff0c;其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似&#xff0c;很多人会傻傻分不清楚。比如本文要讨论的JVM内存结构、Java内存模型和Java对象模型&#xff0c;这就是三个截然不同的概念&…

系列四、vue3 初始化项目(图形化界面方式)

一、启动UI界面 vue ui 二、创建项目 2.1、在此创建项目 2.2、创建新项目-详情配置 2.3、创建新项目-预设 2.4、创建新项目-功能 2.5、创建新项目-配置 2.6、运行项目 任务》serve》运行》启动app 2.7、首页 三、安装element-plus 3.1、步骤 ①、运行 vue ui 命令&#…