操作系统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命令等待其完成
    • 不引入线程切换,减少开销
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑马金牌编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值