赞
踩
本文总结如何查看电脑的 CPU
型号、Linux
kernel
版本号的几种方法的不完全总结。
Updated: 2022 / 7 / 15
参考这里 1
/proc/cpuinfo
● processor:系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核;它的计数是从0开始的。
● vendor_id:CPU制造商
● cpu family:CPU产品系列代号
● model:CPU属于其系列中的哪一代的代号
● model name:CPU属于的名字及其编号、标称主频
● stepping:CPU属于制作更新版本
● cpu MHz:CPU的实际使用主频
● cache size:CPU二级缓存大小
● physical id:单个CPU的标号
● siblings:单个CPU逻辑物理核数
● core id:当前物理核在其所处CPU中的编号,这个编号不一定连续
● cpu cores:该逻辑核所处CPU的物理核数
● apicid:用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
● fpu:是否具有浮点运算单元(Floating Point Unit)
● fpu_exception:是否支持浮点计算异常
● cpuid level:执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
● wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
● flags:当前CPU支持的功能
● bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
● clflush size :每次刷新缓存的大小单位
● cache_alignment :缓存地址对齐单位
● address sizes:可访问地址空间位数
cat /proc/cpuinfo | grep 'model name' |uniq
model name : Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
当你想调试驱动程序时,你可能想知道您的系统使用的是哪个Linux内核版本?以下是在Linux终端中检查内核版本的三种方法 2’ 3。
下面提到的命令已在 RedHat
上测试验证过,确保可用。
给出的示例是在 Ubuntu
上实验所得。
这些命令应当是通用的,可以在 Fedora
、Debian
、CentOS
、SUSE
或任何其他Linux发行版上使用。
uname -r
4.4.0-97-generic
cat /proc/version
/proc/version
中找到内核信息。cat /proc/version
, 输出将类似于Linux version 4.4.0-97-generic (buildd@lcy01-33) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017
dmesg | grep Linux
[ 0.000000] Linux version 4.4.0-97-generic (buildd@lcy01-33) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 (Ubuntu 4.4.0-97.120-generic 4.4.87)
[ 0.182880] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[ 1.003861] Linux agpgart interface v0.103
[ 1.007875] usb usb1: Manufacturer: Linux 4.4.0-97-generic xhci-hcd
[ 1.009983] usb usb2: Manufacturer: Linux 4.4.0-97-generic xhci-hcd
[ 5.371748] media: Linux media interface: v0.10
[ 5.399948] Linux video capture interface: v2.00
[ 5.651287] VBoxPciLinuxInit
/usr/src/linux*.*.*
(*.*.*
代表的是内核版本,如2.4.23
)目录下就是内核源代码(如果没有类似目录,是因为还没安装内核代码)。/usr/src/kernels/{YourKernelVersion}
。现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序、网络等组成。
% cd /usr/src/kernels/{YourKernelVersion}
% ls -lh
arch # 包含了此核心源代码所支持的硬件体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。
drivers # 系统中所有的设备驱动都位于此目录中。它又进一步划分成几类设备驱动,每一种也有对应的子目录,如声卡的驱动对应于drivers/sound。
fs # Linux支持的文件系统代码。不同的文件系统有不同的子目录对应,如ext2文件系统对应的就是ext2子目录。
include # 包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下。
init # 包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。
ipc # 包含了核心的进程间通讯代码。
kernel # 包含了内核管理的核心代码。同时与处理器结构相关代码都放在arch/*/kernel目录下。
lib # 包含了核心的库代码。与处理器结构相关库代码被放在arch/*/lib/目录下。
Module.symvers # 某模块编译好后所生成的符号表文件
net # 核心的网络部分代码。里面的每个子目录对应于网络的一个方面。
scripts # 包含用于配置核心的脚本文件。
mm # 包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,如对应于X86的就是arch/i386/mm/fault.c 。
每个目录下的文件
一般在每个目录下都有一个
.depend
文件和一个Makefile
文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。
另外有的目录下还有Readme
文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。阅读所有目录及其下面的文件
在阅读方法或顺序上,有
纵向
与横向
:
- 纵向: 顺着程序的执行顺序逐步进行
对于Linux启动的代码可顺着Linux的启动顺序一步步来阅读;
- 横向: 按模块进行
对于像内存管理部分,可以单独拿出来进行阅读分析。
它们经常结合在一起进行。
%todo:
Linux内核模块通信
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。