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

文章目录

  • 一、" 磁盘 " 单缓冲区 与 双缓冲区
    • 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…

C#中PostgreSql操作类的设计

在C#中设计一个PostgreSQL操作类,可以利用Npgsql库,它是PostgreSQL的.NET数据提供者。以下是一个简单的PostgreSQLHandler类设计,它提供了基本的数据库操作,如连接、查询、插入、更新和删除。 Csharp 1using System; 2using Npgsql; 3 4public class PostgreSQLHandler 5{…

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>

Linux防火墙与安全配置:使用iptables和firewalld

Linux防火墙与安全配置&#xff1a;使用iptables和firewalld 引言 在数字化时代&#xff0c;网络安全的重要性不言而喻。防火墙作为网络安全的基石&#xff0c;扮演着守护网络安全的重要角色。本文将深入探讨如何使用iptables和firewalld来配置防火墙&#xff0c;确保系统的安…

编译器(1)AI for compiler

简介 使用人工智能技术来改进编译器的性能和功能是一个激动人心的领域。以下是一些利用人工智能技术来改进编译器的方法和应用&#xff1a; 自动优化&#xff1a; 利用机器学习和深度学习技术&#xff0c;可以训练模型来自动优化编译器生成的代码。例如&#xff0c;可以使用神…

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…

spring中IOC相关介绍

引言 1. 春之始&#xff1a;Spring框架的诞生与成长 在软件开发的广阔天地中&#xff0c;Spring框架以其优雅和强大的功能&#xff0c;成为了Java开发领域的一股春风。自2003年首次发布以来&#xff0c;Spring框架不断演进&#xff0c;逐渐成为企业级应用开发的首选。Spring的…

unity对于文件夹的操作

1、获取目标文件夹内所有文件夹 string[] directories Directory.GetDirectories(Path);for (int i 0; i < directories.Length; i){print(directories[i]);}2、获取目标文件夹内指定文件 public List<string> GetAllTxt(string path){//只获取文件名string[] files…

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)…

【每日一练】python字符串

接受用户输入的字符串&#xff0c;然后反转字符串并输出。 str input("Enter a string: ") print(str[::-1])接受用户输入的字符串和一个字符&#xff0c;然后统计该字符在字符串中出现的次数。 str input("Enter a string: ") character input("…

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…