Linux下的程序执行
我想知道在基于Linux的操作系统中执行一个程序(比如C代码映像)时,事件的顺序 我事先知道的一些事情:Linux下的程序执行,linux,memory,process,operating-system,Linux,Memory,Process,Operating System,我想知道在基于Linux的操作系统中执行一个程序(比如C代码映像)时,事件的顺序 我事先知道的一些事情: a) 程序可执行映像的内存映射是使用结构mm_struct生成的。这个结构包含vm_area_结构,它指向程序的各个部分,比如代码、bss、数据等。我不知道这个内存映射是什么时候生成的?它是在程序被操作系统设置为“可运行”时生成的吗?如果没有,那么具体时间是什么时候 b) 提到由于只有图像的最开始部分被物理地拉入内存,它很快就会访问物理内存中还没有的虚拟内存区域。现在我知道处理器只使用主内存
a) 程序可执行映像的内存映射是使用结构mm_struct生成的。这个结构包含vm_area_结构,它指向程序的各个部分,比如代码、bss、数据等。我不知道这个内存映射是什么时候生成的?它是在程序被操作系统设置为“可运行”时生成的吗?如果没有,那么具体时间是什么时候
b) 提到由于只有图像的最开始部分被物理地拉入内存,它很快就会访问物理内存中还没有的虚拟内存区域。现在我知道处理器只使用主内存中的页面;这些页面可能包含数据或代码。因为程序是被买来执行的,所以此时它的第一条代码指令也必须在内存中,在一些物理页面中。此外,与此进程对应的页表必须位于主存中。这个页表是什么时候创建的?第一个代码指令页是什么时候加载到主存的?“是在操作系统使程序“可运行”时创建的吗?”。对运行时加载器(
ldd
在Linux中)根据可执行文件中的ELF信息(假设为ELF)请求映射,并从内核请求适当的映射。“是在操作系统使程序“可运行”时生成的吗?”。对运行时加载程序(ldd
在Linux中)根据可执行文件中的ELF信息(假设为ELF)请求映射,并从内核请求适当的映射。