linux內(nèi)核管理不包含的子系統(tǒng)是“硬件管理系統(tǒng)”。計算機(jī)的硬件主要包括內(nèi)存、中央處理器(CPU)、輸入/輸出(I/O)設(shè)備和硬盤等多個部分;在linux中,硬件要根據(jù)不同的種類分屬于不同的子系統(tǒng)管理,例如CPU屬于CPU管理系統(tǒng)的范圍,內(nèi)存屬于內(nèi)存管理系統(tǒng),顯卡屬于設(shè)備管理系統(tǒng)。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
Linxu內(nèi)核主要管理的子系統(tǒng)分為:
(1) CPU管理系統(tǒng):有時也稱為進(jìn)程管理系統(tǒng),主要功能在于合理控制CPU的運(yùn)行時間。Linux采用分時方式保證所有進(jìn)程都能被執(zhí)行到,也可以設(shè)置程序執(zhí)行的順序和優(yōu)先級,并可在規(guī)定的時間和條件下執(zhí)行指定的任務(wù)。
(2) 內(nèi)存管理系統(tǒng):有時也稱為存儲管理系統(tǒng)、主要管理內(nèi)存的使用。Linux采用虛擬存儲技術(shù),可利用硬盤空間擴(kuò)充內(nèi)存。當(dāng)程序剛被執(zhí)行時,只為其分配虛擬內(nèi)存空間,只有當(dāng)執(zhí)行到必須用到的程序段和數(shù)據(jù)時,才調(diào)入物理內(nèi)存。
(3) 文件管理系統(tǒng):主要管理文件存儲的方式、位置和空間大小等。Linux采用虛擬文件系統(tǒng)技術(shù)、可使用多種文件系統(tǒng)。
(4) 設(shè)備管理系統(tǒng):主要管理外部設(shè)備。Linux按照數(shù)據(jù)交換的特點(diǎn),將所有設(shè)備分為三類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。
linux內(nèi)核管理不包含的子系統(tǒng)是“硬件管理系統(tǒng)”。
計算機(jī)的硬件主要包括內(nèi)存(RAM)、中央處理器(CPU)、輸入/輸出(I/O)設(shè)備和硬盤(Hard Disk),全部是由linux內(nèi)核(Kernel)來進(jìn)行管理。
因此硬件要根據(jù)不同的種類分屬于不同的子系統(tǒng)管理,例如CPU屬于CPU管理系統(tǒng)的范圍,內(nèi)存屬于內(nèi)存管理系統(tǒng),顯卡屬于設(shè)備管理系統(tǒng)。
操作系統(tǒng)能讓計算機(jī)硬件準(zhǔn)確無誤的工作,可以這樣認(rèn)為,操作系統(tǒng)就是內(nèi)核與其提供的接口工具,它們之間的關(guān)系下圖所示。
Linux 硬件資源管理
lspci 用于列出所有的 PCI 設(shè)備,比如主板、聲卡、顯卡和網(wǎng)卡等,也會把 USB 接口設(shè)備顯示出來,語法格式:lspci [參數(shù)]
基本顯示模式:
參數(shù) | 作用 |
---|---|
-mm | 生成機(jī)器可讀輸出(單個 -m 表示過時的格式) |
-t | 顯示總線樹 |
顯示選項(xiàng):
參數(shù) | 作用 |
---|---|
-v | 冗余(-vv 或 -vvv 用于更高的冗余度) |
-k | 顯示處理每個設(shè)備的內(nèi)核驅(qū)動程序 |
-x | 顯示配置空間標(biāo)準(zhǔn)部分的十六進(jìn)制轉(zhuǎn)儲 |
-xxx | 顯示整個配置空間的十六進(jìn)制轉(zhuǎn)儲(危險;僅限 root) |
-xxxx | 顯示 4096 字節(jié)擴(kuò)展配置空間的十六進(jìn)制轉(zhuǎn)儲(僅限 root) |
-b | 總線中心視圖(總線看到的地址和 IRQ) |
-D | 始終顯示域名 |
-P | 除顯示總線和設(shè)備編號外,還顯示網(wǎng)橋路徑 |
-PP | 除顯示總線和設(shè)備編號外,還顯示總線路徑 |
將設(shè)備 ID 解析為名稱:
參數(shù) | 作用 |
---|---|
-n | 顯示數(shù)字 ID |
-nn | 顯示文本和數(shù)字 ID(名稱和數(shù)字) |
-q | 通過 DNS 查詢 PCI ID 數(shù)據(jù)庫中的未知 ID |
同上,但重新查詢本地緩存的條目 | |
-Q | 通過 DNS 查詢 PCI ID 數(shù)據(jù)庫中的所有 ID |
設(shè)備選擇:
參數(shù) | 作用 |
---|---|
-s[[[[]:]]:][][.[]] | 僅顯示選定插槽中的設(shè)備 |
-d[]:[][:] | 僅顯示具有指定 ID 的設(shè)備 |
其他選項(xiàng):
參數(shù) | 作用 |
---|---|
-i | 使用指定的 ID 數(shù)據(jù)庫,而不是 /usr/share/hwdata/pci.ids |
-p | 在給定文件中查找內(nèi)核模塊,而不是默認(rèn) mode.pcimap |
-M | 啟用 “總線映射” 模式(危險;僅限 root) |
PCI 訪問選項(xiàng):
參數(shù) | 作用 |
---|---|
-A | 使用指定的 PCI 訪問方法(有關(guān)列表,請參見 “-A help”) |
-O= | 設(shè)置 PCI 訪問參數(shù)(有關(guān)列表,請參見 “-O help”) |
-G | 啟用 PCI 訪問調(diào)試 |
-H> | 使用直接硬件訪問(=1 或 2) |
-F | 從給定文件讀取 PCI 配置轉(zhuǎn)儲 |
example:
lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01) # 集成主板設(shè)備的類型 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 顯卡設(shè)備 00:1b.0 Class 0403: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) # Intel 聲卡設(shè)備。 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) ......省略部分內(nèi)容 02:00.0 USB controller: VMware USB1.1 UHCI Controller # USB 接口設(shè)備 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) # 百兆網(wǎng)卡設(shè)備
在 siblings 和 cpu cores 值之間有個對應(yīng)關(guān)系,如果 siblings 是 cpu cores 的兩倍,則說明系統(tǒng)支持超線程,并且超線程已打開;如果 siblings 和 cpu cores 一致,則說明系統(tǒng)不支持超線程,或者超線程未打開
cat /proc/cpuinfo processor : 0 # 邏輯處理器的唯一標(biāo)識符 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 # 物理封裝的唯一標(biāo)識符 siblings : 2 # 單 cpu 的邏輯核數(shù) core id : 0 # 每個內(nèi)核的唯一標(biāo)識符 cpu cores : 2 # 位于相同物理封裝中的內(nèi)核數(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 中內(nèi)核的個數(shù)
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看系統(tǒng)所有邏輯 CPU 個數(shù)(所有物理 CPU 中內(nèi)核的個數(shù)加上超線程個數(shù)),可通過如下命令查看。
cat /proc/cpuinfo | grep "processor" | wc -l
cat /proc/meminfo MemTotal: 24656144 kB # 系統(tǒng)的物理內(nèi)存 MemFree: 20415000 kB # 物理內(nèi)存 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 ......省略部分內(nèi)容
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