Linux大厂面试题

本文深入探讨了Linux内核的同步机制,重点介绍了自旋锁和信号量这两种内核锁,以及它们在多处理器环境和抢占式内核中的作用。此外,还涵盖了用户模式和内核模式的概念,以及内核内存的申请方法。文章进一步阐述了用户进程间通信的各种方式,如管道、信号量、共享内存等,并列举了内核内存管理和虚拟文件系统的关键数据结构。最后,讨论了设备驱动程序的功能函数、设备的唯一标识以及系统调用的实现方式。
摘要由CSDN通过智能技术生成

(1)Linux 中主要有哪几种内核锁?

Linux 的同步机制从 2.0 到 2.6 以来不断发展完善。从最初的原子操作,到后来的信号量,从 大内核锁到今天的自旋锁。这些同步机制的发展伴随 Linux 从单处理器到对称多处理器的 过渡; 伴随着从非抢占内核到抢占内核的过度。Linux 的锁机制越来越有效,也越来越复杂。 Linux 的内核锁主要是自旋锁和信号量。 自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被 持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁 未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多 于一个的执行线程同时进入临界区。 Linux 中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号 量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号 量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号 量。 信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用, 因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。 Linux 内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的 API,另外一些同步机 制,包括大内核锁、读写锁、大读者锁、RCU (Read-Copy Update,顾名思义就是读-拷贝修 改),和顺序锁。

2) Linux 中的用户模式和内核模式是什么含意?

MS-DOS 等操作系统在单一的 CPU 模式下运行,但是一些类 Unix 的操作系统则使用了双 模式,可以有效地实现时间共享。在 Linux 机器上,CPU 要么处于受信任的内核模式,要么处 于受限制的用户模式。除了内核本身处于内核模式以外,所有的用户进程都运行在用户模式 之中。 内核模式的代码可以无限制地访问所有处理器指令集以及全部内存和 I/O 空间。如果用户 模式的进程要享有此特权,它必须通过系统调用向设备驱动程序或其他内核模式的代码发出 请求。另外,用户模式的代码允许发生缺页,而内核模式的代码则不允

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值