启动
对很多初次分析操作系统代码的人来说,能按照启动顺序一步步来分析整个系统是再好不过的解决方案。但有一件非常糟心的事:找到整个系统的入口同样不轻松!
内核链接
毫无疑问,操作系统的内核是寻找运行轨迹的突破口。当make指令尝试生成内核的时候,它需要用到两个依赖项:kernel/kernel.ld以及user/initcode。两个文件都非常重要:前者指定了riscv指令架构、内存体系,并提供了更进一步的入口ENTRY();后者可以进行一个初始化工作,并为后续用户做准备。
kernel/kernel.ld规定了几个比较重要的规则:首先,它把程序的入口设为了_entry,一个由kernel/entry.S编译而成的程序文件;接着,这个链接文件将设置本系统的几个关键变量,如0x80000000,etext以及end等,这几个量会在之后的内存管理/分配中起到重大的作用。
Bootloader——entry
作为链接文件的指定入口,_entry的工作为加载内核
最后更新于
这有帮助吗?