cache与内存之间的区别与联系?
内存,是存储器,用于辅助CPU输入输出数据进行运算。 CACHE,是一种特殊的内存。因为主内存速度不够快,用少量的特别快的但特别昂贵的内存来做缓存加速。就是cache。
两者都是ram中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓存(cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘i/o操作的最小单元(在linux中,它们通常是1kb)。这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了。
如果缓存有固定的大小,那么缓存太大了也不好,因为这会使得空闲的内存太小而导致进行交换操作(这同样是慢的)。为了最有效地使用实际内存,linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小。
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的u盘,我往里面cp一个3m的 mp3,但u盘的灯没有跳动,过了一会儿(或者手动输入sync)u盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。
buffer是由各种进程分配的,由进程和系统一起管理.被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的i/o请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。
综上所述可以理解为cache系统管理, buffer由进程和系统一起管理。
TLB:加速虚拟地址-->物理地址的转换,如果没有TLB的话每次进行地址转换都要访问内存。TLB结构有点像cache。
cache:存放最近使用的数据和指令,对于上层来说cache是透明的。
cache和TLB的区别,我说说吧。
cache中的数据存在时间局域性和空间局域性。TLB中存放的是物理地址只有时间局域性。
cache存放数据,TLB存放物理地址
具体了解一下虚拟内存相关的知识
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!