linux内核经典面试题

linux内核经典面试题

ID:32585518

大小:64.97 KB

页数:9页

时间:2019-02-13

linux内核经典面试题_第1页
linux内核经典面试题_第2页
linux内核经典面试题_第3页
linux内核经典面试题_第4页
linux内核经典面试题_第5页
资源描述:

《linux内核经典面试题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、LINUX内核经典面试题2015-05-0223:08:14分类:LIMX原文地址:LINUX内核经典面试题作者:sunjiangang-ok1)Linux中主要有哪儿种内核锁?2)Linux屮的用户模式和内核模式是什么含意?3)怎样申请大块内核内存?4)用户进程间通信主要哪儿种方式?5)通过伙伴系统中请内核内存的函数有哪些?6)通过slab分配器巾请内核内存的函数有?7)Linux的内核空间和用户空间是如何划分的(以32位系统为例)?8)vmalloc()中请的内存有什么特点?9)用户程序使用malloc()中请到的内存空间在什么范围?10)在支持并使能MMU的系统中,Linu

2、x内核和用户程序分别运行在物理地址模式还是虚拟地址模式?11)ARM处理器是通过儿级也表进行存储空间映射的?12)Linux是通过什么组件来实现支持多种文件系通的?13)Linux虚拟文件系统的关键数据结构有哪些?(至少写出四个)14)对文件或设备的操作函数保存在那个数据结构中?15)Linux中的文件包括哪些?16)创建进程的系统调用有那些?17)调用schedule()ffl行进程切换的方式有儿种?18)Linux调度程序是根据进程的动态优先级还是静态优先级来调度进程的?19)进程调度的核心数据结构是哪个?20)如何加载、卸载一个模块?21)模块和应用程序分别运行在什么空间?

3、22)Linux中的浮点运算由应用程序实现还是内核实现?23)模块程序能否使用可链接的库函数?24)TLB中缓存的是什么内容?25)Linux中有哪儿种设备?26)字符设备駆动程序的关键数据结构是哪个?27)设备驱动程序包扌舌哪些功能函数?28)如何唯一标识一个设备?29)Linux通过什么方式实现系统调用?30)Linux软中断和工作队列的作用是什么?1.Linux中主要有哪几种内核锁?Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内

4、核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个口J执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。口旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个己被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行英它代码。当持冇信号量的进程将信号量释放后,在等待队列屮的一个任

5、务将被唤醒,从而使可以获得这个信号量。信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。Linux内核中的同步机制:原了操作、信号量、读写信号量和口旋锁的API,另外一些同步机制,包括大内核锁、读写锁、大读者锁、RCU(Read-CopyUpdate,顾名思义就是读•拷贝修改),和顺序锁。2.Linux中的用户模式和内核模式是什么含意?MS-DOS等操作系统在单一的CPU模式下运行,但是一些类Unix的操作系统则使用了双模式,可以有效地实现吋间共享。在Linux机器上,CP

6、U要么处于受信任的内核模式,要么处于受限制的用户模式。除了内核本身处于内核模式以外,所有的用户进程都运行在用户模式之中。内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和I/O空间。如果用户模式的进程耍享冇此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出请求。另外,用户模式的代码允许发生缺页,而内核模式的代码则不允许。在2.4和更早的内核中,仅仅用户模式的进程可以被上下文切换出局,出其他进程抢占。除非发生以下两种情况,否则内核模式代码可以一一直独占CPU:(1)它自愿放弃CPU;(2)发生中断或异常。2.6内核引入了内核抢占,人多数内核模式的代码也可以被

7、抢占。2.怎样申请大块内核内存?在Linux内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然口J以通过vmalloc系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在32位系统上vmalloc的内存地址空间有限。所以,一般的建议是在系统启动阶段申请人块内存,但是具成功的概率也只是比较高而已,而不是100%o如果程序真的比较在意这个申请的成功与否,只能退用“启动内存,(BootMemory)o下面就是申请并导出启动内存的一段示例代码:void*x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。