Linux一些页的东西
浏览:1361次 出处信息
在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天十大热文
- [71] IOS安全–浅谈关于IOS加固的几种方法
- [70] Twitter/微博客的学习摘要
- [65] 如何拿下简短的域名
- [64] android 开发入门
- [63] Go Reflect 性能
- [62] find命令的一点注意事项
- [60] 流程管理与用户研究
- [59] 图书馆的世界纪录
- [59] 读书笔记-壹百度:百度十年千倍的29条法则
- [58] Oracle MTS模式下 进程地址与会话信