操作系统理论知识:I/O管理与磁盘调度

一、I/O设备

1、分类

  • 人可读的——与用户交互:打印机,终端(显示器+键盘);
  • 机器可读——与电子设备通信:磁盘驱动器,固态硬盘,U盘,传感器,控制器;
  • 通信——与远程设备通信:数字线路驱动器,调制器,解调器。

2、差异

  • 数据传送速率的差异:键盘速率最慢。

  • 用于存储文件的磁盘需要文件管理软件支持;
  • 用于存储虚拟内存页面的磁盘需要特定软硬件支持;
  • 系统管理员使用的终端可能拥有高优先级;
  • 传送数据的单位有差异:键盘的传送单位是字节,磁盘的是以块为单位;
  • 数据的表示也有差别,采用不同的编码方案;
  • 不同的设备以不同的方式响应错误;

3、组成

I/O设备一般由机械和电子两部分组成:

  • 机械部分:设备本身的物理装置;
  • 电子部分:称作设备控制器或适配器(adapter),在小型和微型机中常采用印刷电路卡插入计算机(接口)中;设备控制器完成设备与主机之间的连接和通讯。从设备驱动器出来的数据是比特流,控制器的任务是把串行的比特流转换为字节块,并进行必要的校验工作后送到内存

4、执行I/O的三种技术

  • 程序控制I/O:处理器代表一个进程给I/O模块发送一个I/O命令,然后该进程进入忙等待,直到操作完成才可以继续执行;
  • 中断驱动I/O:处理器代表进程向I/O模块发出一个I/O命令。如果来自进程的I/O指令是非阻塞的,那么处理器继续执行发出I/O命令的进程的后续指令;如果I/O指令是阻塞的,那么处理器执行的下一条指令则来自操作系统,它将当前的进程设置为阻塞态并且调度其他进程(操作系统将I/O命令写入控制器寄存器中并且I/O操作完成时控制器产生一个中断唤醒被阻塞的进程)
  • 直接存储器访问(DMA):一个DMA模块控制内存和I/O模块之间的数据交换。为传送一块数据,处理器给DMA模块发送请求,并且只有当整个数据块传送结束后它才被中断

5、I/O功能的逻辑结构

  • 逻辑I/O:设备无关的I/O软件。实现一般设备都需要的I/O功能,向用户层软件提供统一接口。提供一个与设备无关的块大小,屏蔽“不同设备基本单位可以不同”这一事实,向较高层软件提供统一块大小的抽象设备。通过缓冲区来协调设备的读写速度和用户进程的读写速度。
  • 设备I/O:请求的操作和数据被转换成适当的I/O指令序列、通道命令和控制器指令。可以使用缓冲技术来提高利用率。
  • 调度和控制:是I/O模块和设备硬件真正交互的软件层。通常体现为设备驱动程序:并发I/O访问调度,设备控制和状态维护,中断处理。工作流程为:接收来自逻辑I/O软件的抽象请求,将其转为具体形式(如计算要读写的块的确切位置);执行这个请求,即通过设备控制器中的寄存器向控制器发出I/O命令并监督执行;在I/O操作完成后进行错误检查,若无错则将数据传送到与设备无关的软件层,否则出错处理;返回状态信息。

一种具有代表性的结构是:

  • 目录管理:在这一层中,符号文件名被转换成标识符,用标识符可以通过文件描述符表或索引表直接或间接地访问文件。这一层还处理影响文件目录的用户操作,如添加、删除、重新组织等。
  • 文件系统:这一层处理文件的逻辑结构以及用户指定的操作,如打开、关闭、读、写等。还管理访问权限。
  • 物理组织:考虑到辅存设备的物理磁道和扇区结构,对于文件和记录的逻辑访问也必须转换成物理外存地址。辅助存储空间和内存缓冲区的分配通常也在这一层处理。

6、OS设计层次

二、直接存储器访问(DMA)

1、工作流程(处理器向DMA模块发送控制信息):

  • 请求读操作或写操作的信号,通过在处理器和DMA模块之间使用读写控制线发送;
  • 相关的I/O设备地址,通过数据线传送;
  • 从存储器中读或者往存储器中写的起始地址,在数据线上传送,并由DMA模块保存在其地址寄存器中;
  • 读或写的字数,也通过数据线传送,并由DMA模块保存在其数据计数寄存器中。

此后处理器继续执行其他工作,此时它已经把这个I/O操作委托给DMA模块。DMA模块直接从存储器中或往存储器中传送整块数据,一次传送一个字,数据不再需要通过处理器。传送结束后,DMA模块给处理器发送一个中断信号。因此,只有在传送开始和结束时才会用到处理器。

2、使用DMA方式的一次磁盘读过程:

  1. CPU提供被读取块的磁盘地址、目标存储地址、要读取的字节数;
  2. 控制器将整块数据读进缓冲区,并进行核准校验;
  3. 控制器按照指定存储器地址,把指定字节数数据送人主存(每传送一个字节计数器的值减1)
  4. 控制器引发中断,通知操作系统操作完成。

3、DMA的配置方式

单总线,分离DMA:

  • 所有I/O模块共享一个系统总线;
  • DMA模块代理处理器,使用程序控制I/O通过DMA模块在存储器和I/O模块之间交换数据
  • 开销小但低效;
  • 一个字节的传送需要两个总线周期(传送请求+传送)

单总线,I/O集成DMA:

  • DMA模块与I/O模块的数据交换脱离系统总线;
  • 除系统总线外,在DMA模块和一个或多个I/O模块之间还存在着一条不包含系统总线的路径;
  • DMA模块接口多样;

这种方式大大减少所需要的总线周期的数目,此时的DMA实际上可能就是I/O模块的一部分或者可能是控制一个或多个I/O模块的一个单独模块。

I/O总线:

  • DMA模块与I/O模块的数据交换脱离系统总线;
  • 通过一个I/O总线连接I/O模块和DMA模块;
  • DMA模块接口单一,便于扩展;

对于【单总线,I/O集成DMA】以及【I/O总线】方式,内存所共享的系统总线,仅仅用于DMA模块同内存交换数据以及同处理器交换控制信号。DMA和I/O模块之间数据交换是脱离系统总线完成的

4、DMA方式与中断方式的主要区别

设备与内存之间的数据传送的控制者不同:

  • 中断方式中是由CPU控制完成的;
  • DMA方式中则是由DMA控制器完成的(传送时不需要占用CPU时间)

5、DMA的周期窃取技术(cycle stealing)

DMA控制器从CPU中夺取系统控制权,用来在系统总线上与内存进行数据交换。

此时指令周期被挂起,CPU暂停一个总线周期但并不是中断,不用保存上下文信息。

6、使用中断方式的一次磁盘读过程

  1. 操作系统将(带参数的)I/O命令写入控制器寄存器;
  2. 控制器从磁盘驱动器串行地一位一位地读一个块,直到将整块信息放入控制器的内部缓冲区中;
  3. 控制器做和校验计算,以核实无读错误发生,然后控制器产生一个中断;
  4. CPU响应中断,控制权转给操作系统;
  5. 操作系统重复地从控制器缓冲区中一次一个字节或一个字地读这个磁盘块的信息,并将其送入内存中。、

三、假脱机技术SPOOL

脱机处理

脱机处理是一种计算机技术,是指在不受主机控制的外部设备上进行数据处理,或与实时控制系统、主机不直接相连的数据处理。常用于主机速度不高的数据处理中提高设备的利用率。

假脱机技术

也称为虚拟设备技术,在多道批处理系统中,专门利用一道程序来完成对设备的I/O操作,无需使用外围I/O处理机。

原理:

  • 设置两级缓冲区:内存缓冲区和快速外存上的缓冲池,后者可以暂存多批I/O操作的较多数据;
  • 应用程序进行I/O操作时,只是和SPOOLing程序交换数据,称为“虚拟I/O”——实际上是对SPOOLing程序的缓冲池进行I/O操作;
  • SPOOLing程序和外设进行数据交换,称为“实际I/O”——可以缓冲。

优点:

  • 高速虚拟I/O操作;
  • 实现对独享设备的共享;

四、I/O缓冲

1、原因

  • I/O不均匀;
  • 进程必须要等待I/O操作完成才能继续;
  • 执行I/O操作期间一些页面必须保留在主存;

讨论缓冲方法时,有时候需要区分两类I/O设备:

  • 面向块的设备:信息保存在固定大小的块中,传送必须以块为单位(如磁盘,U盘);
  • 面向流的设备:信息以字节流的形式传送(如打印机、鼠标);

2、单缓冲:OS为一个I/O请求在内存分配一个缓冲区

面向块的:

  • 输入传送到缓冲区;
  • 需要时缓冲区中的块被移到用户空间;
  • 再移入另外一块到缓冲区——预读(因为数据通常是被顺序访问的)

面向流的:

  • 每次传送一行或一个字节(缓冲区用来保存一行或者一个字节的输入/输出);
  • 用户每次输入一行或一个字节,并以回车表示输入结束;
  • 输出终端也是每次输出一行或一个字节。
  • 输入期间用户进程被挂起,等待整行的到达;输出时用户进程可以把一行输出放置在缓冲区中,然后继续执行,不需要挂起,除非在第一次输出操作的缓冲区内容清空之前又需要发送第二行输出。

3、双缓冲

使用两个缓冲区,在OS清空或填充一个缓冲区时,进程可以传送数据到另一个缓冲区(或从另一个缓冲区读取数据);

4、循环缓冲

  • 使用超过两个的缓冲区,每个缓冲区是循环缓冲区的一个单元;
  • 使I/O操作能跟上进程的速度;(爆发式I/O)

5、缓冲池

设备输入输出和CPU读写等操作互斥地访问各个缓冲区队列。

五、磁盘调度

1、磁盘的物理结构

  • 磁盘是将若干个涂有铁磁的圆形金属或塑料片组合在一起构成的盘组,每个圆盘有上下两个盘面;
  • 每个盘面有一个读写磁头,读写磁盘时,磁头通过存取臂在盘面上移动,而盘体绕中心轴高速旋转。

2、磁盘硬件

  • 盘组旋转一周,相对固定的磁头在盘面上的移动轨迹(圆形)称为磁道,各个盘面上半径相同的磁道合起来构成一个柱面。
  • 一个磁道又被分成许多扇区,一般每条磁道上扇区数目在8-32之间,每个扇区的字节数相同(一般为512)
  • 读写一个磁盘块:将存取臂移动到相应的柱面上(移臂/寻道);等待相应扇区旋转到磁头下(旋转);实际传输。
  • 寻道时间占一次磁盘读写时间的大部分;
  • 重要特性:是否可以同时控制两个或多个存取臂驱动器同时进行寻道(重叠寻道)

3、磁盘调度

寻道时间(存取臂移动到相应柱面上)是影响磁盘性能的最主要因素:

采用合适的调度算法以减少平均寻道时间。(随机调度性能最差)

先进先出算法

  • 按访问请求到达的先后次序服务;
  • 相邻两次请求可能会造成最内到最外的柱面寻道,使磁头反复移动,增加了服务时间;

最短服务时间优先

  • 优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先;
  • 改善了磁盘平均服务时间,但可能造成某些访问请求长期等待,得不到服务;

扫描算法

  • 当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,若有则继续扫描,否则改变移动方向,并为经过的访问请求服务,如此反复。
  • 克服了请求可能会长期等待的缺点;

单向扫描算法:

  • 从有读写请求的最低编号柱面开始递增扫描,途中按照柱面次序处理访问请求;处理完最高编号柱面上的请求后存取臂立即带动读写磁头快速返回到有读写请求的最低编号柱面,返回时不处理任何访问请求;返回后可再次递增扫描。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值