[笔记]《操作系统精髓与设计原理》---(5)I/O管理和磁盘调度

I/O设备

这里写图片描述

I/O功能的组织

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

这里写图片描述


操作系统设计问题

设计目标

  • 效率,I/O是计算机系统的瓶颈,最受关注的是磁盘。
  • 通用性,层次化、模块化的方法设计I/O功能,隐藏了大部分I/O设备底层例程中的细节,使得用户进程和操作系统高层可以通过如读、写、打开、关闭、加锁、解锁等一些通用的函数来操作I/O设备。

I/O逻辑结构

1.本地外围设备以一种简单的方式进行通信,如字节流或记录流,涉及下面几层:

  • 逻辑I/O:把设备当作一个逻辑资源处理,不关心实际控制设备的细节。
  • 设备I/O:请求的操作和数据被转换成适当的I/O指令序列、通道命令和控制命令。可以用缓冲技术提高利用率。
  • 调度和控制:I/O操作的排毒、调度实际上发生在这一层。处理中断,收集报告I/O状态,与I/O模块的设备硬件真正发生交互的软件层。

2.通信设备

  • 逻辑I/O被通信体系结构取代。

3.文件系统

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

这里写图片描述

缓冲

两类I/O设备

  • 面向块I/O设备:将信息保存在块中,大小通常是固定的,传送过程中1次传送1块。通过块访问数据。
  • 面向流I/O设备:以字节流的方式输入/输出数据,没有块结构。

无缓冲

  • 程序被挂起,等待相对比较慢的I/O完成。
  • 干扰了操作系统交换决策,数据块传送期间,相应的虚拟地址必须保留在内存中,否则数据可能丢失。如果使用分页机制,至少需要将目标地址单元的页锁定在内存中。

单缓冲

  • 对于块设备:输入传送的数据被放在系统缓冲中。传送完成时,进程把该块移动到用户空间,并立即请求另一块。称为预读。原因是期望这块数据最终会被使用。这种假设大多数合理,数据通常是顺序访问。
  • 对于流I/O:能以每次传送一行或者每次传送一个字节的方式使用。对于每次传送一行的I/O,用缓冲区保存单独一行数据。在输入期间用户进程被挂起,等待整行的到达。对于输出,用户进程可以把一行输出放置在缓冲区,然后执行。

双缓冲

  • 给操作系统分配两个缓冲区,一个进程往一个缓冲区中传送数据(从这个缓冲区中取数据)的同时,操作系统正在清空(或者填充)另一个缓冲区。能确保该进程不需要等待I/O。

循环缓冲

  • 如果该进程需要爆发式地执行大量的I/O操作,仅有双缓冲不够,通常使用多于两个的缓冲区的方案来缓解不足。这就是生产者/消费者模型。

这里写图片描述

磁盘调度

性能参数

这里写图片描述

  • 寻道时间:磁头定位到磁道所需要的时间称为寻道时间(很难减少)。
  • 旋转延迟:磁头到达扇区开始位置的时间称为旋转延迟。
  • 传输时间:磁头定位完成,磁头就通过下面旋转的扇区,开始执行读操作或者写操作,传输需要的时间。

磁盘调度策略

这里写图片描述
这里写图片描述

  • FIFO,按顺序处理队列中的项目。如果大量进程竞争1个磁盘,性能上接近与随机调度。
  • 优先级,有关调度的控制并不包含磁盘管理软件的控制。并不会优化磁盘的利用率,但可以满足操作系统的其他目标
  • 最短服务时间优先(SSTF),选择磁头臂从当前位置开始移动最少的磁盘I/O请求。
  • SCAN,除了FIFO,上面的策略都有可能使某个请求直到整个队列为空才可以完成。SCAN要求磁头臂沿1个方向移动,满足途中为完成的所有请求,直到到达这个方向上的最后一个磁道,或者没有别的请求为止,接着反转服务方向,反方向扫描。
  • C-SCAN,扫描限定在一个方向,当访问到某个方向的最后一个磁道时,磁头臂返回到磁盘相反方向末端的磁道,并再次扫描。
  • N-step-SCAN,磁盘请求队列分成长度为N的子队列,每1次用SCAN处理一个子队列。处理某个队列时,新请求添加到其他某个队列中。
  • FSCAN,分成2个子队列。

RAID

独立磁盘冗余阵列(Redundant Array of Indepentdent Disk)。
RAID包括7个级别,0到6,有3个共同特性:

  • RAID是一组物理磁盘驱动器,操作系统把它视为一个单个的逻辑驱动器。
  • 数据分布在物理驱动阵列中,这种设计称为条带化。
  • 使用冗余的磁盘容量保存奇偶校验信息,保证一个磁盘失效时,数据具有可恢复性。

只有RAID 0、1、5、6常用。

这里写图片描述
这里写图片描述

总结

  • I/O功能分层,较低层与物理功能相关,较高层以一种逻辑和通用方式处理I/O。
  • 一个重要方面缓冲区,由I/O实用程序控制,不是由应用程序控制。
    • 缓冲可以平滑计算机系统内部速度和I/O设备速度间的差异。
    • 把实际的I/O传送从应用程序进程的地址空间分离出来。
  • 磁盘调度,按某种方式满足请求,并使磁盘的机械寻到时间最小。
  • 磁盘高速缓存,通常保存在内存中,充当磁盘块在磁盘存储器和其余内存之间的高速缓存。高速缓存可以减少内存和磁盘之间的I/O传送块数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值