转:http://hi.baidu.com/gilbertjuly/item/6690ba0dfdf57adfdde5b040 虚拟地址VA到物理地址PA以页page为单位.通常page的大小为4K.物理页面成为page frame. 查看应用程序进程的地址空间,可以看到分为很多段,比如代码段(只读).数据段(读写).堆.共享库(其中进一步分段).栈空间等.整个应用程序的地址空间不会用满4GB,因为还有一部分是内核空间,应用程序不能访问.再打开一个相同的应用程序查看其进程的地址空间,也是类似的,…
综述 Page cache是通过将磁盘中的数据缓存到内存中,从而减少磁盘I/O操作,从而提高性能.此外,还要确保在page cache中的数据更改时能够被同步到磁盘上,后者被称为page回写(page writeback).一个inode对应一个page cache对象,一个page cache对象包含多个物理page. 对磁盘的数据进行缓存从而提高性能主要是基于两个因素:第一,磁盘访问的速度比内存慢好几个数量级(毫秒和纳秒的差距).第二是被访问过的数据,有很大概率会被再次访问. Page Ca…
Page Cache 由内存中的物理page组成,其内容对应磁盘上的block. page cache的大小是动态变化的. backing store: cache缓存的存储设备 一个page通常包含多个block, 而block不一定是连续的. 读Cache 当内核发起一个读请求时, 先会检查请求的数据是否缓存到了page cache中. 如果有,那么直接从内存中读取,不需要访问磁盘, 此即 cache hit(缓存命中) 如果没有, 就必须从磁盘中读取数据, 然后内核将读取的数据再缓存到ca…
前言 前面我们讲到通过TLB缓存页表加快地址翻译,通过上一节缓存原理的讲解为本节做铺垫引入TLB和缓存的关系,同时我们来完整梳理下从CPU产生虚拟地址最终映射为物理地址获取数据的整个过程是怎样的,若有错误之处,还请批评指正. TLB和缓存串行访问(Serial TLB & Cache Access) 这里会跳过前面对虚拟页号.虚拟页偏移量.TLB索引和标记等的详细分析和计算,不清楚的童鞋请先查看前面文章再来看本文.假设我们有14位的虚拟地址.12位的物理地址,每页大小为64字节,如下: 同时假设…
原文作者:Gustavo Duarte 原文地址:http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait Page Cache, the Affair Between Memory and Files 工作于内存和文件之间的页缓存 Previously we looked at how the kernel manages virtual memory for a user process, but…
1 .前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows.UNIX 一起占据了操作系统领域几乎所有的市场份额.特别是在高性能计算领域,Linux 已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统.因此,研究和使用 Linux 已经成为开发者的不可回避的问题了. 下面我们介绍一下 Linux 内核中文件 Cache 管理的机制.本文以 2.6 系列内核为…
http://www.cnblogs.com/mydomain/archive/2013/02/24/2924707.html Page cache实际上是针对文件系统的,是文件的缓存,在文件层面上的数据会缓存到page cache.文件的逻辑层需要映射到实际的物理磁盘,这种映射关系由文件系统来完成.当page cache的数据需要刷新时,page cache中的数据交给buffer cache,但是这种处理在2.6版本的内核之后就变的很简单了,没有真正意义上的cache操作. 在Linux 2…
原文标题:Page Cache, the Affair Between Memory and Files 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下.一来自己复习,二来与大家分享.] 上次我们考察了内核如何为一个用户进程管理虚拟内存,但是没有涉及文件及I/O.这次我们的讨论将涵盖非常重要且常被误解的文件与内存间关系的问题,以及它对系统性能的影响. 提到文件,操作系统必须解决两个重要的问题.首先是硬盘驱动器的…
page cache 与 page buffer 标签: cachebuffer磁盘treelinux脚本 2012-05-07 20:47 2905人阅读 评论(0) 收藏 举报  分类: 内核编程(46) 块设备体系(6)  Linux下对文件的访问和设备的访问通常会被cache起来加快访问速度,这个是系统的默认行为. 而cache需要耗费我们的内存,虽然这个内存最后可以通过echo 3>/proc/sys/vm/drop_caches这样的命令来主动释放.但是有时候我们还是需要理解谁消耗了…
我们经常用free查看服务器的内存使用情况,而free中的输出却有些让人困惑,如下: 先看看各个数字的意义以及如何计算得到: free命令输出的第二行(Mem):这行分别显示了物理内存的总量(total).已使用的 (used).空闲的(free).共享的(shared).buffer(buffer大小). cache(cache的大小)的内存.我们知道Total.free.buffers.cached这几个字段是从/proc/meminfo中获取的,而used = total – free.S…