6输入输出系统——I/O系统

2018-12-07  本文已影响0人  Liquor_4a19

I/O系统的组成:

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

需要相应的设备控制器;

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

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

关于设备管理

管理对象:

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

基本任务:

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

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

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

1.I/O系统的功能、模型和接口

1)主要功能:

隐藏物理设备细节,方便用户

用户使用抽象的I/O命令即可

实现设备无关性,方便用户

用户可用抽象的逻辑设备名来使用设备,同时也提高了OS的可移植性和易适应性。

提高处理机和设备的并行性,提高利用率:缓冲区管理

对I/O设备进行控制:控制方式、设备分配、设备处理

确保对设备正确共享:虚拟设备及设备独立性等

错误处理

中断处理程序 处于I/O系统的底层,直接与硬件进行交互 设备驱动程序 处于次底层,是进程和控制器之间的通信程序 功能:将上层发来的抽象I/O请求,转换为对I/O设备的具体命令和参数,并把它装入到设备控制其中的命令和参数寄存器中 设备独立性软件 包括设备命名、设备分配、数据缓冲等软件 

I/O系统接口:块设备接口、流设备接口、网络通信接口

2.I/O设备和设备控制器

I/O设备的类型繁多,从OS的观点,按其重要的性能指标进行分类如下:

按传输速率分类:

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

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

按信息交换的单位分类:

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

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

I/O通道

主要目的:

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

数据传送的独立

I/0操作的组织、管理及结束处理也尽量独立。

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

指令类型单一,只用于I/O操作;

通道没有内存,它与CPU共享内存

3.中断机构和中断处理程序

4.设备驱动程序

 I/O控制方式:
程序I/O方式

中断驱动I/O方式

直接存储器访问DMA(字节—块)

I/O通道控制方式(组织传送的独立)

宗旨:减少主机对I/O控制的干预,将CPU从繁杂的I/O控制事物中解脱出来。

5.用户层的I/O软件

SPOOLing系统的组成

主要有三大部分(如下页图)

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

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

输入进程和输出进程。

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

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

特点:

提高了I/O的速度。利用输入输出井模拟成脱机输入输出,缓和了CPU和I/O设备速度不匹配的矛盾。

将独占设备改造为共享设备。并没有为进程分配设备,而是为进程分配一存储区和建立一张I/O请求表。

最终,实现了虚拟设备功能。多个进程可“同时”使用一台独占设备。

6.缓冲区管理

引入缓冲区的主要原因:

缓和CPU与I/O设备间速度不匹配的矛盾。

缓冲区数据成批传入内存,也可进一步减少对CPU的中断频率

最终目的:提高CPU和I/O设备的并行性。

使用缓冲区的方式:1)单缓冲、多缓冲2)循环缓冲3)缓冲池(Buffer Pool)

1)单缓冲与多缓冲

OS在主存中为之分配一个缓冲区。

CPU和外设轮流使用,一方处理完后等待对方处理。

双缓冲(Double Buffer)

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

可能实现连续处理无需等待对方。前提是CPU和外设对一块数据的处理速度相近。而如下图情况CPU仍需等待慢速设备。

循环缓冲(circular buffer)

设置多块缓冲区

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

顺一个方向放入或取出

缓冲池(Buffer Pool)

为提高缓冲区的利用率,目前广泛流行缓冲池,在池中设置多个可供若干个进程共享的缓冲区

组织形式:队列及队列指针

组成:

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

空缓冲区;

装满输入数据的缓冲区;

装满输出数据的缓冲区;

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

空缓冲区队列(所有进程都可用)

输入队列(n个进程有各自的队列)

输出队列(n个进程有各自的队列)

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

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

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

1)磁盘调度方法

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

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

算法:

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

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

最短寻道时间优先SSTF:选择从当前磁头位置出发移动最少的磁盘I/O请求

使每次磁头移动时间最少。

不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。

对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。

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

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

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

循环扫描算法CSCAN:

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

由里向外后,再由里向外。

N-Step-SCAN算法:“磁臂粘着”——磁头静止在一个磁道上,导致其它进程无法及时进行磁盘I/O。(因:高密度盘,进程的读写可能集中在某一磁道)

FSCAN算法:

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

当前一个队列,按SCAN算法执行;

扫描期间新生成的组成一个队列,等待被扫描。


上一篇下一篇

猜你喜欢

热点阅读