0
点赞
收藏
分享

微信扫一扫

操作系统I/O管理与缓冲区


I/O管理概述



I/O的特点:


资源多、杂,并发,均来自I/O


  • I/O性能经常成为系统性能的瓶颈
  • 操作系统庞大复杂的原因之一:
  • 速度差异很大
  • 应用
  • 控制接口的复杂性
  • 传送单位
  • 数据表示
  • 错误条件

设备的分类——按数据组织分


块设备


  • 以数据块为单位存储、传输信息
  • 传输速率较高、可寻址(随机读写)

字符设备


  • 以字符为单位存储、传输信息
  • 传输速率低、不可寻址

设备的分类——从资源分配角度


独占设备


  • 在一段时间内只能有一个进程使用的设备,一般为低速I/O设备(如打印机,磁带等)

共享设备


  • 在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘)

虚设备


  • 在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备。

目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率



IO设备组成


  • IO设备一般由机械和电子两部分组成
  • (1)机械部分是设备本身(物理装置)
  • (2)电子部分又称为设备控制器(或适配器)


引入缓冲技术解决什么问题?


操作系统中最早引入的技术


  • ——》解决CPU与IO设备之间速度的的匹配问题
  • 凡是数据到达和离去速度不匹配的地方均可采用缓冲技术
  • ——》提高CPU与IO设备之间的并行性
  • ——》减少了IO设备对CPU的中断请求次数,房款CPU对中断响应时间的要求。

缓冲技术实现


  • 缓冲区分类
  • 硬缓冲:由硬件寄存器实现(例如:设备中设置的缓冲区)
  • 软冲区:在内存中开辟一个空间,用作缓冲区
  • 缓冲区管理
  • 单缓冲
  • 双缓冲
  • 缓冲池(多缓冲,循环缓冲):统一管理多个缓冲区,采用有界缓冲区的生产者/消费者模型对缓冲池中的缓冲区进行循环使用


UNIX SYSTEM V    缓冲技术


  • 采用缓冲池技术,可平滑加快信息在内存和磁盘之间的传输
  • 缓冲区结合提前读和延迟写技术对具有重复性及阵法性IO进程、提高IO速度很有帮助
  • 可以充分利用之前从磁盘读入、虽已传入用户区但仍在缓冲区的数据(尽可能减少磁盘IO的次数,提高系统运行的速度)

缓冲技术的实现:


  • 缓冲池:200个缓冲区(512字节或1024字节)
  • 每个缓冲区由两部分组成:
  • 缓冲控制块或缓冲首部+缓冲数据区
  • 空闲缓冲区队列(av链)
  • 队列头部为bfreelist
  • 设备缓冲队列(b链)
  • 链接所有分配给各类设备使用的缓冲区,按照散列方式组织

UNIX缓冲技术


每个缓冲区同时在av链和b链:


  • 开始:在空闲av链(缓冲区未被使用时)
  • 开始IO请求:在设备IO请求队列和设备b链
  • IO完成:在空闲av链和设备b链


I/O性能问题


  • 使CPU利用率尽可能不被I/O降低
  • 使CPU尽可能摆脱I/O
  • 减少或缓解速度差距——》缓冲技术
  • 使CPU不等待I/O——》异步I/O
  • 让CPU摆脱I/O操作——DNA、通道

异步传输


  • Windows提供两种模式的IO操作:
  • 异步和同步
  • 异步模式:用于优化应用程序的性能
  • 通过异步IO,应用程序可以启动一个IO操作,然后再IO请求执行的同时继续处理
  • 基本思想:填充IO操作间等待的CPU时间
  • 同步IO:应用程序被阻塞直到IO操作完成

同步传输IO流程


  • 在IO处理过程中,CPU处于空闲等待状态
  • 而在处理数据的过程中,不能同时进行IO操作


异步传输IO的基本思想


  • 系统实现
  • 通过切换到其他线程保证CPU利用率
  • 对少量数据的IO操作会引入切换的开销
  • 用户实现
  • 将访问控制分成两段进行
  • 发出读取指令后继续做其他操作
  • 当需要用读入的数据的时候,在使用wait命令等待其完成
  • 不引入线程切换,减少开销
举报

相关推荐

0 条评论