操作系统第六章

1. I/O系统组成


操作系统第六章_第1张图片

包括:

需要用于输入、输出和存储信息的设备;

需要相应的设备控制器;

控制器与CPU连接的高速总线;

有的大中型计算机系统,配置I/O通道;

(1)I/O设备的类型

从OS的观点,按其重要的性能指标进行分类如下:

按传输速率分类:

低速、中速、高速(键盘、打印机、磁盘)

使用:存储设备、输入输出设备

按信息交换的单位分类:

块设备:有结构、速率高、可寻址、DMA方式控制

字符设备:无结构、速率低、不可寻址、中断方式控制

按设备的共享属性分类:

独占:打印机

共享:一个时刻上仍然是只被一个进程占用。可寻址、可随机访问的色后备。磁盘。

虚拟:使一台独占设备变换为若干台逻辑设备,供给若干用户“同时使用”

(2)I/O设备中的接口

与控制器的接口有三种类型的信号:

a)  数据信号线(进出数据转换、缓冲后传送)

b) 控制信号线(读\写\移动磁头等控制)

c)  状态信号线


(3)设备控制器

控制器是CPU与I/O设备之间的接口,作为中间人接收从CPU发来的命令,并去控制I/O设备工作,以使处理机脱离繁杂的设备控制事务

① 基本功能:

*接收和识别CPU命令(控制寄存器:存放命令和参数)

*标识和报告设备的状态(状态寄存器)

*数据交换(数据寄存器)

*地址识别(控制器识别设备地址、寄存器地址。地址译码器)

*数据缓冲(协调I/O与CPU的速度差距)

*差错控制

②组成:

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

*设备控制器与设备的接口

*I/O逻辑:通过一组控制线与处理机交互


(4)I/O通道

设备控制器已大大减少CPU对I/O的干预,但当主机的外设很多时,CPU的负担仍然很重。在CPU和设备控制器之间增设一个硬件机构:“通道”

*设置通道后:

CPU只需向通道发送一条I/O指令即可不再干预后续操作。

通道形成通道程序,执行I/O操作,完成后向CPU发中断信号

*实际上I/O通道是一种特殊的处理机

*主要目的:

建立更独立的I/O操作,解放CPU

*通道类型:

根据其控制的外围设备的不同类型,信息交换方式也可分为以下三种类型:

1)    字节多路通道

2)    数组选择通道

3)    数组多路通道


(5)  

2. 设备管理

管理对象

I/O设备和相应的设备控制器(I/O系统组成)

基本任务

完成用户提出的I/O请求,

提高I/O速率、改善I/O设备的利用率。

为更高层进程方便使用设备提供手段

(1)中断

中断处理流程:

a) 测定是否有未响应的中断信号

b)  保护被中断进程的CPU环境

c)  转入相应的设备处理程序

d) 中断处理

e)  恢复CPU的现场

(2)

操作系统第六章_第2张图片

3. I/O系统的基本功能及模型

(1)功能:

*隐藏物理设备细节

*实现设备无关性

*提高处理机和设备的并行性

*对I/O设备进行控制

*确保对设备正确共享

*错误处理

(2)层次结构:

系统中的设备管理模块分为若干个层次

下层为上层提供服务,完成输入输出功能中的某些子功能,并屏蔽功能实现的细节


操作系统第六章_第3张图片

①用户层软件

实现与用户交互的接口,用户可直接调用在用户层提供的、与I/O操作有关的库函数,对设备进行操作。

②设备独立软件

用于实现用户程序与设备驱动器的统一接口、设备命名、设备的保护以及设备的分配与释放等,同时为设备管理和数据传送提供必要的存储空间。

③设备驱动程序

与硬件直接相关,用于具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。

④中断处理程序

用于保存被中断进程的CPU环境,转入相应的中断处理程序进行处理,处理完后再恢复被中断进程的现场后,返回到被中断进程。


4. I/O控制方式

1)程序I/O方式

2)中断驱动I/O方式

3)直接存储器访问DMA 方式

①该方式的特点是:

1)   数据传输的基本单位是数据块;

2)   所传送的数据是从设备直接送入内存的,或者直接从内存进设备;不需要CPU操作。

3)    CPU干预进一步减少:仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。

    可见DMA方式又是成百倍的减少了CPU对I/O的干预,进一步提高了CPU与I/O设备的并行操作程度。

②DMA控制器的组成

DMA控制器由三部分组成:

主机与DMA控制器的接口;

DMA控制器与块设备的接口;

3.I/O控制逻辑

③DMA工作过程

CPU先向磁盘控制器发送一条读命令。

该命令被送到命令寄存器CR中。

同时发送数据读入到内存的起始地址,该地址被送入MAR中;

要读数据的字数则送入数据计数器DC中;

将磁盘中的数据原地址直接送入DMA控制器的I/O控制逻辑上,按设备状态启动磁头到相应位置。

启动DMA控制器控制逻辑开始进行数据传送

DMA控制器读入一个数据到数据寄存器DR中,然后传到内存MAR地址中;

接着MAR+1,DC-1,判断DC是否为0,如否,继续,反之控制器发中断请求,传送完毕。


操作系统第六章_第4张图片

4)I/O通道控制方式

 

 

5.用户层的I/O软件

小部分I/O系统软件放在了用户应用层上

1) 系统调用与库函数

a) 不允许运行在用户态的应用进程,去直接调用运行在核心态(系统态)的OS过程。

b) 用进程在运行时,又必须取得OS所提供的服务。

于是:

OS在用户层中引入了系统调用,应用程序可以通过它,间接调用OS中的I/O过程,对I/O设备进行操作

2) 设备分配中的虚拟技术

       —— SPOOLing

技术

SPOOLing系统的组成:

*输入井和输出井:磁盘上开辟两大存储空间。输入井模拟脱机输入的磁盘设备,输出井模拟脱机输出时的磁盘。

*输入缓冲区和输出缓冲区:为缓解速度矛盾,内存中开辟两大缓冲空间,输入缓冲区暂存输入设备送来的数据,再送给输入井;输出缓冲区暂存输出井送来的数据,再送输出设备

*输入进程和输出进程:

用一进程模拟脱机输入时外围设备控制器的功能,把低速输入设备上的数据传送到高速磁盘上;

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


操作系统第六章_第5张图片

3)SPOOLing系统的特点

*提高了I/O的速度

*实现了虚拟设备功能


6. 缓冲区管理

[if !supportLists]n  [endif]I/O控制方式减少CPU对I/O的干预提高利用率;

[if !supportLists]n  [endif]缓冲则通过缓和CPU和I/O设备速度不匹配矛盾,增加CPU和I/O设备的并行性,提高利用率。

[if !supportLists]n  [endif]现代OS中,几乎所有的I/O设备与处理机交换数据时,都用了缓冲区。

[if !supportLists]n  [endif]引入缓冲区的主要原因:

[if !supportLists]n  [endif]缓和CPU与I/O设备间速度不匹配的矛盾。

[if !supportLists]n  [endif]缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率

[if !supportLists]n  [endif]最终目的:提高CPU和I/O设备的并行性。

[if !supportLists]1)[endif]单缓冲与多缓冲

(1)单缓冲

每当用户进程发出一I/O请求时,OS在主存中为之分配一个缓冲区。CPU和外设轮流使用,一方处理完后等待对方处理。

(2)双缓冲

两个缓冲区,CPU和外设不再针对一块交替

可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近

* 双缓冲还适合双向通讯:一个用作发送缓冲区,另一个用作接受缓冲区。

2)循环缓冲

设置多块缓冲区

用循环结构组织,只供两个相关进程使用

顺一个方向放入或取出


操作系统第六章_第6张图片

① 循环缓冲的组成

多个缓冲区。大小相同,三种类型:

b)  备装输入数据的空缓冲区R

c) 装满数据的缓冲区G

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

多个指针。

e) 指示正在使用的缓冲区C的指针Current

f)  指示计算进程下一个可取的缓冲区G的指针Nextg

g) 指示输入进程下次可放的缓冲区R的指针Nexti

②循环缓冲区的使用

③进程同步

[if !supportLists]3)[endif]缓冲池

提高缓冲区的利用率。在池中设置多个可供若干个进程共享的缓冲区

[if !supportLists]n   [endif]组织形式:队列及队列指针

[if !supportLists]①  [endif]缓冲池的组成

对于既可输入又可输出的公用缓冲池,至少应含有下列三种类型的缓冲区:

[if !supportLists]a)  [endif]空缓冲区;

[if !supportLists]b)  [endif]装满输入数据的缓冲区;

[if !supportLists]c)  [endif]装满输出数据的缓冲区;

为方便管理,将上述类型相同的缓冲区连成队列

[if !supportLists]¨   [endif]空缓冲区队列(所有进程都可用)

[if !supportLists]¨   [endif]输入队列(n个进程有各自的队列)

[if !supportLists]¨   [endif]输出队列(n个进程有各自的队列)

*(队列长度不固定,根据进程实际情况灵活变动,需要多少用多少)


[if !supportLists]②  [endif]缓冲区的工作方式

收容输入

提取输入

收容输出

提取输出

使用:Getbuf(队列,工作区)

Putbuf(队列,工作区)

缓冲池:可双向缓冲;缓冲区整体利用率高


7、磁盘存储器的性能和调度

1)磁盘性能

与格式有关

[if !supportLists]n  [endif]数据的组织和格式

*盘片、面、磁道、扇区

*为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。磁盘”格式化”的过程就是按规定的格式规划盘块

 

与速度有关

[if !supportLists]n  [endif]磁盘类型

[if !supportLists]¨  [endif]固定磁头(每道一磁头)

[if !supportLists]¨  [endif]移动磁头(每盘一磁头)

[if !supportLists]n  [endif]访问时间的计算

[if !supportLists]¨  [endif]寻道时间(到磁道)

[if !supportLists]¨  [endif]旋转延迟(到扇区)

[if !supportLists]¨  [endif]传输时间

                  传输时间占总时间的比例最小,磁盘读写速度的提高要选择合适的调度算法,减少前两项用时,使所有作业的磁盘处理时间均衡。

2)磁盘调度方法

对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小

目标:使平均寻道时间最少

 

算法:

①  FCFS

*多个进程的磁盘I/O请求构成一个随机分布的请求队列。

*磁盘I/O执行顺序按磁盘请求的先后顺序。

②  最短寻道时间优先SSTF

选择从当前磁头位置出发移动最少的磁盘I/O请求

③  扫描算法SCAN(磁盘电梯调度算法)

SSTF会导致“饥饿”现象

总选择最近的磁道访问,远磁道请求的进程会长时间得不到执行。

改进:

考虑距离的同时,更优先考虑方向

SCAN算法

规定磁头移动方向:自里向外,再自外向里移动。

后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。

循环扫描CSCAN

SCAN的错过问题:

容易错过与当前磁道距离近,但方向不一致的磁道。

修改:将SCAN规定的移动方向改为“单向移动”

由里向外后,再由里向外

你可能感兴趣的:(操作系统第六章)