Linux内核面试题汇总
[暂无答案]
1.硬件中断号和Linux内核的IRQ号它们是如何映射的?
2.当发生硬件中断之后,ARM64处理器架构做哪些工作?
3.为什么说中断上下文不能执行睡眠操作?
4.一个硬件中断后,Linux内核如何响应并处理中断?
5.同一类型的软中断是否允许多个CPU并行执行?
6.软中断上下文包括哪几种情况?
7.软中断上下文还是进程上下文的优先级高?为什么?
8.是否允许同一个tasklet在多个CPU上并行执行?
9.中断现场保存在什么地方?
10.什么是中断现场?中断现场中需要保存哪些内容?
11.工作队列是运行在中断上下文,还是进程上下文?它的回调函数是否允许睡眠?
12.Linux软中断和工作队列作用是什么?
13.Linux通过什么样方式实现系统调用?
14.如果多个work挂入一个工作线程当中执行,当某个work的回调函数执行了阻塞操作时,那么剩下的work怎么办?
15.CMWQ机制如何动态管理工作线程池的线程?
16.Linux操作系统的ARM系统把bootloader烧录进去后,通电后串口没有任何输出反应,此时你应该去检查软件和硬件?
17.请你说出3种嵌入式体系结构,说明什么是ARM体系结构?
18.ARM中断在ARM9,Cortex-A8是怎么处理?Linux中为什么要把中断分为上半部分和下半部分?MMU和Cache基础原理?
19.嵌入式常用的文件系统有哪些?主要特点和应用场景?
20.Linux操作系统通电开始到系统起来的主要过程是什么?
21.Linux驱动当中字符设备和块设备区别?
22.请从USB HOST、LCD驱动器、NAND FLASH、WIFI、网卡、音频芯片中选择一个。
23.为什么spinlock的临界区不能睡眠?
24.与spinlock相比,信号量有哪些特点?
25.描述信号量是如何实现的?
26.什么时候使用读者信号量?什么时候使用写者信号量?由什么条件来判断?
27.请描述MCS锁机制的实现原理?
28.RCU相比读写锁有哪些优势?
29.在KSM当中扫描栽个VMA寻找有效匿名页面?
30.Linux内核已经实现信号量机制,为什么还要单独设置一个互斥锁机制?
31.请解释静态状态和宽限期?
32.请描述PG_locked常见使用方法?
33.使用GCC的"O0"优化选项来编译内核有如何优势?
34.U-boot启动时重定位是如何实现?
35.如何分析一个oops错误日志?
36.在x86_64架构里函数参数是如何传送的?
37.什么是直接寻址、间接寻址和基址寻址?
38.描述Kdump的工作原理?
39.在x86_64架构当中,MOV指令和LEA指令有何区别?
40.Hardlock机制实现原理/Hung_task机制实现原理/Softlockup机制实现原理?
41.什么是死锁?什么是重定位?死锁有哪几种?
42.什么是运行地址、链接地址、加载地址?
43.为什么要刻意设置加载地址/运行地址/链接地址?
44.如何在内核代码中添加一个跟踪点?
45.如何使用内核的动态输出技术?
46.什么是printk输出等级?具体有哪些输出等级?
47.发生硬件中断后,ARM64处理器架构做什么事情?
48.硬件中断号与Linux内核的IRQ号如何映射的?
49.一个硬件中断发生之后,Linux内核如何响应并处理此中断?
50.同一类型软中断是否允许多个CPU并行执行?
51.读写信号量使用的自旋等待机制是如何实现的?
52.在编写内核代码的时候,该如何选择信号量和互斥锁?
53.请描述一个宽限期的生命周期及其状态机的变化?
54.Linux内核中经典自旋锁的实现有什么样的缺点?
55.信号量是如何实现?乐观自旋等待的判断条件是什么?
56.请说明内核使用内存屏障的场景?
57.ARM64处理器架构当中,如何实现独占访问内存?
58.为什么自旋锁的临界区不允许发生抢占?
59.atomic_cmpxchg()和atomic_xchg()分别表示是什么含义?
60.为什么自旋锁的临界区不能睡眠?
61.排队自旋锁如何实现MCS锁?
62.排队自旋锁把32位的变量划分成几个域,每个域的含义和作用是什么?
63.为什么在互斥锁争用中进入乐观自旋等待比睡眠等待模式要好?
64.在ARM64当中,CAS指令包含加载————获取和存储————释放命令,它们的作用是什么?
65.atomic_try_cmpxchg()函数和atomic_cmpchg()函数有什么区别?
66.请描述内核使用内存屏障的场景?
67.Linux中的内核模式和用户模式是什么意义?
68.请描述原子操作、自旋锁、信号量、互斥锁以及RCU的特点和使用规则?
69.怎样申请大块内核内存?
70.用户进程通信主要几种方式?
71.通过伙伴系统申请内存的函数有哪些?
Alloc_page(...)、__get_free_pages(...)、vmalloc(...)、kmalloc(...)、ioremap()...
72.通过slab分配器申请内核内存的函数如何实现?
73.什么是加载地址、运行地址及链接地址?
74.什么是位置无关的汇编指令?什么是位置有关的汇编指令?
75.在内核启动时内核映像重定位是如何实现的?
76.软中断的回调函数执行过程中是否允许响应本地中断?
[暂无答案]