linux內核管理不包含的子系統(tǒng)是“硬件管理系統(tǒng)”。計算機的硬件主要包括內存、中央處理器(CPU)、輸入/輸出(I/O)設備和硬盤等多個部分;在linux中,硬件要根據不同的種類分屬于不同的子系統(tǒng)管理,例如CPU屬于CPU管理系統(tǒng)的范圍,內存屬于內存管理系統(tǒng),顯卡屬于設備管理系統(tǒng)。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
Linxu內核主要管理的子系統(tǒng)分為:
(1) CPU管理系統(tǒng):有時也稱為進程管理系統(tǒng),主要功能在于合理控制CPU的運行時間。Linux采用分時方式保證所有進程都能被執(zhí)行到,也可以設置程序執(zhí)行的順序和優(yōu)先級,并可在規(guī)定的時間和條件下執(zhí)行指定的任務。
(2) 內存管理系統(tǒng):有時也稱為存儲管理系統(tǒng)、主要管理內存的使用。Linux采用虛擬存儲技術,可利用硬盤空間擴充內存。當程序剛被執(zhí)行時,只為其分配虛擬內存空間,只有當執(zhí)行到必須用到的程序段和數(shù)據時,才調入物理內存。
(3) 文件管理系統(tǒng):主要管理文件存儲的方式、位置和空間大小等。Linux采用虛擬文件系統(tǒng)技術、可使用多種文件系統(tǒng)。
(4) 設備管理系統(tǒng):主要管理外部設備。Linux按照數(shù)據交換的特點,將所有設備分為三類:字符設備、塊設備和網絡設備。
linux內核管理不包含的子系統(tǒng)是“硬件管理系統(tǒng)”。
計算機的硬件主要包括內存(RAM)、中央處理器(CPU)、輸入/輸出(I/O)設備和硬盤(Hard Disk),全部是由linux內核(Kernel)來進行管理。
因此硬件要根據不同的種類分屬于不同的子系統(tǒng)管理,例如CPU屬于CPU管理系統(tǒng)的范圍,內存屬于內存管理系統(tǒng),顯卡屬于設備管理系統(tǒng)。
操作系統(tǒng)能讓計算機硬件準確無誤的工作,可以這樣認為,操作系統(tǒng)就是內核與其提供的接口工具,它們之間的關系下圖所示。
Linux 硬件資源管理
lspci 用于列出所有的 PCI 設備,比如主板、聲卡、顯卡和網卡等,也會把 USB 接口設備顯示出來,語法格式:lspci [參數(shù)]
基本顯示模式:
參數(shù) | 作用 |
---|---|
-mm | 生成機器可讀輸出(單個 -m 表示過時的格式) |
-t | 顯示總線樹 |
顯示選項:
參數(shù) | 作用 |
---|---|
-v | 冗余(-vv 或 -vvv 用于更高的冗余度) |
-k | 顯示處理每個設備的內核驅動程序 |
-x | 顯示配置空間標準部分的十六進制轉儲 |
-xxx | 顯示整個配置空間的十六進制轉儲(危險;僅限 root) |
-xxxx | 顯示 4096 字節(jié)擴展配置空間的十六進制轉儲(僅限 root) |
-b | 總線中心視圖(總線看到的地址和 IRQ) |
-D | 始終顯示域名 |
-P | 除顯示總線和設備編號外,還顯示網橋路徑 |
-PP | 除顯示總線和設備編號外,還顯示總線路徑 |
將設備 ID 解析為名稱:
參數(shù) | 作用 |
---|---|
-n | 顯示數(shù)字 ID |
-nn | 顯示文本和數(shù)字 ID(名稱和數(shù)字) |
-q | 通過 DNS 查詢 PCI ID 數(shù)據庫中的未知 ID |
同上,但重新查詢本地緩存的條目 | |
-Q | 通過 DNS 查詢 PCI ID 數(shù)據庫中的所有 ID |
設備選擇:
參數(shù) | 作用 |
---|---|
-s[[[[]:]]:][][.[]] | 僅顯示選定插槽中的設備 |
-d[]:[][:] | 僅顯示具有指定 ID 的設備 |
其他選項:
參數(shù) | 作用 |
---|---|
-i | 使用指定的 ID 數(shù)據庫,而不是 /usr/share/hwdata/pci.ids |
-p | 在給定文件中查找內核模塊,而不是默認 mode.pcimap |
-M | 啟用 “總線映射” 模式(危險;僅限 root) |
PCI 訪問選項:
參數(shù) | 作用 |
---|---|
-A | 使用指定的 PCI 訪問方法(有關列表,請參見 “-A help”) |
-O= | 設置 PCI 訪問參數(shù)(有關列表,請參見 “-O help”) |
-G | 啟用 PCI 訪問調試 |
-H> | 使用直接硬件訪問(=1 或 2) |
-F | 從給定文件讀取 PCI 配置轉儲 |
example:
lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01) # 集成主板設備的類型 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01) 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08) 00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) 00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10) 00:0f.0 VGA compatible controller: VMware SVGA II Adapter # VGA 顯卡設備 00:1b.0 Class 0403: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) # Intel 聲卡設備。 00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01) 00:11.0 PCI bridge: VMware PCI bridge (rev 02) 00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01) 00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01) ......省略部分內容 02:00.0 USB controller: VMware USB1.1 UHCI Controller # USB 接口設備 02:01.0 USB controller: VMware USB2 EHCI Controller 02:02.0 SATA controller: VMware SATA AHCI controller # SATA 控制器,表明系統(tǒng)是 SATA 系列硬盤 03:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01) # 百兆網卡設備
在 siblings 和 cpu cores 值之間有個對應關系,如果 siblings 是 cpu cores 的兩倍,則說明系統(tǒng)支持超線程,并且超線程已打開;如果 siblings 和 cpu cores 一致,則說明系統(tǒng)不支持超線程,或者超線程未打開
cat /proc/cpuinfo processor : 0 # 邏輯處理器的唯一標識符 vendor_id : GenuineIntel # 處理器類型 cpu family : 6 model : 85 model name : Intel(R) Xeon(R) Silver 4214R CPU @ 2.40GHz # cpu 的名稱,型號,主頻 stepping : 7 # 位于相同物理封裝中的邏輯處理器的數(shù)量 microcode : 0x5003302 cpu MHz : 2394.374 cache size : 16896 KB physical id : 0 # 物理封裝的唯一標識符 siblings : 2 # 單 cpu 的邏輯核數(shù) core id : 0 # 每個內核的唯一標識符 cpu cores : 2 # 位于相同物理封裝中的內核數(shù)量 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat pku ospke avx512_vnni md_clear flush_l1d arch_capabilities bugs : spectre_v1 spectre_v2 spec_store_bypass bogomips : 4788.74 clflush size : 64 cache_alignment : 64 address sizes : 45 bits physical, 48 bits virtual power management:
查看物理 CPU 的個數(shù)
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
查看每個物理 CPU 中內核的個數(shù)
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看系統(tǒng)所有邏輯 CPU 個數(shù)(所有物理 CPU 中內核的個數(shù)加上超線程個數(shù)),可通過如下命令查看。
cat /proc/cpuinfo | grep "processor" | wc -l
cat /proc/meminfo MemTotal: 24656144 kB # 系統(tǒng)的物理內存 MemFree: 20415000 kB # 物理內存 MemAvailable: 23038032 kB Buffers: 194668 kB # 緩沖區(qū) Cached: 2575064 kB # 緩存 SwapCached: 0 kB Active: 1785688 kB Inactive: 1789328 kB Active(anon): 795436 kB Inactive(anon): 18024 kB Active(file): 990252 kB Inactive(file): 1771304 kB ......省略部分內容
fdisk -l Disk /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xfa430a69 Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 * 2048 2099199 2097152 1G 83 Linux /dev/nvme0n1p2 2099200 209715199 207616000 99G 8e Linux LVM Disk /dev/mapper/cs-root: 65.2 GiB, 69960990720 bytes, 136642560 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/cs-swap: 2 GiB, 2176843776 bytes, 4251648 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/cs-home: 31.8 GiB, 34158411776 bytes, 66715648 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes