首页 > 其他分享 >存储系统-cache-磁盘

存储系统-cache-磁盘

时间:2024-03-30 18:34:09浏览次数:24  
标签:cache 存储系统 Cache 主存 访问 磁道 磁盘 CPU

  • 计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。

  • 两级存储:Cache-主存、主存-辅存(虚拟存储体系)。

  • 局部性原理:总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:

    1. 时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,既在相邻的时间里会访问同一个数据项
    2. 空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,既相邻的空间地址会被连续访问
  • 高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU进行交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内存是主存内存的副本拷贝,对于程序员来说是透明的。

  • Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。

  • 地址映射:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换我Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列三种方法:

    1. 直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也既二者块号相同才能命中。地址变换简但不灵活,容易造成资源浪费。

    2. 全相联映像:同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式

    3. 组组相连映像:前面两种方式的结合,将Cache存储器先分块在分组,主存也同样先分块在分组,组间采用直接映像,既主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也既组号相同的两个组内的所有块可以任意调换。

  • Cache的替换算法:替换算法的目的就是使Cache获得尽可能高的命中率。常用算法有如下几种:

    1. 随机替换算法:就是用随机数发生器产生一个要替换的块号,将该块替换出去。
    2. 先进先出算法:就是将最先进入Cache的信息块替换出去。
    3. 近期最少使用算法:这种方法是将近期最少使用的Cache中的信息快替换出去。
    4. 优化替换算法:这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
  • 命中率及平均时间:Cache有一个命中率的概念,既当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90% 命中Cache,则CPU读取一次的平均时间为(90% * 1+ 10% *1000)ns

  • 基本概念:K、M、G是数量单位,在存储器里相差1024倍。b,B是存储单位,1B=8b

  • 磁盘结构和参数
    磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
    磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
    注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。

  • 磁盘调度算法
    磁盘数据的读取时间分为寻道时间+旋转时间,既先找到对应的磁道,而后在旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:
    先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
    最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,既远处进程可能永远无法访问。
    扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
    单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,既只能从里向外或者从外向里。

标签:cache,存储系统,Cache,主存,访问,磁道,磁盘,CPU
From: https://www.cnblogs.com/happyhf/p/18105843

相关文章

  • 每个程序员都应该了解的内存知识(二): CPU Cache
    CPUCache架构每个程序员都应该了解的内存知识.pdf-p22-每个程序员都应该了解的内存知识-P22-20240328112647​​每个程序员都应该了解的内存知识.pdf-p23-每个程序员都应该了解的内存知识-P23-20240328112807​​每个程序员都应该了解的内存知识.pdf-p23-每个......
  • KingbaseES 避免wal日志占用大量磁盘空间
    背景wal日志一直增长很快,查看归档目录也在执行归档,归档无异常,是归档执行太慢的原因吗?还是wal日志生成的太快了的原因呢?现场环境wal日志的磁盘空间比较小。分析首先我们分析可否加速归档速度呢,因为如果能加快归档速度就可以缓解wal日志所在磁盘空间紧张的问题,答案是不可以。arc......
  • Linux——磁盘与文件系统管理
    目录磁盘分区的表示硬盘分区分区类型确认系统中的磁盘设备——fdisk规划硬盘中的分区——fdisk文件系统 文件系统类型:在分区中创建文件系统——mkfs,mkswap挂载文件系统mount命令umount命令查看分区挂载情况设置启动载入(永久挂载文件系统)建立一个新文件系统步骤......
  • defrag" 命令的帮助信息,该命令用于对磁盘进行碎片整理操作
    Windows系统中"defrag"命令的帮助信息,该命令用于对磁盘进行碎片整理操作。下面是对其中的参数和选项的翻译:Volumes:/C|/AllVolumes:对每个卷只运行给定操作列表中的首选操作。/E|/VolumesExcept<volumepaths>:在每个卷上执行除了指定的操作外的所有操作。如果例外......
  • chkdsk 命令参数 检查磁盘并显示状态报告
    chkdsk/?检查磁盘并显示状态报告。CHKDSK[volume[[path]filename]]][/F][/V][/R][/X][/I][/C][/L[:size]][/B][/scan][/spotfix]volume       指定驱动器号(后跟冒号)、挂载点或卷名称。filename      仅适用于FAT/FAT32:指定要检查碎......
  • npm cache clean --force
    根据错误信息,gyp在执行node-p"require('node-addon-api').include"时返回了退出代码1,并在binding.gyp文件中出现了错误。这种情况可能是由于构建过程中缺少必要的依赖项或工具链导致的。以下是一些可能的解决方案:确保您的系统已正确安装了Node.js的相关构建工具。您......
  • iOS - Runtime - Class-方法缓存(cache_t)
    文章目录iOS-Runtime-Class-方法缓存(cache_t)1.散列表的存取值iOS-Runtime-Class-方法缓存(cache_t)Class内部结构中有个方法缓存(cache_t),用散列表(哈希表)来缓存曾经调用过的方法,可以提高方法的查找速度。(使用空间换时间的方式来提升速度)其中,_buckets就......
  • npm ERR! path /Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3
    在使用npm时,有时候您可能会遇到类似以下错误的权限问题:npmERR!path/Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3npmERR!codeEACCESnpmERR!errno-13npmERR!syscallopennpmERR!Error:EACCES:permissiondenied,open'/Users/apple/......
  • http协议中缓存Cache-Control详解
    Cache-Control是一个HTTP/1.1协议中的头部字段,用于指定请求和响应遵循的缓存机制。通过这个头部,服务器可以告诉客户端响应可以被缓存多长时间,以及在什么条件下可以被缓存和重新使用。以下是一些常见的Cache-Control指令:基本指令no-cache表示响应不应该被缓存,除非得到......
  • Linux磁盘管理
    1.命令df用于查看已挂载磁盘的总容量、使用容量、剩余容量等。可以不加任何参数,默认以KB为单位显示。2.命令du用来查看某个目录或文件所占空间的大小格式:du[-abckmsh][文件或者目录名]。-a:表示全部文件和目录的大小都列出来。如果后面不加任何选项和参数,则只会列......