【操作系统】输入输出系统

写在前面
资料来源于我的操作系统老师——WYQ老师

基本任务:完成用户提出的I/O请求,提高I/O速率,改善I/O设备的利用率。
主要功能:缓冲区管理,设备分配,设备处理,虚拟设备,设备独立性等。
追求目标:方便性;并行性;均衡性;独立性。

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

6.1.1 I/O系统的基本功能

I/O管理示意图
在这里插入图片描述
基本功能
1.隐藏物理设备的细节
2.实现设备独立性
3.提高处理机和I/O设备的利用率
4.对I/O设备进行控制
5.确保对设备的正确共享
6.错误处理

6.1.2 I/O系统的层次结构和模型

1.I/O软件的层次结构
在这里插入图片描述
2.I/O系统中各种模块之间的层次视图
在这里插入图片描述

6.1.3 I/O系统接口

1.块设备接口:是块设备管理程序与高层之间的接口。
2.流设备接口:是流设备管理程序与高层之间的接口,又称为字符设备接口。
3.网络通信接口:在现代OS中,都提供了面向网络的功能。操作系统也必须提供相应的网络软件和网络通信接口,使计算机能通过网络与其它计算机进行通信。

6.2 I/O设备和设备控制器

6.2.1 I/O设备

1.按使用特性分类:
①存储设备:也称外存、辅存,是存储信息的主要设备。
②I/O设备 :分为输入设备、输出设备和交互式设备。
2.按传输速率分类:
①低速设备:其传输速率仅为每秒几个字节至数百个字节,如键盘、鼠标器。
②中速设备:传输速率在每秒数千个字节至数十万个字节,如行式打印机、激光打印机等。
③高速设备:传输速率在数十万字节至千兆字节,如磁带机、磁盘机、光盘机等。

6.2.2 设备控制器

** 1.设备控制器的组成**
在这里插入图片描述
2.设备控制器的基本功能
①接收和识别命令;
②数据交换;
③标识和报告设备的状态;
④地址识别;
⑤数据缓冲区;
⑥差错控制。

6.2.3 内存映像I/O

I/O端口编址方式:
独立编址:利用特定的I/O指令访问I/O端口;
统一编址:内存映像I/O,对内存和控制器统一访问方法,简化了I/O的编程。

6.2.4 I/O通道

一、I/O通道的引入

  • 实际上I/O通道是一种特殊的处理机。
    与一般处理机不同于两方面:
    1.指令类型单一,只用于I/O操作;
    2.通道没有内存,它与主机共享内存。
  • 引入目的
    解脱CPU对I/O的组织、管理。
  • CPU只需发送I/O命令给通道;
  • 通道通过内存中的相应通道程序完成任务。

二、类型
1.字节多路通道:
各子通道以时间片轮转方式共享通道,适用于低、中速设备。
2.数组选择通道:
无子通道,仅一主通道,某时间段由某设备独占,适于高速设备。
但通道未共享,利用率低。
3.数组多路通道:
综合了前2种通道类型的优点,多个子通道可以共享一个主通道。
带通道的硬件连接结构
在这里插入图片描述
三、“瓶颈”问题
由于通道价格昂贵,致使数量较少,使它成为I/O系统的瓶颈,进而造成系统吞吐量的下降。如下例所示:
在这里插入图片描述
解决“瓶颈”问题:最有效的办法便是增加设备到主机间的通路而不增加通道,如下图所示:
在这里插入图片描述

6.3 中断机构和中断处理程序

  • 中断是指CPU对系统中发生的异步事件的响应。
  • 是指CPU在正常执行程序的过程中,由于某个外部或内部事件的作用,强迫CPU停止当前正在执行的程序,转去为该事件服务(称为中断服务),待服务结束后,又能自动返回到被中断的程序中继续执行。
    在这里插入图片描述
    为什么采用中断处理
  • 重要事件的及时处理;
  • 异常事件的及时处理;
  • 实现CPU与低速外部设备的速度匹配与并行工作。

中断机制
中断机制是OS内核最重要的功能之一;
系统中的所有中断都由内核响应;
中断是进程并发执行的基础;
OS是由中断驱动的。
在这里插入图片描述
关于中断机制
在这里插入图片描述
中断源 — 引起中断的异步事件(如系统调用,I/ O请求等)
中断请求 — 向CPU发出中断信号。
中断现场的保护与恢复 — 利用系统栈。
中断处理 — 查中断向量表,转中断处理程序处理。

中断向量表和中断优先级
①中断向量表:为每种设备配以相应的中断处理程序,并把该程序的入口地址,放在中断向量表的一个表项中,并为每一个设备的中断请求,规定一个中断号,它直接对应于中断向量表的一个表项中。
②中断优先级:系统根据不同中断信号源,对服务要求的紧急程度的不同,它们分别规定不同的优先级。

中断处理过程

  • 中断响应:保存断点、取中断服务的入口地址;转向中断服务程序执行中断处理。
  • 中断处理:执行中断服务程序中规定的操作。
  • 中断返回:将压栈的断点从堆栈中弹出;CPU转向被中断的主程序继续执行。

简单中断处理
在这里插入图片描述
中断与程序并发之间的关系

  • 中断是程序并发的前提条件。
  • 如果没有中断,操作系统不能获得系统控制权,无法按调度算法对处理机进行重新分配,一个程序将一直运行到结束而不会被打断。

中断、异常、陷入
①中断:中断是来自处理器外部的请求事件。
②异常:异常是指令执行过程中在处理器内部发生的特殊事件。
③陷入:由处理器内部事件所引起的特殊中断(trap)。
★中断和异常、陷入的主要区别:是信号的来源不同。

6.4 设备驱动程序

  • 是I/O进程与设备控制器之间的通信程序;
  • 是驱动物理设备和DMA控制器或I/O控制器等直接进行I/O操作的子程序的集合;
  • 负责设置设备有关寄存器的值,启动设备进行I/O操作,指定操作的类型和数据流向等。

6.4.1设备驱动程序的功能

(1)接收上层软件发来的命令和参数,并将命令中的抽象要求,转换为与设备相关的低层操作序列;
(2)检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式;
(3)发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者挂在设备队列上等待;
(4)及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。

6.4.2 设备驱动程序的处理过程

  1. 将抽象要求转换为具体要求
  2. 检查I/O请求的合法性
  3. 读出和检查设备的状态
  4. 传送必要的参数
  5. 工作方式的设置
  6. 启动I/O设备

6.4.3 对I/O设备的控制方式

I/O控制方式的宗旨
尽量减少主机对I/O控制的干预,把主机从繁杂的I/O控制事务中解脱出来,以便更多地去完成数据处理。

1. 轮询方式

  • CPU的绝大部分时间,都处于等待I/O设备完成数据I/O的循环测试中;
  • 造成对CPU的极大浪费。
  • 在这里插入图片描述
    2. 中断控制方式
    中断驱动方式可以成百倍地提高CPU的利用率。
    在这里插入图片描述
    3.DMA方式
    DMA方式较之中断驱动方式,又进一步提高了CPU与I/O设备的并行操作程度。
    在这里插入图片描述
    DMA控制器的组成
    在这里插入图片描述
    DMA工作过程
    在这里插入图片描述

4.通道控制方式
通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的。
通道方式:CPU只需给出
(1)通道程序首址。
(2)要访问I/O设备
通道的工作原理
CPU

  • 执行用户程序,当遇到I/O请求时,可根据该请求生成通道程序放入内存;
  • 将该通道程序的首地址放入CAW中;
  • 执行“启动I/O”指令,启动通道工作。

通道

  • 接收到“启动I/O”指令后,从CAW中取出通道程序的首地址;
  • 根据首地址取出第一条指令放入CCW中;
  • 向CPU发回答信号,使CPU可继续执行其他程序;
  • 开始执行通道程序,完成传输工作;
  • 传输完成后,向CPU发I/O中断,并且通道停止工作;
  • CPU接收中断信号,从CSW中取得有关信息,决定下一步工作。

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

6.5 与设备无关的 I/O软件

  • 与设备无关的软件是I/O系统最高层软件;
  • 在其下面是设备驱动程序;
  • 但它和设备驱动程序之间的界限,将随操作系统和设备的不同而有所差异。

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

1.以物理设备名使用设备
2.引入了逻辑设备名:是抽象的设备名
3.逻辑设备名到物理设备名的转换

6.5.2 与设备无关的软件

与设备无关软件的功能
1.设备驱动程序的统一接口
2.缓冲管理
3.差错控制
4.对独占设备的分配与回收
5.提供独立于设备的逻辑数据块

6.5.3 设备分配

1.设备分配中的数据结构
⑴系统设备表SDT:这是系统范围的数据结构,记录系统中全部设备的情况,每个设备占一个表目。
⑵设备控制表DCT:为每一个设备都配置了一张,记录设备的情况。
⑶控制器控制表COCT :为每一个控制器都设置一张,记录控制器使用情况。
⑷通道控制表CHCT :为每一个通道都设置一张,记录通道使用情况。

在这里插入图片描述
2.设备分配时应考虑的因素
⑴设备的固有属性

  • 独占设备的分配策略
  • 共享设备的分配策略
  • 虚拟设备的分配策略

⑵设备分配算法
先来先服务、优先级高者优先。
⑶设备分配中的安全性
安全分配方式、不安全分配方式。

3.独占设备的分配程序
(1)基本的设备分配程序
当某进程提出I/O请求后,系统的设备分配程序,可按下述步骤进行设备分配:

  • 分配设备;
  • 分配控制器;
  • 分配通道。

(2)设备分配程序的改进

  • 上述分配过程,进程是以物理设备名提出I/O请求的。
  • 如果所指定的设备已分配给其它进程,则分配失败,不具备设备无关性。
  • 为此,进程应使用逻辑设备名请求I/O。

6.5.4 逻辑设备名到物理设备名映射的实现

1.逻辑设备表LUT(Logical Unit Table)
2.逻辑设备表的设置问题
⑴在整个系统中只设置一张LUT
⑵为每个用户设置一张LUT

6.6 用户层的I/O软件

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

6.6.1 系统调用

  • 系统调用的本质就是过程调用。
  • 由于OS的特殊性,使应用程序不能采用一般的过程调用方式去调用OS中的过程,而必须用系统调用命令去调用的系统过程,所以系统调用是一种特殊的过程调用。

1.系统调用与库函数

  • 系统调用是操作系统的一部分,是内核提供给用户的程序接口,运行在核心态;
  • 库函数是语言或应用程序的一部分,运行在用户态;
  • 许多库函数都使用系统调用来实现功能;
  • 没有使用系统调用的库函数,执行效率通常比使用的高,因为使用系统调用时,需要上下文的切换及处理机状态的转换。

2.系统调用与一般的过程调用的区别

  • 运行在不同的系统状态:
    调用程序—用户态;被调用程序—系统态。
  • 通过陷入机制进入:
    调用过程—陷入—被调用过程。
  • 系统调用返回后,可能返回被中断进程也可能重新调度。

6.6.2 假脱机(Spooling)系统

1.假脱机技术
该技术是利用专门的外围控制机,先将低速I/O设备上的数据,传送到高速磁盘上,或者相反。
在这里插入图片描述
1.Spooling系统的组成
在这里插入图片描述
2.Spooling系统的工作原理
在这里插入图片描述
3.Spooling系统的特点
(1)提高了I/O的速度。
(2)将独占设备改造为共享设备。
(3)实现了虚拟设备功能。
4.假脱机打印机系统
在这里插入图片描述
5.守护进程
利用守护进程实现打印

  • 对每个用户而言,系统只是及时将数据输出到缓冲区,并没真正被打印,只是让用户感觉系统已为他打印。
  • 其真正的打印操作,是在打印机空闲且该打印任务在等待队列中已排到队首时进行的。
  • 并且,打印操作本身也是利用CPU的一个时间片,没有使用专门的外围机。
  • 这一过程是用户不可见的。

实现设备虚拟时所依赖的关键技术是——SPOOLing技术

6.7 缓冲区管理

6.6.1 缓冲的引入

1.缓和CPU与I/O设备间速度不匹配的矛盾
2.减少对CPU的中断频率,放宽对CPU中断响应时间的限制
3.解决数据粒度不匹配的问题
4.提高CPU和I/O设备之间的并行性

6.6.2 单缓冲区和双缓冲区

1.单缓冲区
在单缓冲情况下,每当用户进程发出一I/O请求时,操作系统便在主存中为之分配一缓冲区,如图所示。
在这里插入图片描述
系统对每一块数据的处理时间表示为:Max(C,T)+M。

2.双缓冲区系统处理一块数据的时间可以粗略地认为是Max(C,T) 。

  • 也称为缓冲对换(Buffer Swapping)。
  • 在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。
  • 此时操作系统可以从第一缓冲区中移出数据,并送入用户进程(见图)。接着由CPU对数据进行计算。
    在这里插入图片描述

6.6.3 环形缓冲区

1.环形缓冲区的组成
在这里插入图片描述
2.环形缓冲区的使用
计算进程和输入进程可利用下述两个过程来使用环形缓冲区。
(1)Getbuf过程
(2)Releasebuf过程
3.进程之间的同步问题
使用输入循环缓冲,可使输入进程和计算进程并行执行。相应地,指针Nexti和指针Nextg将不断地沿着顺时针方向移动,这样就可能出现下述两种情况:
(1) Nexti指针追上Nextg指针:缓冲区已满。
(2) Nextg指针追上Nexti指针:缓冲区已空。

6.6.4 缓冲池(Buffer Pool)

1.缓冲池的引入
为了提高缓冲区的利用率,目前广泛流行既可用于输入又可用于输出的公用缓冲池,在池中设置了多个可供若干个进程共享的缓冲区。

2.缓冲池的组成
空缓冲队列emq、输入队列inq、输出队列outq
用于收容输入数据的工作缓冲区:hin
用于提取输入数据的工作缓冲区:sin
用于收容输出数据的工作缓冲区:hout
用于提取输出数据的工作缓冲区:sout
Getbuf过程和Putbuf过程

3.缓冲池的工作方式
(1)收容输入
(2)提取输入
(3)收容输出
(4)提取输出

6.8 磁盘存储器的性能和调度

6.8.1 磁盘性能简述

1.磁盘的类型
软盘\硬盘\U盘\SSD盘;
固态硬盘和普通硬盘的区别
在这里插入图片描述
普通机械硬盘(HDD)

  • 单片盘和多片盘;
  • 固定头磁盘和活动头(移动头)磁盘。

2.磁盘数据的组织和格式

  • 磁盘设备可包括一个或多个物理盘片;
  • 每个磁盘片有一个或两个存储面;
  • 每个盘面上有若干个磁道;
  • 每条磁道又被从逻辑上划分成若干个扇区(sectors);
  • 一个(或多个)扇区称为一个物理块(块block、簇cluster);
  • 磁盘以块为单位统一编号;
  • 块是信息存储、传输、分配的基本单位;
  • 磁盘总块数由扇区数、磁道数以及柱面数决定。

磁盘分区

  • 在磁盘低级格式化完成后,一般要对磁盘进行分区。
  • 在逻辑上,每个分区就是一个独立的逻辑磁盘。
  • 每个分区的起始扇区和大小都记录在磁盘0扇区的主引导记录分区表所包含的分区表中。
  • 分区表中必须有一个分区被标记成活动的,以保证能够从硬盘引导系统。

磁盘高级格式化

  • 在真正可以使用磁盘前,还需要对磁盘进行一次高级格式化;
  • 设置一个引导块、空闲存储管理、根目录和一个空文件系统;
  • 同时在分区表中标记该分区所使用的文件系统。

3.磁盘访问时间
(1)寻道时间Ts:把磁臂(磁头)移动到指定磁道上所经历的时间。
T s = m ∗ n + s T_s=m*n+s Ts=mn+s

(2)旋转延迟时间Tτ:指定扇区移动到磁头下面所经历的时间。
T t = 1 / 2 r ( 均 值 ) T_t=1/2r(均值) Tt=1/2r()

(3)传输时间Tt:把数据从磁盘读出或向磁盘写入数据所经历的时间。
T t = b / ( r N ) T_t=b/(rN) Tt=b/(rN)

访问时间Ta表示为: T = T s + 1 / ( 2 r ) + b / ( r N ) T=T_s+1/(2r)+b/(rN) T=Ts+1/(2r)+b/(rN)

磁盘调度

  • 当有多个访盘请求等待时,采用一定的策略,对这些请求的服务顺序调整安排 → 降低平均磁盘服务时间,达到公平、高效。
  • 公平:一个I/O请求在有限时间内满足。
  • 高效:减少设备机械运动带来的时间开销。

6.8.2 早期的磁盘调度算法

1.扫描(SCAN)算法
在这里插入图片描述

2.循环扫描(CSCAN)算法
在这里插入图片描述

6.8.3 基于扫描的磁盘调度算法

3.NStepSCAN算法

  • N步SCAN算法是将磁盘请求队列分成若干个长度为N的子队列;
  • 磁盘调度将按FCFS算法依次处理这些子队列;
  • 而每处理一个队列时又是按SCAN算法,对一个队列处理完后,再处理其他队列;
  • 当正在处理某子队列时,如果又出现新的磁盘I/O请求,便将新请求进程放入其他队列,这样就可避免出现粘着现象。

4. FSCAN算法

  • FSCAN算法实质上是N步SCAN算法的简化,即FSCAN只将磁盘请求队列分成两个子队列;
  • 一个是由当前所有请求磁盘I/O的进程形成的队列,由磁盘调度按SCAN算法进行处理;
  • 在扫描期间,将新出现的所有请求磁盘I/O的进程,放入另一个等待处理的请求队列;
  • 这样,所有的新请求都将被推迟到下一次扫描时处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值