Linux使用和管理指南:从云原生到可观测性
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 Linux架构

从高层来看,Linux架构如图2-1所示。你可以将其划分为三个不同的层:

硬件

从CPU和主存储器到磁盘驱动器、网络接口以及键盘和显示器等外围设备。

内核

这是本章剩余部分的重点。请注意,在内核和用户空间之间有许多组件,例如init系统和系统服务(网络等),但严格地说,它们不是内核的一部分。

用户空间

大多数应用程序运行的地方,包括操作系统组件[如shell(在第3章中讨论)]、实用工具(如ps或ssh)以及图形用户界面(如基于X Window System的桌面)。

图2-1:Linux架构的高层视图

在本书中,我们将重点放在图2-1的上面两层,即内核层和用户空间层。在本章和其他相关章节中我们只涉及硬件层。

不同层之间的接口定义是Linux操作系统包的一部分。在内核和用户空间之间是一个称为系统调用的接口。我们将在2.3.6节详细探讨这一点。

与系统调用不同,硬件和内核之间的接口不是一个接口。它由一组独立的接口组成,通常按硬件分组:

1. CPU接口(参见2.2节)。

2. 主存储器的接口(参见2.3.2节)。

3. 网络接口和驱动程序(有线和无线,参见2.3.3节)。

4. 文件系统和块设备驱动程序接口(参见2.3.4节)。

5. 字符设备、硬件中断和设备驱动程序,用于输入设备,如键盘、终端和其他I/O(参见2.3.5节)。

正如你所看到的,许多我们通常认为是Linux操作系统的一部分的内容,例如shell或实用程序(如grep、find和ping),实际上不是内核的一部分,而非常像你下载的应用程序,是用户空间的一部分。

关于用户空间的主题,你将经常阅读或听到用户模式与内核模式的比较。这实际上是指对硬件的访问有多特权,可用的抽象有多受限。

一般来说,内核模式意味着用有限的抽象快速执行,而用户模式意味着相对较慢但更安全、更方便的抽象。除非你是一个内核开发人员(https://oreil.ly/AhAm6),否则你几乎可以忽略内核模式,因为你所有的应用程序都将在用户空间中运行。另外,了解如何与内核交互(2.3.6节)是至关重要的,也是我们考虑的一部分。

了解了Linux架构概述之后,让我们从硬件开始。