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

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算法调度;

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆水獭_(:_」∠)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值