操作系统第八章总结

本文详细解析了虚拟地址到物理地址的映射过程,涉及页目录、页表结构、位图管理以及extern在内存池中的应用。通过实例说明了页目录项与页表的关系,以及位图在512MB内存管理中的作用,同时讨论了makefile中的常见错误及其解决方法。
摘要由CSDN通过智能技术生成

info tab:地址映射,映射结果

vaddr:虚拟地址从0x00100000开始

物理地址phy_addr: 0x200000 (2M)  即:低地址下的1M大小与一页4k大小的页目录(1024个页目录项)(一个页目录项占4个字节(即32位),一个地址对应一个字节),页目录项安装位置(0x1 00000),页目录对应的页表项安装位置(0x1 01000),(0x1000=2^12,4k(1k*4个字节)),1k个页目录项对应1k张一级页表,故0x100000~0x101fff为(第0与768)页目录项与其对应的同一页目录(0x101000)下对应的一级页表的总安装容量,

一个页目录对应1k个页表项,而页表项里存储的地址为32位(其中前20位为真实物理地址),对于它的页表索引(虚拟地址中间10位)来说,每次加1,它存储的地址要加上4096,即在初始化1024个页表项过程中,即0x1000;故1k*1k,第0个页目录对应的页表的最后一个页表项为0xff000,

即第0个与第768个页目录安装的页表大小为8k,中间254个(769~1022)页目录项对应的页表项所需要254*4k大小,所以页表总大小为1M,再加上此前的低端1M大小,故0x200000物理地址为虚拟地址0xc0100000所映射的起始地址。

位图安装地址:0xc009a000,预计四页大小,管理512mb,一页位图可管理128MB的内存大小

虚拟地址 K_HEAP_START:0xc0100000

虚拟地址内存池与内存池

extern的作用?(memory.h)

 

 

 虚拟地址结构含一个位图,安装在内存池位图后面

vaddr_start 虚拟地址

phy_addr_start 真实地址

第八章makefile里犯过的各种小错误

makefile :

没插入头文件<stdio.h>,NULL,报错 ‘NULL’ undeclared               

2.个别语句忘记加‘;’

出现字母倒转的情况,如:char,cahr,

函数名重复

使用系统宏时 把__当作_

枚举enum{  a=1,b  }中,写作{a=1;b;},此处与struct不同

语句中漏写(),此处十分危险,一、在许多位运算的过程中,如果漏掉个别括号导致运算顺序发生变化,极有可能导致程序编译通过但运算错误带来的严重错误,二、在进行类型转换与位运算复合的语句中,漏掉括号致使类型转换错误或无效,这对程序也是十分危险的。

头文件中没有插入所需类型的头文件报错:lib/string.h:3: error: expected declaration specifiers or ‘...’ before ‘uint8_t’
lib/string.h:3: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
lib/string.h:4: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
lib/string.h:5: error: expected declaration specifiers or ‘...’ before ‘uint32_t’

解决方案:插入相应的头文件

5  error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘strlen’
lib/string.h:8: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘strcmp’

warning: no previous prototype for ‘pte_ptr’

头文件没有写对应的函数声明,如果不是static 修饰符,则需要在头文件里加函数语句

其次:gcc与g++编译器在编译时,处理bool类型会有不同的结果,如果不能识别bool类型也会出现5中的上述问题,则需要更换数据类型。

kernel/init.c:4: warning: missing terminating " character
kernel/init.c:4: error: #include expects "FILENAME" or <FILENAME>
出错原因:两个" "打成" '

记得在obj后加xx.o         所有需要新增的文件其对应依赖的文件也要!!!完整!!!的添加所在路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值