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

文章目录

  • 一、" 磁盘 " 单缓冲区 与 双缓冲区
    • 1、" 磁盘 " 单缓冲区
    • 2、" 磁盘 " 双缓冲区
  • 二、" 磁盘 " 单缓冲区 与 双缓冲区案例
    • 1、案例描述
    • 2、磁盘单缓冲区 - 流水线分析
    • 3、磁盘双缓冲区 - 流水线分析






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



磁盘缓冲区 的

  • 单缓冲区
  • 双缓冲区

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


1、" 磁盘 " 单缓冲区


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

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

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


2、" 磁盘 " 双缓冲区


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

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

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





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




1、案例描述


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

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

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

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

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


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


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

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

最终时间消耗 : 20 × 10 + 1 = 201 20 \times 10 + 1 = 201 20×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 × 10 15 \times 10 15×10 μs , 此时 最后一个数据块 , 数据 从 缓冲区传输到内存用户区 耗时 5 μs , 内存用户区 处理数据 再额外消耗 1 μs ;

  • 时序图如下 :

在这里插入图片描述

最终时间消耗 : 15 × 10 + 5 + 1 = 156 15 \times 10 + 5 + 1 = 156 15×10+5+1=156 μs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年电子信息工程与电气国际学术会议 (EIEEE 2024)

2024年电子信息工程与电气国际学术会议 (EIEEE 2024) 2024 International Academic Conference on Electronic Information Engineering and Electrical Engineering 【重要信息】 大会地点:北京 大会官网:http://www.iceieee.co…

Unity休闲手机游戏开发课程

课程介绍 Unity休闲手机游戏开发课程将教您如何利用Unity游戏引擎创建令人愉快的休闲手机游戏。从基础的游戏开发知识到高级的游戏制作技巧,您将学习到创建各种类型的休闲游戏所需的关键技能和工具。无论您是初学者还是有一定经验的开发者,本课程都能帮助…

【Linux】TCP协议【下三】{面向字节流/粘包问题/TCP异常情况/文件和Socket}

文章目录 7.面向字节流TCP(传输控制协议)和UDP(用户数据报协议) 8.粘包问题9.TCP异常情况10.再谈文件和socket的关系 7.面向字节流 创建一个TCP的socket, 同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区;一个链接一对发收缓…

使用Charles实现Android抓包,附带Charles破解教程

1.下载Charles 网址:下载Charles 安装完成后的界面: 2.配置http抓包 点击该选项 可以看到代理的 ip 和端口号 然后在手机的wifi中配置代理(手机和电脑要在同一局域网),代理选择手动,并填入ip和端…

大语言模型测评工具-ChatHub和ChatAll

背景 现在国内外拥有上百个大语言模型,在AI业务中,我们需要在其中选择一个合适业务模型,就需要对这些模型进行测试。手工去测试这么多模型效率一定不高,今天就介绍两个提高测评模型效率的工具 ChatHub和ChatAll。 介绍 ChatHub…

钉钉在MAKE 2024大会上宣布开放AI生态;NBC将用AI主播播报巴黎奥运会内容

🚀 钉钉在MAKE 2024大会上宣布开放AI生态 摘要:钉钉总裁叶军在MAKE 2024生态大会上宣布,钉钉将对所有大模型厂商开放,构建“国内最开放AI生态”。目前已有六家大模型厂商接入钉钉,用户可直接使用七家大模型产品。未来…

UnityUGUI之三 Text

富文本 常用语法&#xff1a; 1.加粗 <b> text </b> 2.斜体 <i> text </i> 3.尺寸 <size?> text </size> 4.颜色 <color#ff0000> text </color>

UE5 02-给物体一个扭矩力

需要注意的是: 1.弹簧臂 可以使用绝对旋转 这样就可以不跟随父物体Player的旋转 2.弹簧臂 进行碰撞测试勾选,当这个弹簧线被遮挡,摄像机会切换到碰撞点位置 进行碰撞测试勾选,当这个弹簧线被遮挡,摄像机不会切换到碰撞点位置

【TypeScript】TS入门到实战(详解:高级类型)

目录 第三章、TypeScript的数据类型 3.1 TypeScript的高级类型 3.1.1 class 3.1.1.1 熟悉class类 3.1.1.2 class类继承的两种方式 3.1.1.3 class类的5种修饰符 3.1.2 类型兼容 3.1.3 交叉类型 3.1.4 泛型 3.1.4.1 创建泛型函数 3.1.4.2 泛型函数的调用 3.1.4.3 泛型…

Chirp信号生成(FPGA、基于cordic IP核)

一、Chirp生成模块介绍 采用Verilog 生成Chirp&#xff0c;实现输入使能电平&#xff0c;模块输出Chirp信号&#xff0c;Chirp信号频率范围&#xff0c;时间宽度&#xff0c;连续Chirp信号数量可配置。 二、模块例化方法示例 parameter FL d20_000 ; parameter FH…

linux命令行操作

一、看二进制文件 od -t x1 1.txt | less 二、看信号 kill -l man 7 signal 三、查看当前进程的pid号 echo $$

Python绘制动态股价曲线图并保存视频

用akshare库获取英伟达(股票代码&#xff1a;105.NVDA) 在2014年6月19日到2024年6月19日期间的股票的收盘价数据&#xff08;用后复权的收盘价&#xff09;&#xff1b; 基于后复权的收盘价数据&#xff0c;做一个动态股价曲线图&#xff0c;逐日显示英伟达股价的动态变化情况&…

PHP反序列化字符逃逸详解

这段时间遇到几个关于反序列化的字符逃逸的程序&#xff0c;今天来分享一下经验。 <?php function filter($str){ return str_replace(bb, ccc, $str); } class A{ public $nameaaaa; public $pass123456; } $AAnew A(); $resfilter(serialize($AA)); $cunserialize($res)…

Vue报错:Component name “xxx” should always be multi-word vue/multi-word-component

问题&#xff1a;搭建脚手架时报错&#xff0c;具体错误如下&#xff1a; ERROR in [eslint] E:\personalProject\VueProjects\vueproject2\src\components\Student.vue10:14 error Component name "Student" should always be multi-word vue/multi-word-compon…

【办公类-52-01】20240703计划小结的缩略版制作(获取字符最多的3个字,删除字后面的内容)

背景需求&#xff1a; 每学期写完“信息计划”“信息小结”都需要上传园所“圆圆通”的信息公开&#xff0c;领导要求使用缩略版&#xff08;就是删掉一些内容&#xff0c;不能整篇都发布出去&#xff0c;以免被抄袭&#xff1f;&#xff09; 2023年第二学期的信息小结有16页 …

CX1概念车空气动力学设计,打造典型“美式肌肉车”风格

Altair CX1概念车的设计 CX1是Altair公司为了满足汽车行业的设计和虚拟仿真需求而开发的一款概念车型。该车总长接近5米&#xff0c;外观具有典型的美式肌肉车的风格&#xff0c;具有视觉冲击力。 车辆的外形设计过程就是风险管理&#xff0c;设计师想要一个大胆而富有表现力的…

赢麻了!苹果再获OpenAI董事会观察员席位!0元白嫖ChatGPT,比肩微软

今年&#xff0c;苹果和OpenAI的合作有点密切。 据最新消息&#xff0c;苹果获得OpenAI的董事会观察员席位。 苹果应用商店负责人、前营销主管菲尔席勒&#xff08;Phil Schiller&#xff09;将担任这一职位&#xff0c;但Schiller迄今为止尚未出席任何OpenAI的会议。 观察员…

C语言刷题小记

前言 本篇博客和大家分享一些C语言的OJ题目&#xff0c;希望大家可以通过这些题目进一步提升自己的编程能力&#xff0c;如果你对本篇内容感兴趣&#xff0c;可以一键三连&#xff0c;多多关注&#xff0c;下面进入正文部分。 题目1 十六进制转十进制 描述 BoBo写了一个十六…

firewalld(6)自定义services、ipset

简介 在前面的文章中我们已经介绍了zone、rich rule 、--direct等功能和基本配置。在前面文章中&#xff0c;我们提到过firewalld内置了很多服务&#xff0c;可以通过firewall-cmd --get-services来查看服务&#xff0c;也可以通过配置文件查看这些服务/var/lib/firewalld/ser…

【Unity 角色控制器组件】

【Unity 角色控制器组件】 Character Controller&#xff1a; Unity 内置的一个组件&#xff0c;用于提供高级的物理控制&#xff0c;允许开发者控制角色的移动、跳跃和碰撞。 csharp csharp // 假设你已经有了一个带有Character Controller组件的游戏对象// 获取Character Co…