前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【系统架构设计师】计算机组成与体系结构 ⑨ ( 磁盘管理 | “ 磁盘 “ 单缓冲区 与 双缓冲区 | “ 磁盘 “ 单缓冲区 与 双缓冲区案例 )

【系统架构设计师】计算机组成与体系结构 ⑨ ( 磁盘管理 | “ 磁盘 “ 单缓冲区 与 双缓冲区 | “ 磁盘 “ 单缓冲区 与 双缓冲区案例 )

作者头像
韩曙亮
发布2024-07-09 08:48:58
960
发布2024-07-09 08:48:58
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、" 磁盘 " 单缓冲区 与 双缓冲区

磁盘缓冲区 的

  • 单缓冲区
  • 双缓冲区

是两种 不同的设计策略 , 用于 优化 数据 读取 和 写入 的效率 ;

1、" 磁盘 " 单缓冲区

只有一个缓冲区用于 存储数据 和 写出数据 , 无论是 读取数据 还是 写入数据 , 都使用同一个缓冲区 ;

  • 读取数据 : 当系统需要从磁盘读取数据时 , 数据首先被读取到单个缓冲区中 ;
  • 写入数据 : 当系统需要将数据写入磁盘时 , 写入操作也使用同一个缓冲区 ;

读取 和 写入 数据操作 不能并行进行 , 因为同一个缓冲区同时只能处理一个操作 , 会影响系统的响应速度和效率 ;

2、" 磁盘 " 双缓冲区

系统 有两个独立的缓冲区 , 分别用于 读取 和 写入 数据操作 ;

  • 读取数据 : 从磁盘 读取 数据时 , 数据被读取到 读缓冲区 中 ;
  • 写入数据 : 向磁盘 写入 数据时 , 数据被写出到 写缓冲区 中 ;

磁盘双缓冲区 允许 读取 和 写入 操作同时进行 , 能够有效地提高系统的并行处理能力和响应速度 ;

二、" 磁盘 " 单缓冲区 与 双缓冲区案例


1、案例描述

磁盘块 与 磁盘缓冲区 大小相同 ,

磁盘块 读取数据 到 磁盘缓冲区 的时间是 15 μs 微秒 ,

内存中的 磁盘缓冲区 将 数据送到 内存中的 用户区 需要的时间是 5 μs 微秒 ,

内存中 用户区 对 每块数据 的处理时间是 1 μs 微秒 ,

将 10 个 磁盘块 大小的 文件 , 读入到 磁盘缓冲区 , 然后送到 用户区处理 , 采用 磁盘单缓冲区 和 磁盘双缓冲区 各自要花费多少时间 ;

2、磁盘单缓冲区 - 流水线分析

分析 磁盘单缓冲 的系统 中 单块 数据块 从 磁盘 到 内存用户区 的耗时 :

  • 磁盘单缓冲区 电路图如下 :
  • 磁盘 中的 数据块 读取到 磁盘缓冲区 需要 15 μs ;
  • 将 数据块 从 磁盘缓冲功能 送入到 内存用户区 需要 5 μs , 该过程中 磁盘缓冲区 一直在占用 , 无法被写入 ;
  • 数据需要 20 μs 才能将一个 数据块 传输到 内存用户区 , 然后才能进行下一个 磁盘数据块 的传输 , 这 20 μs 的工作完成后 执行如下操作 ,
    • 并行操作 内存工作区处理数据块 : 数据 在 内存中的工作区 进行处理 耗时 1 μs , 该操作 与 下一轮 的 数据块传输 是 并行操作 , 不会占用额外的之间 , 只有最后一轮 10 个磁盘块 消耗了
    20 \times 10

    μs 时间之后 , 还需要额外消耗 1 μs 进行数据处理 ;

    • 并行操作 下一轮数据块传输 : 数据在工作区开始处理 时 , 下一块 磁盘 中的 数据块 同时 开始 向 磁盘缓冲区 中传输 , 又要需要
    15

    μs , 该操作 与 上一轮的数据块 在 内存工作区处理 是并行的操作 ;

  • 上述 数据块 传输了 10 次 , 消耗了
20 \times 10

μs , 此时 内存用户区 还要处理 最后一个数据块 , 再额外消耗 1 μs ;

  • 时序图如下 :

最终时间消耗 :

20 \times 10 + 1 = 201

μs

3、磁盘双缓冲区 - 流水线分析

分析 磁盘单缓冲 的系统 中 单块 数据块 从 磁盘 到 内存用户区 的耗时 :

  • 磁盘双缓冲区 电路图如下 :
  • 磁盘 中的 数据块 读取到 磁盘缓冲区 需要 15 μs ;
    • 并行操作 - 传输数据到内存用户区 : 将 数据块 从 磁盘缓冲功区 送入到 内存用户区 需要 5 μs , 该过程中 磁盘缓冲区 B 是空闲的 , 可以同时进行下一个数据块读取 ;
      • 串行操作 - 数据 从 缓冲区传输到内存用户区 : " 从 磁盘缓冲功区 送入到 内存用户区 " 5 μs 与 下一轮 的数据传输 是并行的 , 因此只需要考虑 " 磁盘 中的 数据块 读取到 磁盘缓冲区 需要 15 μs " 即可 ;
      • 串行操作 - 内存工作区处理数据块 : 数据 在 内存中的工作区 进行处理 耗时 1 μs , 该操作 与 " 数据 从 缓冲区传输到内存用户区 " 的 5 μs , 总共用时 6 μs , 与之并行的任务耗时 15 μs , 并不会影响时间消耗 ;
    • 并行操作 - 下一个数据库传输 : 下一个数据块 从 磁盘中 读取到 另外一个磁盘缓冲区中 , 耗时 15 μs , 该过程与上面的 " 将 数据块 从 磁盘缓冲功区 送入到 内存用户区 " 操作 同时进行 ;
  • 上述 数据块 传输了 10 次 , 消耗了
15 \times 10

μs , 此时 最后一个数据块 , 数据 从 缓冲区传输到内存用户区 耗时 5 μs , 内存用户区 处理数据 再额外消耗 1 μs ;

  • 时序图如下 :

最终时间消耗 :

15 \times 10 + 5 + 1 = 156

μs

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、" 磁盘 " 单缓冲区
  • 2、" 磁盘 " 双缓冲区
  • 二、" 磁盘 " 单缓冲区 与 双缓冲区案例
    • 1、案例描述
      • 2、磁盘单缓冲区 - 流水线分析
        • 3、磁盘双缓冲区 - 流水线分析
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档