美文网首页
6输入输出系统——I/O系统

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

作者: Liquor_4a19 | 来源:发表于2018-12-07 16:29 被阅读0次

    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算法执行;

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


    相关文章

      网友评论

          本文标题:6输入输出系统——I/O系统

          本文链接:https://www.haomeiwen.com/subject/pntthqtx.html