整理嵌入式 Linux 內核開發崗位高頻考察的 30 個核心知識點,涵蓋內存管理、進程調度、文件系統、驅動模型、中斷機制等模塊。每道題直擊核心原理,適合面試複習與技術自查。
- Linux 主要內核鎖有哪些? 自旋鎖、互斥鎖、信號量、rwlock、RCU、seqlock、percpu 變量等
- 用戶態 vs 內核態含義? 特權級 3 vs 0,內存訪問權限、指令集、系統調用入口差異
- 大塊內核內存申請方式?
vmalloc、alloc_pages、dma_alloc_coherent、CMA 區域
- 用戶進程 IPC 主要方式? 管道、FIFO、消息隊列、共享內存、信號量、Socket、信號
- 伙伴系統分配函數?
alloc_pages、__get_free_pages、kmalloc(小塊走 slab)
- Slab 分配器函數?
kmem_cache_alloc、kmalloc、kzalloc、krealloc
- 32 位系統內核/用戶空間劃分? 3G/1G(默認),可配置 2G/2G、1G/3G;
PAGE_OFFSET=0xC0000000
- vmalloc 內存特點? 虛擬地址連續、物理地址不連續、需建立頁表映射、有 TLB 刷新開銷
- malloc 返回地址範圍? 用戶空間堆區(
brk~mmap 基址),受 RLIMIT_AS 限制
- MMU 系統下內核/用戶運行模式? 均運行在虛擬地址模式,內核空間映射全局,用戶空間進程隔離
- ARM 多級頁表映射? ARMv7 兩級(L1 Section/Page Table + L2 Page Table),ARMv8 四級(PGD/PUD/PMD/PTE)
- VFS 實現多文件系統核心組件? 超級塊、索引節點、目錄項、文件對象、文件系統類型、掛載點
- VFS 關鍵數據結構(≥4)?
super_block、inode、dentry、file、vfsmount、file_system_type
- 文件操作函數保存結構?
struct file_operations,掛載在 inode->i_fop 或 file->f_op
- Linux 文件類型? 普通文件、目錄、字符設備、塊設備、管道、Socket、符號鏈接
- 創建進程系統調用?
fork、vfork、clone、execve 族、posix_spawn
- 調用 schedule() 切換方式? 主動調度(睡眠、等待)、搶佔調度(時間片用盡、中斷返回)、實時調度策略
- 調度依據動態還是靜態優先級? CFS 使用虛擬運行時間(vruntime)動態調度;實時類使用靜態優先級
- 進程調度核心數據結構?
task_struct、rq (runqueue)、cfs_rq、sched_entity
- 模塊加載/卸載命令?
insmod/rmmod、modprobe/modprobe -r;內核 init_module/delete_module
- 模塊 vs 應用程序運行空間? 模塊:內核空間;應用:用戶空間
- 浮點運算由誰實現? 用戶態:應用+庫+硬件;內核態:默認禁用,需
kernel_fpu_begin/end 保護上下文
- 模塊能用可鏈接庫函數? 不能,只能使用內核導出符號(
EXPORT_SYMBOL)
- TLB 緩存內容? 虛擬地址→物理地址映射(頁表項部分內容),含 ASID/PCID 標識
- Linux 設備分類? 字符設備、塊設備、網絡設備、其他
- 字符設備驅動關鍵結構?
struct cdev、struct file_operations、struct class、device
- 驅動功能函數?
open/release、read/write、ioctl/unlocked_ioctl、mmap、poll、llseek
- 唯一標識設備? 主設備號 + 次設備號(
dev_t = MAJOR:MINOR)
- 系統調用實現方式? x86:
int 0x80 / syscall / sysenter;ARM: SVC 指令
- 軟中斷 vs 工作隊列作用? 軟中斷:中斷上下文、高優先級、不可睡眠;工作隊列:進程上下文、可睡眠、延遲執行
備考建議
- 每道題展開可講 5-10 分鐘,重點掌握數據結構關係、關鍵函數調用鏈、併發保護邏輯
- 結合內核源碼(
kernel/sched、mm、fs、drivers/base)閱讀核心路徑
- 實機驗證:
ftrace、perf、/proc、/sys 觀察運行時行為