linux内核面试题(2)

整理了一些网上的linux驱动岗位相关面试题,如果错误,欢迎指正。

  1. 工作队列是运行在进程上下文,还是中断上下文?它的回调函数是否允许睡眠?
    • 工作队列是运行在进程上下文的。工作队列的回调函数是允许睡眠的,因为工作队列是在内核线程中执行的,可以执行可能阻塞的操作。
  2. Linux软中断和工作队列的作用是什么?
    • 软中断: 用于执行一些不需要立即响应的低优先级任务,如延迟任务处理、定时器处理等。
    • 工作队列: 用于在进程上下文中异步执行一些需要延迟处理的工作,以避免在中断上下文中执行可能阻塞的操作。提供了一种将工作推迟到稍后执行的机制。
  3. Linux通过什么方式实现系统调用?
    • Linux通过软中断或系统调用指令实现系统调用。用户空间程序通过调用系统调用库中的函数,触发软中断或使用系统调用指令,将控制权转交给内核执行相应的系统调用服务例程。
  4. 如果多个 work 挂入一个工作线程中执行,当某个 work 的回调函数执行了阻塞操作时,那么剩下的 work 怎么办?CMWQ 机制如何动态管理工作线程池的线程?
    • 如果一个 work 的回调函数执行了阻塞操作,会阻塞整个工作队列。对于多个 work 共享一个工作线程的情况,剩下的 work 将等待当前 work 的完成。CMWQ(Concurrent Multi-Queue)机制通过为每个 CPU 核心维护一个独立的工作队列,动态管理工作线程池,允许多个 CPU 核心同时执行工作队列中的工作,提高并发性。
  5. Linux 操作系统的 ARM 系统把 bootloader 烧录进去后,通电后串口没有任何输出反应,此时你应该去检查软件和硬件?
    • 软件检查: 确保 bootloader 正确编译、烧录,没有错误。检查 bootloader 的串口初始化和输出设置是否正确。
    • 硬件检查: 检查串口线连接是否正常,波特率设置是否匹配。确认硬件电源正常供电,系统电源管理电路是否正常。
  6. 请你说出 3 种嵌入式体系结构,说明什么是 ARM 体系结构?
    • 三种嵌入式体系结构:ARM、MIPS、PowerPC。
    • ARM 体系结构: ARM(Advanced RISC Machine)是一种精简指令集计算机(RISC)体系结构,广泛应用于移动设备和嵌入式系统。其特点是低功耗、高性能,适合对功耗和空间有限的场景。
  7. ARM 中断在 ARM9,Cortex-A8 是怎么处理?
    • ARM9 处理器使用中断控制器管理中断,通过中断向量表找到相应的中断服务例程。Cortex-A8 处理器引入 GIC(Generic Interrupt Controller)来更灵活地管理中断,支持更多的中断源和优先级。
  8. Linux 中为什么要把中断分为上半部分和下半部分?
    • 分为上半部分和下半部分是为了最小化中断处理的时间,提高系统的响应性。上半部分(顶半部)处理紧急、必须立即响应的任务,而下半部分则处理可以延迟的工作,减少对系统的干扰。
  9. MMU 和 Cache 基础原理?
    • MMU(Memory Management Unit): 负责虚拟地址到物理地址的映射,提供内存保护和地址空间隔离。
    • Cache: 用于存储最近使用的数据,加速对内存的访问。工作原理包括缓存行、缓存命中和缓存替换。
  10. 嵌入式常用的文件系统有哪些?主要特点和应用场景?
    • 常用文件系统:ext4、FAT32、YAFFS(Yet Another Flash File System)、JFFS2(Journaling Flash File System)。
    • 特点和应用场景:
      • ext4: 适用于闪存和硬盘,支持大容量,性能较高。
      • FAT32: 简单、兼容性好,适用于移动设备和存储设备。
      • YAFFS: 针对闪存的文件系统,考虑了闪存的特性,适用于嵌入式系统。
      • JFFS2: 支持闪存,具有文件系统日志功能,适用于嵌入式系统。
  11. Linux 操作系统通电开始到系统起来的主要过程是什么?
    • 通电后,Bootloader 被加载执行,Bootloader 负责初始化硬件、加载内核镜像到内存,然后将控制权交给内核。内核初始化硬件、建立内存映射、创建初始进程,最终启动用户空间的初始化进程。至此,系统启动完成。
相关推荐
学逆向的7 小时前
C 堆区内存管理
c语言·开发语言·网络安全
琥珀.7 小时前
mysql中json数组转列表查询
linux·运维·服务器
dawnsky.liu7 小时前
在 RHEL 中使用 goose 实现远程主机管理
linux·运维·ai
Linux运维技术栈9 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
阿尼卡~9 小时前
VS Code 配置 C 语言开发环境(Windows 10/11):从 GCC 安装到运行、断点调试,一篇搞定
c语言·开发语言·windows
考研保研资料分享10 小时前
四非会计保研中国矿大(北京):七场考核、候补与择校复盘
面试
slongzhang_11 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
叼烟扛炮11 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT11 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
Escalating_xu11 小时前
【Linux 网络编程】应用层协议 HTTP(下):Header、连接管理与 C++ HTTP 服务器
linux·服务器·网络