购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 总结

当我们在本书的上下文中称“现代”时,指的是在现代环境中使用Linux,包括电话、数据中心(公有云提供商)和嵌入式系统(如树莓派)。

在本章中,我分享了Linux背景故事的高级版本。我们讨论了操作系统的一般作用——抽象底层硬件并为应用程序提供一组基本功能,如进程、内存、文件和网络管理——以及Linux如何完成这项任务,特别是关于资源的可见性。

以下资源将帮助你继续跟上速度,并深入了解本章所讨论的概念:

O ' Reilly出版的图书

·Carla Schroder的 Linux Cookbook

·Daniel P. Bovet和Marco Cesati的 Understanding the Linux Kernel

·Daniel J. Barrett的 Efficient Linux at the Command Line

·Robert Love的 Linux System Programming

其他资源

·UNIX环境下的高级编程( https://oreil.ly/hS0G0 )是一个完整的课程,提供入门材料和实践练习。

·由Brian Kernighan撰写的“The Birth of UNIX”( https://oreil.ly/MiQ0J )是了解Linux遗留问题的一个很好的资源,并提供了许多原始UNIX概念的背景知识。

现在,话不多说,让我们开始我们的现代Linux之旅的核心——内核! jw7+DETFzwgp2vwzTuiave53mS/jqLi1ZnWX8YTAQuJQll8GuLTRzmbKl3HVJYcW



第2章
Linux内核

在1.3节,我们了解到操作系统的主要功能是抽象不同的硬件,并为我们提供一个API。根据这个API编程允许我们编写应用程序而不必担心它们在哪里以及如何执行。简而言之,内核为程序提供了这样一个API。

在本章中,我们将讨论Linux内核是什么,以及你应该如何将各组件作为一个整体来考虑。你将了解整个Linux架构和Linux内核所扮演的重要角色。本章的一个主要收获是,虽然内核提供了所有的核心功能,但就其本身而言,它并不是操作系统,而只是操作系统的一个非常核心的部分。

首先,我们进行鸟瞰,看看内核如何适应底层硬件,以及如何与底层硬件交互。然后,我们将回顾计算核心,讨论不同的CPU架构以及它们与内核的关系。接下来,我们将详细介绍各个内核组件,并讨论内核为你可以运行的程序提供的API。最后,我们将了解如何定制和扩展Linux内核。

本章的目的是提供必要的术语,使你了解程序和内核之间的接口,并让你对功能有一个基本的概念。本章的目的不是让你成为一个内核开发人员,或者一个配置和编译内核的系统管理员。然而,如果你想深入研究这个问题,我在本章末尾整理了一些资料。

现在,让我们进入最深入的部分:Linux架构和内核在此上下文中所扮演的核心角色。 v987Lgzn6OcEZrKSIrvs1oMJ7ARkEGdIqwo1KGfWhwPkf7h2l53iHkpF2M0cNEHI



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架构概述之后,让我们从硬件开始。 v987Lgzn6OcEZrKSIrvs1oMJ7ARkEGdIqwo1KGfWhwPkf7h2l53iHkpF2M0cNEHI

点击中间区域
呼出菜单
上一章
目录
下一章
×