本书深入探讨了计算机的工作原理,从CPU的角色到系统调用的机制,揭示了程序如何在电脑上启动和执行。我们讨论了操作系统如何管理资源,以及多任务处理如何通过进程切换实现。文章还详细解释了Linux内核在程序加载和执行中的作用,以及虚拟内存和分页系统如何为每个进程提供独立的内存空间。对于想要深入了解计算机核心工作机制的技术爱好者来说,本书提供了宝贵的洞见。

核心提要:如何CPU执行程序、系统调用实例、操作系统资源管理、多任务处理技术、进程切换机制、Linux内核程序加载、虚拟内存管理、分页系统优化、计算机启动流程、程序执行流程详解

将“你”放入CPU

将“你”放入CPU(英文原版:Putting the “You” in CPU)
作者:Lexi Mattick & Hack Club · 2023年7月

在深入研究了计算机的工作原理后,我意识到自己对电脑运行程序时究竟发生了什么知之甚少。这促使我撰写了这篇文章,希望能详尽解释我从启动到程序执行所学到的一切。

系统调用的奥秘

系统调用是计算机运行中不可或缺的一部分,但它们究竟是如何工作的?多个程序是如何同时运行的?这些问题曾让我困惑,直到我开始深入探索答案。

计算机的中央处理单元(CPU)

CPU负责所有计算工作。它是第一个量产的CPU——Intel 4004,由Federico Faggin在20世纪60年代末设计。它采用4位架构,远不如我们今天使用的64位系统复杂,但它的很多简单性仍然存在。

计算机是如何构建的

RAM是计算机的主内存库,用于存储计算机上运行的程序使用的所有数据,包括程序代码本身和汇编代码。CPU总是直接从RAM读取机器代码,如果代码没有加载到RAM中,就无法运行。

指令和寄存器

CPU执行的“指令”只是二进制数据:一个或两个字节表示正在运行的指令(操作码),后面跟着运行该指令所需的任何数据。我们所谓的机器代码不过是一连串的二进制指令。汇编是一种有助于读写机器代码的语法,更易于我们阅读。

操作系统的角色

操作系统是计算机的核心,负责运行安装在计算机上的软件。它在内核模式下运行,几乎可以完全访问计算机的内存、外围设备和其他资源。而应用程序在用户模式下运行,对CPU设置和内存访问受限。

系统调用的机制

系统调用是一种特殊的过程,它允许程序从用户空间转换到内核空间,从程序代码跳转到操作系统代码。用户空间程序不能直接访问I/O或内存,它们必须向操作系统请求帮助与外界互动。

多任务处理

计算机通过让进程轮流使用CPU来伪造并行性。操作系统调度程序使用定时器芯片触发硬件中断来进行多任务处理,这称为抢占式多任务处理。

程序的执行

当我们在电脑上运行一个可执行程序时,会发生一系列神奇的事情来准备运行它。操作系统将其加载到RAM中,并指示CPU将指令指针跳转到程序的代码入口点。程序开始执行,CPU继续像往常一样运行其提取-执行周期。

Linux内核与程序执行

Linux是一款功能齐全的生产操作系统,适用于多种用例。在Linux内核中,ELF二进制文件由特定的处理程序处理,该处理程序负责从ELF文件中解析出某些细节,并使用它们将进程加载到内存中。

内存管理

CPU与一个称为内存管理单元(MMU)的芯片通信,MMU的工作类似于翻译器,可以将虚拟内存中的位置翻译为RAM中的位置。这就是每个进程如何拥有自己独立的内存空间的原因。

分页和虚拟内存

分页系统的神奇之处在于,计算机运行时可以编辑页表。页表中的条目称为页面,每个页面代表特定虚拟内存块如何映射到RAM。这些块始终是固定大小,每个翻译后得到4,096字节的页面。

结语

通过这篇文章,我们探索了计算机从启动到运行软件的工作原理。我们了解了CPU如何执行指令,操作系统如何管理资源,以及程序如何在虚拟内存中执行。希望这篇文章能帮助你更好地理解计算机的内部工作机制。

标签: Linux, 计算机原理, CPU, 内核, 虚拟内存

添加新评论