首页 > 其他 > 详细

操作系统真象还原 内存管理

时间:2017-12-14 01:23:30      阅读:214      评论:0      收藏:0      [点我收藏+]

翻来覆去看了好多遍的内存管理 还是没有弄明白 先把想明白的记下来好了

 

首先 是开启分页管理  一共三步 1 准备好页目录表 页表 2 将页目录表的物理地址写入到cr3寄存器中 3 打开cr0的31位 即PG位

 

先说说准备页目录表和页表 页目录表被放在了低端1MB内存之内 具体位置是0x100000 占据一页大小 4K

其中包括了1024个一级页表 这1024个一级页表只有256个是被使用的 就是第0个和768-1023个 其中 最后一个页目录项指向了页目录项的起始地址

第0个和第768个指向了同一个页表项 第一个 也就是处在0x101000位置上的页表项

页目录项中有1024个pte 每个pte中有1k个页 每个页大小为4k 也就是说 每个pte指向的空间为4M 所以这一个pde 中,内核实际的大小是255个pdt × 4 也就是1GB - 4MB的内存 

 

技术分享图片

 

从0xc009a000到0xc009e000的四个页框就是位图的位置 通过位图来对页框进行分配 

首先 内存池分为 内核内存池和用户内存池 顾名思义 内核内存池就是对内核的高1GB空间进行分配 此外 还有一个虚拟地址池 virtual_addr用于给内核分配虚拟地址

  目前使用的地址有低端1MB内存和页表项占用的内存  剩下的就是剩余内存

然后是分配页内存 主要是通过先分配一个虚拟地址 然后在物理内存池中分配一个物理内存 然后进行映射 

 

操作系统真象还原 内存管理

原文:http://www.cnblogs.com/wangjingxuan1997/p/8035254.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!