2.2 CPU架构

在讨论内核组件之前,让我们先回顾一个基本概念—计算机架构或CPU系列,这两个术语我们可以互换使用。Linux可以在大量不同的CPU架构上运行,这可以说是它如此受欢迎的原因之一。

除了通用代码和驱动程序之外,Linux内核还包含特定于架构的代码。这种分离允许它移植Linux,并使其可以快速地在新硬件上使用。

有许多方法可以确定Linux运行的是哪个CPU。让我们依次来看几个。

BIOS和UEFI

传统上,UNIX和Linux使用基本I/O系统(Basic I/O System,BIOS)进行引导。当你打开你的Linux笔记本计算机时,它完全是由硬件控制的。首先,硬件被连接以运行开机自检(POST),这是BIOS的一部分。POST确保硬件(RAM等)按照指定的方式运行。我们将在6.2节详细介绍机制。

在现代环境中,BIOS功能已经被统一可扩展固件接口(UEFI,https://oreil.ly/JBwSm)有效地取代,这是一个公共规范,定义了操作系统和平台固件之间的软件接口。你仍然会在文档和文章中遇到BIOS这个术语,所以我建议你在脑海中简单地将其替换为UEFI,然后继续前进。

一种方法是使用一种名为dmidecode的专用工具与BIOS交互。如果这没有产生结果,

那么你可以尝试以下代码(输出被缩短):

❶我们在这里看到的架构是x86_64。

❷看起来有四个可用的CPU。

❸CPU型号名称为Intel Core Processor(Haswell)。

在前面的命令中,我们看到CPU架构报告为x86_64,模型报告为“Intel Core Processor(Haswell)”。我们将在稍后学习更多关于如何解码的内容。

收集类似架构信息的另一种方法是使用cat /proc/ cpuinfo,或者,如果你只对架构感兴趣,则只需调用uname -m。

现在我们已经掌握了在Linux上查询架构信息的方法,让我们看看如何解码它。