seurobot 发表于 2009-05-24 17:50

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?
    还望各位长辈指点迷津!万分感谢!

gvim 发表于 2009-05-24 20:00

没看过Minix,
仅仅依据经验觉得大概是可执行代码在内存里顺序分布,属于内核,这段内存不能使用.内核包括符号表之后的物理内存属于未来可用的空间.

mayeye1989 发表于 2018-08-27 17:22

猜测:引导监控程序会将从系统映像文件头中读取的结构信息保存到exec结构体类型中,里面的a_sym字段对内核无用,所以将各组件对应进程的内存首地址(即代码段首地址)利用a_sym字段传递给内核,要验证该猜想的正确与否,需要阅读引导监控程序为内核个各组件分配内存的相关部分。
页: [1]
查看完整版本: MINIX启动代码Kernel/Main.c请教