`
spartan1
  • 浏览: 360334 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ucore-project5: mm(1)

 
阅读更多

project5到project9主要处理内存管理。

 

其中project5是一个大工程,内部分为5个小工程,本次主要针对第一个小工程进行分析。

 

在project3.1中,就已经使用了ld的linker script,直接在其中指定链接时的一些配置。比如起始代码的符号,起始地址值,某个段的align值,以及可以定义一些变量。

 

在project5中,起始地址改为汇编函数kern_entry,其中重新设置gdt,然后调入c代码kern_init。同时设置内核地址为0xC0100000,为内存管理做准备,同时也是起始地址改为汇编kern_entry的原因:因为内核代码开始时仍然是加载到0x00100000的,而编译时内核地址指定为0xC0100000,怎么办呢?在kern_entry中,创建临时的gdt,其中的段的基址都是-0xC0000000,这样,所有的地址访问就自然都变成了(address-0xC0000000)了,内核代码中的地址也就正确了。

 

先分析这些,明天继续。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics