首页 > 其他 > 详细

内核的执行头程序head.S

时间:2018-10-10 22:59:49      阅读:198      评论:0      收藏:0      [点我收藏+]

功能

  • 定义data段和text段
  • 重新手动初始化gdt表, idt表, tss表结构
  • 初始化页表和页目录 --> 页目录的数据放在一个页表中

    • 在页目录中, 其实地址为0x1000, 初始化页目录, 一个页目录占用的页表的剩余数据值使用0来填充, 一个页表的大小分为(2MB, 4MB, 8MB等, 一般来说越大则容易造成页颗粒过于零碎)
  • 在text代码段中, 使用 lgdt, lidt 和 load cr3 等加载数据到寄存器中
  • 初始化完毕之后, 通过跳转指令将CPU指向真正内核的代码, 就是一个函数的地址罢了
  • 注意: 对于head.S, 我们知道他是在内核这一个可执行文件中的, 并且是在最前面, 所以我们在链接的时候需要将其放到内核代码的最前面

内核的执行头程序head.S

原文:https://www.cnblogs.com/megachen/p/9769508.html

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