Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux下的程序执行_Linux_Memory_Process_Operating System - Fatal编程技术网

Linux下的程序执行

Linux下的程序执行,linux,memory,process,operating-system,Linux,Memory,Process,Operating System,我想知道在基于Linux的操作系统中执行一个程序(比如C代码映像)时,事件的顺序 我事先知道的一些事情: a) 程序可执行映像的内存映射是使用结构mm_struct生成的。这个结构包含vm_area_结构,它指向程序的各个部分,比如代码、bss、数据等。我不知道这个内存映射是什么时候生成的?它是在程序被操作系统设置为“可运行”时生成的吗?如果没有,那么具体时间是什么时候 b) 提到由于只有图像的最开始部分被物理地拉入内存,它很快就会访问物理内存中还没有的虚拟内存区域。现在我知道处理器只使用主内存

我想知道在基于Linux的操作系统中执行一个程序(比如C代码映像)时,事件的顺序

我事先知道的一些事情:


a) 程序可执行映像的内存映射是使用结构mm_struct生成的。这个结构包含vm_area_结构,它指向程序的各个部分,比如代码、bss、数据等。我不知道这个内存映射是什么时候生成的?它是在程序被操作系统设置为“可运行”时生成的吗?如果没有,那么具体时间是什么时候


b) 提到由于只有图像的最开始部分被物理地拉入内存,它很快就会访问物理内存中还没有的虚拟内存区域。现在我知道处理器只使用主内存中的页面;这些页面可能包含数据或代码。因为程序是被买来执行的,所以此时它的第一条代码指令也必须在内存中,在一些物理页面中。此外,与此进程对应的页表必须位于主存中。这个页表是什么时候创建的?第一个代码指令页是什么时候加载到主存的?

“是在操作系统使程序“可运行”时创建的吗?”。对运行时加载器(
ldd
在Linux中)根据可执行文件中的ELF信息(假设为ELF)请求映射,并从内核请求适当的映射。“是在操作系统使程序“可运行”时生成的吗?”。对运行时加载程序(
ldd
在Linux中)根据可执行文件中的ELF信息(假设为ELF)请求映射,并从内核请求适当的映射。