程序加载器如何工作的?
摘要:
UNIX系统中,每个程序都运行在一个进程上下文中,有自己的虚拟地址空间。如图:内核虚拟存储器用户栈(向下增长)共享库的存储器映射运行时堆(4KB对齐)(向上增长)数据段(.data .bss)(4KB对齐)代码段(.init .text .rodata)(4KB对齐)未使用外壳运行一个程序时,父进程生成一个子进程,它是父进程的一个复制品。它通过调用execve来启动加载器。加载器删除子进程现有的虚拟存储器段,并创建一组新的代码、数据、堆和栈。堆和栈被初始化为0。通过将虚拟地址空间中的页映射到可执行文件中页大小的片。新的代码和数据段被初始化为可执行文件的内容。最后,加载器跳转到_start地址( 阅读全文
posted @ 2014-02-24 16:03 奇好猫 阅读(441) 评论(0) 推荐(0) 编辑