Linux源码学习(7) 2013-3-1
内存管理Memory.c
主要用于内存分页管理。实现对主内存页面的动态分配和回收
Linux通过一个字节数组来管理所有的物理页面。每个字节用来表示其对应的物理页面被占用的次数
1. invalidate宏 :通过重新赋值CR3寄存的方法使CPU缓存的页表数据刷新。用于页表相关属性变化时
2. CODE_SPACE(addr)宏:判断addr是否位于当前进程的代码段
3. copy_page(from,to)宏 :复制一页内存
4. unsigned long get_free_page(void)函数:获取一个空闲的物理页,返回物理页起始地址
5. void free_page(unsigned long addr)函数:释放一个物理页
6. int free_page_tables(unsigned long from,unsigned long size)函数:释放线性地址from所对应的size个页表大小的内存。一个页表对应4M内存
7. int copy_page_table(unsigned long from,unsigned to, long size)函数:复制指定线性地址和长度的页目录表项和页表项。大小为字节