linux内存管理 ibm,linux的内存管理

内核维护着一组自己使用的页表,驻留在所谓主内核页全局目录(master kernel page global directory)中。系统初始化后,这组页表永远不会被任何进程或者任何内核线程直接使用;更确切第说,主内核页全局目录的最高目录项部分作为参考模 型,为系统中每个普通进程对应的页全局目录项提供模板。0x2ff |--------------------||                    ||                    ||                    ||--------------------||                    |Provisional kernel Page Tables|--------------------|_end|                    ||                    |Uninitialized kernel data|                    ||--------------------|_edata|                    ||                    ||                    |Initialized kernel data|                    ||--------------------|_etext|                    ||                    ||                    |Kernel code|                    ||                    |0x100 |                    ||--------------------|_text (0x00100000)|                    ||                    |Unavailable page fames0x9f |                    ||--------------------||                    ||                    ||                    |Available page fames|                    ||                    |1 |                    ||--------------------|0 |                    |Unavailable page fames|--------------------|Page frame #Linux 2.6的前768个页框(3MB)物理内存前3MB布局示意图内核在初始化的第一阶段,可以通过与物理地址相同的线性地址或者通过从0xc0000000开始的8MB线性地址对RAM的前8MB进行寻址:0项和0x300(768)项的地址字段置为pg0的物理地址,而1项和0x301(769)项的地址字段置为pg1的物理地址

把这四项的Present、Read/Write、User/Supervisor标志置位

把这四项的Accessed、Dirty、 PCD、 PWD、 Page Size标志清0页全局目录放在swapper_pg_dir变量中,而映射前8MB RAM的两个目录项是pg0和pg1:extern pgd_tswapper_pg_dir[1024];typedef struct { unsigned long long pgd; }pgd_t;|--------------------|1023  |                    ||                    |(对应128MB虚拟空间)|                    ||--------------------||                    ||                    ||                    ||                    ||                    ||                    ||--------------------|769   |                    |pg1 --> 5~8MB|--------------------|768   |                    |pg0 --> 1~4MB|--------------------||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||                    ||--------------------|1  |                    |pg1 --> 5~8MB|--------------------|0  |                    |pg0 --> 1~4MB%%cr3------->|--------------------|Provisional kernel Page Tables(swapper_pg_dir)线性地址:0xc000 0000的高20位为1100000000(2)=768当RAM小于896MB时的最终内核页表:内核页表所提供的最终映射必须把从0xc000 0000开始的内核线性地址转化为从0开始的物理地址

宏_pa用于把从PAGE_OFFSET开始的线性地址转换成相应的物理地址,而宏_va做相反的转化

主内核页全局目录(The master kernel Page Global Directory)仍然保存在swapper_pg_dir变量中。它由paging_init()函数初始化

线性地址的最高128MB留给几种映射取用,因此剩余的映射RAM的内核地址空间为1GB - 128MB = 896MB

进程间前3G的线性空间是不同的, 而最后1G内核空间都是相同的, 即有着同样的页表目录项跟页表, 这些页表目录称为master kernel page global directory, 保存在swapper_pg_dir(数组1024项)中内核的启动分两个阶段:第一阶段建立了页表目录项中的2个项, 既有2个页表, 每个页表一般有1024个项, 这样就总共可以映射8M的内存空间。启动分页?这个8M的就可以被使用了(这个8M的映射是通过线性映射来的, 内核来静态的初始化它)第二阶段初始化所有1G线性空间的对应的256个页表全部初始化, 对物理内存进行映射, 从页表的第768项开始, 因为之前的已经映射好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【注意】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip基于C语言实现智能决策的人机跳棋对战系统源码+报告+详细说明.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值