标签题目
Linux 内核相关面试题
platform driver 的 probe 没有执行,可能是什么原因?
这题考 Linux platform 驱动匹配排障,回答要先判断是否完成设备和驱动匹配,再检查设备树、模块、表项和资源依赖。
一个 I2C 传感器在新板子上如何从设备树到驱动到用户态 bring up?
这题考新板传感器 bring-up 的全链路能力,回答要覆盖硬件确认、设备树描述、驱动匹配、寄存器验证和用户态接口。
Linux 驱动如何用异步通知把设备数据准备好这件事通知用户程序?
这题考 Linux 驱动事件通知机制,回答要讲清用户进程开启异步通知、驱动维护 fasync 队列、数据就绪时发送信号并由用户再读取数据。
Linux 用户空间和内核空间如何隔离,mmap 映射的是哪类地址?
这题考虚拟地址空间和驱动映射,回答要区分用户虚拟地址、内核虚拟地址、物理页和设备寄存器映射。
应用层调用 open 后如何进入内核驱动的 open?
这题考 VFS 到字符设备驱动的调用链,回答要从用户态系统调用、路径解析、inode/file、major/minor 到 file_operations.open 讲清楚。
驱动 probe 成功但设备仍异常,说明什么,如何排查?
这题考驱动 bring-up 排障思路,回答要说明 probe 成功只代表绑定和初始资源申请成功,不代表设备功能完全正确。
ARM64 架构下 Linux 中断处理流程是什么,需要保存哪些寄存器?
这题考 ARM64 Linux 中断入口和上下文保存,回答要讲清异常向量、保存 pt_regs、GIC 分发、通用中断层处理和返回恢复。
Linux 内核模块的 module_init 底层原理是什么?
这题考内核模块初始化机制,回答要说明 module_init 宏把初始化函数注册到特定入口,加载模块时内核完成 ELF 装载、符号解析、重定位后调用它。
Linux 内核空间和用户空间有哪些通信方式?
这题考内核用户态交互方式选型,回答要按控制、数据流、事件通知、配置调试和大块共享分别说明适用场景。
驱动中如何把内核内存拷贝到用户空间,需要注意什么?
这题考驱动用户拷贝安全,回答要说明必须使用 copy_to_user 等接口,检查长度和返回值,避免在原子上下文、持自旋锁或暴露未初始化数据。