Linux 加载程序和执行程序有什么区别?

Linux 加载程序和执行程序有什么区别?,linux,operating-system,execution,Linux,Operating System,Execution,很长一段时间以来,我一直认为在操作系统(linux)中加载程序和执行程序是同一回事。但最近我看到一些文献,其中我发现加载程序和执行程序是不同的。这两件事是不一样的。换句话说,当我们单击一个可执行文件来运行它时,我假设首先加载一些内容,然后执行。但对我来说,这仍然是一件抽象的事情。如果有人确切地列出了所发生的事情的细节,并且加载和执行了真正不同的事情,你会很高兴吗?loading==“设置虚拟地址空间并将二进制内容映射到它”。Executing==“设置指令指针并释放它”。首先将可执行代码即机器指

很长一段时间以来,我一直认为在操作系统(linux)中加载程序和执行程序是同一回事。但最近我看到一些文献,其中我发现加载程序和执行程序是不同的。这两件事是不一样的。换句话说,当我们单击一个可执行文件来运行它时,我假设首先加载一些内容,然后执行。但对我来说,这仍然是一件抽象的事情。如果有人确切地列出了所发生的事情的细节,并且加载和执行了真正不同的事情,你会很高兴吗?

loading==“设置虚拟地址空间并将二进制内容映射到它”。Executing==“设置指令指针并释放它”。首先将可执行代码即机器指令加载到内存中,然后执行它,最常见的方法是跳转到可执行代码的开头地址。明白了。首先,程序指令从硬盘移动到非易失性(RAM)内存中,然后执行。但我们为什么要这样做?@user3130920:嗯,不是很明确。磁盘上包含可执行文件的页面由虚拟内存系统映射,然后根据需要将它们分页到RAM中或从RAM中移出。