MINIX启动代码Kernel/Main.c请教
Dear all,今天在《操作系统设计与实现》提供的源码Kernel/Main.c上看到如下代码:
text_base = e_hdr.a_syms >> CLICK_SHIFT;
rp->p_memmap.mem_phys = text_base;
小弟不明白的是a_syms为A.out中符号表的size, why it will be assigned to the start address of text?
还望各位长辈指点迷津!万分感谢! 没看过Minix,
仅仅依据经验觉得大概是可执行代码在内存里顺序分布,属于内核,这段内存不能使用.内核包括符号表之后的物理内存属于未来可用的空间. 猜测:引导监控程序会将从系统映像文件头中读取的结构信息保存到exec结构体类型中,里面的a_sym字段对内核无用,所以将各组件对应进程的内存首地址(即代码段首地址)利用a_sym字段传递给内核,要验证该猜想的正确与否,需要阅读引导监控程序为内核个各组件分配内存的相关部分。
页:
[1]