Linux一些页的东西
浏览:1754次 出处信息
在Linux世界里,分为Page cache,Buffer cache两个层面。其中page cache包含了buffer cache,内存只和page cache交互。

标准的LINUX总 是假定处理器有三级页表,分别为页目录表(PGD),中间页目录表(PMD)和页表(PTE)。如果程序在进行物理地址转换的时候,中是通过页目录表来索 引中间页目录表,再通过中间页目录表来索引页表,从而查找到某页与内存BLOCK块的对应关系。我把书上的图,拍下来了,哈:
我们平时只说,page in,page out。file,page cahe,buffer cache,block的关系如下图:
我们主要讨论下 linux的页的生命:
在讨论page之前,必须要提及 LINUX的几个关键进程: kscand, kswapd, kupdated, bdflush. 他们负责LINUX的内存管理。
一般内存的一页,生命周期如下图:
free - 在系统启动以后,初始化状态均为FREE。
active -- 当前被OS使用或者用户进程所使用的状态,均为active。
inactive dirty(脏数据) -- 当数据被修改过以后,kscand进程会周期性的对内存中的数据进行扫描。如果最近被访问过了,计数器就会加1,否则被减1。如果kscand发现计数器 是0的时候,就会把该页,放到非队列(inactive laundry)里去了。
inactive laundry(非活动队列) -- 当被放到inactive laundry里的时候,OS才真正的进行I/O操作,写入磁盘。
inactive clean -- 意味着数据已经被sync到了本地磁盘,该页也已经标示为free。
另:
如果想自己强行把脏数据,写到磁盘 上,就使用“sync”命令。
个人总结:
今天看了一个晚上这方面的书和文档,感觉LINUX的机制和ORACLE大同小异啊。其实这个世界什么东西,都大同小异啊,关键 是你要想明白,计算机世界永远离不开if,else,for;就如同汽车世界永远离不开发动机,地盘,等等。LINUX本身也有LRU,只是有的地方叫 “Buddy Allocator”。
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:Debian Linux add or del user
后一篇:xargs命令少为人知的细节 >>
文章信息
- 作者:vogts 来源: Alibaba DBA Team
- 标签: 页
- 发布时间:2010-06-03 13:30:06
近3天十大热文
-
[857] WordPress插件开发 -- 在插件使用 -
[136] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 分享一个JQUERY颜色选择插件 -
[56] 整理了一份招PHP高级工程师的面试题 -
[55] CloudSMS:免费匿名的云短信 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[53] Innodb分表太多或者表分区太多,会导致内 -
[52] 用 Jquery 模拟 select -
[51] 全站换域名时利用nginx和javascri -
[50] jQuery性能优化指南