内核常见面试问题汇总
1、Linux 中主要有哪几种内核锁?它们各自的特点和适用场景是什么?
自旋锁
自旋锁是一种忙等待锁,当一个线程试图获取一个被占用的自旋锁时,他会一直循环在那里,不断地检查锁是否可用,而不会进入睡眠状态。
自旋锁的优点这是在锁被持有的时间很短的情况下,性能非常高,因为他避免了线程切换的开销。但是,如果锁被出油的时间较长,自旋锁会浪费大量的CPU时间,因为等待的线程会一直占用CPU 资源进行进行忙等待。
适用场景:适用于锁被持有的时间很短,并且对性能要求非常高的场景。例如,在中断处理程序中,由于中断处理应该尽可能快地完成,不希望进入睡眠状态,所以可以使用自旋锁。在多处理器系统中,如果一个处理器上的线程在等待自旋锁时,其他处理器上的线程可能会释放锁,这样等待的线程可以很快地获得锁,因此自旋锁在多处理器系统中也有较好的性能。
互斥锁
互斥锁是一种睡眠锁,当一个线程试图获取一个被占用的互斥锁时,它会进入睡眠状态,直到锁被释放后被唤醒。
互斥锁的优点是在锁被持有的时间较长的情况下,不会浪费CPU资源,因为等待的线程进入睡眠状态,让出CPU给其他线程执行。但是,互斥锁的开销相对较大,因为涉及到线程的睡眠和唤醒,以及内核的调度操作。
适用场景&