Linux内核版本:32位与64位
1. 概述
在本教程中,我们将深入研究我们的计算机体系结构。我们将介绍几种方法来发现我们使用的是 32 位还是 64 位 Linux 内核,以及发现我们的 CPU 支持哪些内核。
2. 计算机体系结构
在我们的计算机体系结构中,我们可以区分三个主要组件:
- 指令系统
- 内存寻址
- 操作系统支持
这些会受到我们使用的是 32 位还是 64 位架构的影响。
当我们说 CPU 实现了 64 位指令集时,我们的意思是**我们的处理器可以直接处理高达 64 位的值。**这通常包括寄存器、基本算术和浮点指令。
当我们讨论内存寻址时,这意味着**我们可以使用最大 64 位大小的地址来查找 RAM 中的数据。**这就是 32 位机器无法处理超过 4 GB RAM 的原因。实际上,即使是现在,64 位处理器也只支持最多 48 位地址(允许 256 TB 的 RAM)。
即使 CPU 支持 64 位指令和内存寻址,我们仍然需要操作系统来支持这些功能。
3. 处理器支持
我们的第一步将是确定我们的 CPU 内核的能力。
为此,我们将查看*/proc/cpuinfo*文件的内容。**该文件提供了 Linux 内核检测到的关于我们 CPU 的所有信息。**有关此文件的更多信息,请参见proc手册页 。
大多数工具,包括**lscpu ,都使用此文件提供的数据来显示我们系统上的内容。**
处理器通过lm(长模式)标志在标志条目下显示信息。有关可用的各种标志的完整列表,我们可以查看Linux 内核源代码中的 cpu 功能头文件 。
使用grep ,我们在*/proc/cpuinfo中找到标志的第一个匹配项(每个 CPU 内核都会存在多个匹配项)。我们将结果通过管道传递给第二个grep*,以便我们可以找到lm标志:
$ grep -m 1 flags /proc/cpuinfo | grep -o " lm "
lm
这向我们表明存在 64 位处理器。如果存在 32 位处理器,则不会打印任何内容。
4. 内核版本
**查询当前正在运行的内核最常用的方法是通过uname 命令。对于 64 位内核,此命令返回*x86_64值,对于 32 位内核,则返回i686*值:
$ uname -m
x86_64
检查内核是否支持 64 位的另一种常用方法是通过getconf命令:
$ getconf LONG_BIT
64