【操作系统】I/O缓冲

I/O缓冲

通过缓存是提高效率的很重要的一种手段,缓冲是牺牲空间换取时间的一种思想

引入

一、没有缓冲时

假设从磁盘读入数据,每次读一块(512字节),没有缓冲时:

  • 对磁盘单元发送一个I/O命令,并等待数据完成,进程可以忙等(低效),也可以被暂停等待中断
    • 程序被阻塞,需要等待较慢的I/O
    • 这种I/O操作干扰了操作系统的交换决策:进程不能全部换出,读入数据的区域需要驻留内存

二、缓冲引入

1. 缓冲
  • 在输入请求发出前开始输入传送

  • 在输出请求发出后一段时间后才开始执行输出传送

2. 两种I/O设备
  • 面向块的设备:
    • 信息保存在块中,块的大小固定
    • 一次传送一个块
    • 通过块号访问数据
    • 代表设备:磁盘、USB卡
  • 面向流的设备:
    • 以字节流的方式输入/输出数据
    • 没有块的结构
    • 代表设备:终端、打印机、通信端口、鼠标及其他大多数非辅存设备

三、无缓冲

无缓冲时,操作系统直接在需要时访问设备

在这里插入图片描述

单缓冲

在这里插入图片描述

操作系统在内存中给I/O请求分配一个缓冲区

在这里插入图片描述

一、面向块设备的单缓冲

  • 采用预读/预先输入

    • 期望输入的数据块最终会被使用

    • 输入的数据被放到系统缓冲区中

    • 传送完成时,进程将数据块移到用户空间,并立即请求下一块

      也就是:上一个Move之后,马上可以开始传输下一个数据到缓存了

      但是!move的话,例如M2要开始,得先看T2和C1运行结束了没有

  • 相对于没有系统缓冲的情况,预读方式可以提高数据获取速度

    • 可以在读取下一块数据时,处理已经读入的数据
  • 不足

    • 使操作系统的逻辑变得更复杂
      • 操作系统需要记录给每个进程分配的系统缓冲情况区
    • 交换逻辑也受到影响

二、面向流设备的单缓冲

  • 每次传送一行
    • 适用于滚动模式的终端(哑终端)
    • 用户每次输入一行,以回车键结束输出时,也是每次输出一行,如行式打印机
  • 每次传送一个字节
    • 适用于表格式的终端
    • 用户每次击键很重要
    • 其他外围设备如传感器、控制器等

双缓冲

  • 使用两个缓冲

  • 进程向一个缓冲区中传送(或取出)数据时,操作系统正在清空(或填充)另一个缓冲区

  • 也称为缓冲交换

    在这里插入图片描述

    理解:

    单缓冲,因为只有一个缓冲区,所以T入缓冲后还有把缓冲区里的数据Move走

    但是双缓冲,可以不用管

循环缓冲

  • 使用两个或多个缓冲区 构成循环缓冲

  • 当希望I/O操作跟上进程执行速度时,使用循环缓冲

    在这里插入图片描述

缓冲的作用

  • 缓解I/O设备速度与CPU速度不匹配的矛盾
    • 当进程的需求大于I/O设备的服务能力时,进程推进与I/O设备的操作将不能并驾齐驱
    • 进程每处理完一块数据后得停下等待
  • 在多道程序环境中,当存在多种I/O活动和多种进程活动时,缓冲可以提高操作系统效率,提高单个进程的性能

Spooling技术(磁盘中的缓冲)

一、概述

SPOOLing技术(磁盘中的缓冲)

  • 磁盘中建立I/O缓冲区,缓和CPU的高速性与I/O设备低速性间的矛盾
  • 在联机(即CPU控制)情况下实现的同时外围操作称为SPOOLing (Simultaneous Peripheral Operating On Line),或称为假脱机操作
    • 在联机(即CPU控制)情况下实现的同时外围操作”:即CPU可以继续处理其他任务,同时进行I/O操作
  • 通过SPOOLing技术便可将一台独占物理I/O设备虚拟为多台逻辑I/O设备,从而允许多个用户共享一台物理I/O设备

二、组成

在这里插入图片描述

因为有输入输出两个进程,这说明该技术必须要有多道程序技术的支持

三、应用

打印机为例,说明SPOOLing系统是如何实现虚拟设备的

  • 打印机:

    • 独占设备

      • 只允许各个进程串行使用的设备

      而共享设备:允许多个进程“同时”使用的设备。

      这里注意:宏观上是同时使用,微观上可能是交替使用

    • 利用SPOOLing技术,将其改造为共享设备,从而提高设备的利用率

    在这里插入图片描述

四、特点

  • 提高I/O速度
    • 低速I/O设备进行的操作,演变为对输入/输出井中数据的存取
  • 将独占设备改造为共享设备
    • 实际上并没为任何进程分配设备,而只是在输入井或输出井中为进程分配一个存储区和建立一张I/O请求表
  • 实现了虚拟设备功能
    • 系统实现了将独占设备变换为若干台对应的逻辑设备的功能
    • 虚拟设备:通过虚拟技术将一台独占物理设备变换为若干台逻辑设备,供若干个用户(进程)同时使用
  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值