第五章:计算机中的翻译器

1年前 高效码农

到目前为止,每次我谈到阅读和写作记忆时都有点空洞。例如,ELF 文件指定要加载数据的特定内存地址,那么为什么不同进程尝试使用冲突内存时不会出现问题呢?为什么每个进程似乎都有不同的内存环境? 另外,我们 …

第四章:ELF

1年前 高效码农

我们现在已经非常了解了execve。在大多数路径的末尾,内核将到达包含要启动的机器代码的最终程序。通常,在实际跳转到代码之前需要一个设置过程 – 例如,程序的不同部分必须加载到内存中的正确 …

第三章:程序运行

1年前 高效码农

到目前为止,我们已经介绍了 CPU 如何执行从可执行文件加载的机器代码、什么是基于环的安全性以及系统调用如何工作。在本节中,我们将深入了解 Linux 内核,首先了解程序是如何加载和运行的。 我们将专 …

第二章:多任务处理

1年前 高效码农

假设您正在构建一个操作系统,并且希望用户能够同时运行多个程序。不过,您没有精美的多核处理器,因此您的 CPU 一次只能运行一条指令! 幸运的是,您是一位非常聪明的操作系统开发人员。您发现可以通过让进程 …