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

文章目录

  • 一、" 磁盘 " 单缓冲区 与 双缓冲区
    • 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.mfbz.cn/a/770156.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Avalonia应用在基于Linux的国产操作deepin上运行

deepin系统介绍 deepin(原名Linux Deepin)致力于为全球用户提供美观易用,安全可靠的 Linux发行版。deepin项目于2008年发起,并在2009年发布了以 linux deepin为名称的第一个版本。2014年4月更名为 deepin,在中国常被称为“深度操作系统”。 …

matlab 干涉图仿真

目录 一、算法概述1、干涉图2、生成步骤 二、代码实现三、结果展示 本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法概述 1、干涉图 干涉图是两束或多束相干光波相遇时,它们的振…

大模型学习笔记3【大模型】LLaMA学习笔记

文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月,由FaceBook公开了LLaMA,包含7B&#xff0…

echarts柱状选中shadow阴影背景宽度设置

使用line,宽度增大到所需要的宽度,设置下颜色透明度就行 tooltip: {trigger: axis,//把阴影的层级往下降z:-15,axisPointer: {type: line,lineStyle: {color: rgba(150,150,150,0.3),width: 44,type: solid,},}, }, series: [{type: bar,barWidth:20,//…

探究Executors创建的线程池(如newFixedThreadPool)其核心线程数等参数的可调整性

java中提供Executors类来创建一些固定模板参数的线程池,如下图(newWorkStealingPool除外,这个是创建ForkJoinPool的,这里忽略): 拿newFixedThreadPool方法创建线程池为例,newFixedThreadPool是…

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第54课-poplang语音编程控制机器人

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第54课-poplang语音编程控制机器人 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的…

代码随想录——柠檬水找零(Leetcode860)

题目链接 贪心 class Solution {public boolean lemonadeChange(int[] bills) {if(bills[0] 10 || bills[0] 20 || bills[1] 20){return false;}int count5 1;int count10 0;for(int i 1; i < bills.length; i){if(bills[i] 5){count5;}if(bills[i] 10){count10;…

uniapp跨域问题解决

找到menifest文件&#xff0c;在文件的最后添加如下代码&#xff1a; // h5 解决跨域问题"h5":{"devServer": {"proxy": {"/adminapi": {"target": "https://www.demo.com", // 目标访问网址"changeOrigin…

freemarker生成pdf,同时pdf插入页脚,以及数据量大时批量处理

最近公司有个需求&#xff0c;就是想根据一个模板生成一个pdf文档&#xff0c;当即我就想到了freemarker这个远古老东西&#xff0c;毕竟freemarker在模板渲染方面还是非常有优势的。 准备依赖&#xff1a; <dependency><groupId>org.springframework.boot</gr…

大华设备接入GB28181/GAT1400视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤

智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强&#xff0c;支持多协议接入&#xff0c;包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等&#xff0c;并能对外分发RTMP、…

vue H5页面video 视频流自动播放, 解决ios不能自动播放问题

视频组件 <videostyle"width: 100%; height: 100%;object-fit: fill"class"player"refplayer_big_boxcontrolspreloadautoplay //自动播放muted //是否静音playsinline"true"x5-playsinline""webkit-playsinline"tru…

Vanchip新一代WiFi产品全新亮相

1‧ 研讨会介绍 随着 Wi-Fi7 时代的到来&#xff0c;高频信号衰减较高&#xff0c;因此需要外挂 FEM 电路以提高发射信号的增益&#xff0c;从而保障远距离通信的效果和范围。WiFi-FEM 逐渐成为智慧手机、路由器等终端产品中的标配芯片。Vanchip 针对客户的迫切需求&#x…

AI+若依框架(低代码开发)

一、若依介绍 1.版本介绍 若依为满足多样化的开发需求&#xff0c;提供了多个版本 RuoYi-Vue&#xff08;SpringBootVue的单体项目&#xff09; RuoYi-Cloud&#xff08;SpringCloudVue的微服务版本项目&#xff09; RuoYi-App&#xff08;UniappVue移动版本&#xff09; Ru…

Linux_管道通信

目录 一、匿名管道 1、介绍进程间通信 2、理解管道 3、管道通信 4、用户角度看匿名管道 5、内核角度看匿名管道 6、代码实现匿名管道 6.1 创建子进程 6.2 实现通信 7、匿名管道阻塞情况 8、匿名管道的读写原子性 二、命名管道 1、命名管道 1.1 命名管道通信 …

14-4 深入探究小型语言模型 (SLM)

大型语言模型 (LLM) 已经流行了一段时间。最近&#xff0c;小型语言模型 (SLM) 增强了我们处理和使用各种自然语言和编程语言的能力。但是&#xff0c;一些用户查询需要比在通用语言上训练的模型所能提供的更高的准确性和领域知识。此外&#xff0c;还需要定制小型语言模型&…

IDEA:插件和配置推荐(2024版)

文章目录 一、插件1.1 主题1.2 代码缩略图1.3 Maven插件2.4 彩虹括号2.5 翻译插件2.6 图标插件2.7 MyBatis插件2.8 阿里巴巴开发规范 二、全局配置2.1 主题2.2 字符编码2.3 注释颜色2.4 自动导包2.5 鼠标控制界面大小 三、新项目设置3.1 Maven3.2 SDK 四、恢复初始化 一、插件 …

flutter开发实战-Charles抓包设置,dio网络代理

flutter开发实战-Charles抓包设置 在开发过程中抓包&#xff0c;可以看到请求参数等数据&#xff0c;方便分析问题。flutter上使用Charles抓包设置。dio需要设置网络代理。 一、dio设置网络代理 在调试模式下需要抓包调试&#xff0c;所以需要使用代理&#xff0c;并且仅用H…

操作系统缓存与缓冲

缓存与缓冲 缓冲区是一块临时存储数据的区域&#xff0c;这些数据后面会被传输到其他设备上。缓冲区更像消息队列&#xff0c;用以弥补高速设备和低速设备通信时的速度差&#xff0c;平衡读写速度。例如&#xff1a;IO中内核缓冲区Ring Buffer。 缓存&#xff1a;存在于速度相…

鸿蒙应用开发之Badge容器

在开发应用的时候,经常需要一些提示,特别当用户打开应用时,有一些事情需要提醒一下用户,但是不能自动打开这个窗口提示,这样会让用户比较烦。所以设计一些提示显示来告诉用户,这里有新东西了,赶紧来点击一下查看。 比如像下面例子显示的界面: 在这里显示红点的地方,就…