磁盘缓存和内存缓存的区别
内存缓存
高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。
原理
Cache一词来源于1967年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。
当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从随机存取存储器(Main memory)中读取数据——由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。
提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。
CPU的缓存曾经是用在超级计算机上的一种高级技术,不过现今电脑上使用的的AMD或Intel微处理器都在芯片内部集成了大小不等的数据缓存和指令缓存,通称为L1缓存(L1 Cache即Level 1 On-die Cache,第一级片上高速缓冲存储器);而比L1更大容量的L2缓存曾经被放在CPU外部(主板或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;更昂贵的CPU会配备比L2缓存还要大的L3缓存(level 3 On-die Cache第三级高速缓冲存储器)。
概念的扩充
如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache。
地址镜像与变换
主条目:CPU缓存#组相联
由于主存容量远大于CPU缓存的容量,因此两者之间就必须按一定的规则对应起来。地址镜像就是指按某种规则把主存块装入缓存中。地址变换是指当按某种镜像方式把主存块装入缓存后,每次访问CPU缓存时,如何把主存的物理地址(Physical address)或虚拟地址(Virtual address)变换成CPU缓存的地址,从而访问其中的数据。
缓存置换策略
主条目:CPU缓存#置换策略、分页和缓存文件置换机制
主存容量远大于CPU缓存,磁盘容量远大于主存,因此无论是哪一层次的缓存都面临一个同样的问题:当容量有限的缓存的空闲空间全部用完后,又有新的内容需要添加进缓存时,如何挑选并舍弃原有的部分内容,从而腾出空间放入这些新的内容。解决这个问题的算法有几种,如最久未使用算法(LRU)、先进先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)等,这些算法在不同层次的缓存上执行时拥有不同的效率和代价,需根据具体场合选择最合适的一种。
磁盘缓存
磁盘缓存
16MB缓冲区的硬盘
磁盘缓存(Disk Buffer)或磁盘快取(Disk Cache)实际上是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。
磁盘缓存是为了减少CPU透过I/O读取磁盘机的次数,提升磁盘I/O的效率,用一块内存来储存存取较频繁的磁盘内容;因为内存的存取是电子动作,而磁盘的存取是I/O动作,感觉上磁盘I/O变得较为快速。
相同的技巧可用在写入动作,我们先将欲写入的内容放入内存中,等到系统有其它空闲的时间,再将这块内存的资料写入磁盘中。
大小
现在的磁盘通常有32MB或64MB缓存。旧的硬盘则有8MB或16MB。
磁盘缓存和内存缓存的区别相关推荐
- Glide 缓存策略 内存缓存和磁盘缓存
感恩原创:http://www.cnblogs.com/baiqiantao/p/6808457.html Glide 缓存策略 内存缓存和磁盘缓存 官方文档:https://github.com/b ...
- Android 图片缓存之内存缓存技术LruCache,软引用
Android 图片缓存之内存缓存技术LruCache,软引用
- 图片缓存之内存缓存技术LruCache,软引用
图片缓存之内存缓存技术LruCache,软引用 每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个 问题曾经让我觉得很烦恼 ,后来终于得到了解决, 那么现在就让我和大家一起分享 ...
- Java中缓存之内存缓存
Java中缓存之内存缓存 1.缓存为什么要存在 应用服务器资源是有限的,数据库每秒中接受请求的次数也是有限的.如果利用有限的资源来提供尽可能大的吞吐量呢,一个办法:减少计 算量,缩短请求流程(减少网络 ...
- java map缓存6_Java内存缓存-通过Map定制简单缓存
缓存 在程序中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快.通过缓存,可以高效地重用之前检索或计算的数据. 为什么要用缓 ...
- iOS内存缓存和磁盘缓存的区别
缓存分为内存缓存和磁盘缓存两种,其中内存是指当前程序的运行空间,缓存速度快容量小,是临时存储文件用的,供CPU直接读取,比如说打开一个程序,他是在内存中存储,关闭程序后内存就又回到原来的空闲空间:磁盘 ...
- 内存缓存(from memory cache)和硬盘缓存(from disk cache) 的区别
引言 ?命中强制缓存时,资源会显示 from memory cache or from disk cache 两者的区别 内存缓存(from memory cache) 内存缓存具有两个特点,分别是快 ...
- YYCache 源码解析(一):使用方法,架构与内存缓存的设计
YYCache是国内开发者ibireme开源的一个线程安全的高性能缓存组件,代码风格简洁清晰,阅读它的源码有助于建立比较完整的缓存设计的思路,同时也能巩固一下双向链表,线程锁,数据库操作相关的知识. ...
- 内存缓存(in-memory cache)
内存缓存(in-memory cache) 当建立一个大型Java应用时,引起性能问题大部分是延迟,延迟是指请求和响应之间的时间差,在一个分布式Java系统中引起延迟的原因有: 从磁盘上加装数据的IO ...
最新文章
- 租约-分布式缓存一致性的高效容错机制
- mysql unsigned zerofill_Mysql中Unsigned和Zerofill数据型的使用(细节也很重要啊)
- ios 状态栏高度 底部tabbar高度
- 【模型训练-loss】模型训练过程中train, test loss的关系及原因
- c语言标准库 swap,swap
- jquery UI集合
- 大数据之-Hadoop3.x_Hadoop_MapReduce_介绍---大数据之hadoop3.x工作笔记0081
- 怎么调用获取被创建的预制体_PostgreSQL为每一个backend创建的cache
- html特殊符号拉丁文,拉丁文字符号大全,罗马字母
- 94页5万字市级应急平台建设方案
- centos7 安装最新rabbitmq,并设置开机自启
- wordpress登录美化css,wordpress的XIU主题显示美化css配置
- XMind8思维导图 破解版
- win10 文件夹设置区分大小写
- pm2日志文件过大问题解决
- 常见的DNS攻击与防御
- 千兆工业交换机和百兆以太网交换机有什么区别?
- php免费利用飞信发送验证码,PHP 使用飞信 API 来发送免费短信
- ubuntu删除提示权限不够permission denied,以及cannot remove “file“,is a directory.
- FFmpeg -- 解码视频
热门文章
- linux实验vim心得,Linux-vim教程(学习心得体会)
- 烟用香精计算机辅助调香,GC/MS结合计算机辅助调香系统在烟用香精配方解析中的应用...
- 取mailq队列的邮件
- uniapp请求接口返回:ER_SP_UNDECLARED_VAR: Undeclared variable: NaN 已解决
- 学历不高的程序员还有机会进BAT、网易等大厂吗?
- JXL导出EXCEL合并单元格、文字对齐方式 .
- IDC已是夕阳产业?2016传统IDC商何去何从
- Python变量的定义和使用
- input禁止中文输入
- 关于iOS系统中通讯录的访问