LINUX进阶(基础篇)之内存管理

LINUX采用4K页框大小作为标准标准的内存分配单元。


所有的页描述符存放在mem_map数组中。


页面描述符的字段:


_count:页的引用计数器。如果该字段为-1,则相应页框空闲,并可分配给任一进程或内核本身;如果该字段的值大于或等于0,则说明页框分配给一个或多个进程,或用于存放一些内核数据结构。page_conunt()函数返回_count加1后的值,也就是该页的使用者数目。


flags:包括多达32个也描述符框状态的标志。


内存管理区


ISA总线的直接内存存取处理器有一个严格的限制,只能对RAM的前16M寻址。


LINUX2.6把内存节点的物理 内存划分为三个管理区:


ZONE_DMA:低于16M的内存y页框


ZONE_NORMAL:16MB——896MB


ZONE_HIGHMEM:896开始高于896的内存页框。


每个页描述符都有内存节点和到节点ne内存管理区的链接。


为了节省空间,这些链接的存放方式与典型的指针不同,而是被编码成索引存放在flags字段的高位。


当内核调用一个内存分配函数时,必须指明请求页框所在的管理区。



上一篇:[Struts]学习日记1 - 一个简单的例子


下一篇:质量基础设施NQI一站式服务系统开发,NQI线上平台建设