Linux中主要有哪几种内核锁

参考答案

Linux的内核锁主要是:自旋锁、信号量。

1.  自旋锁

  • 自旋锁最多只能被一个可执行线程持有.
  • 如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。
  • 如果锁未被争用,请求它的执行线程便能立刻得到它并且继续进行,自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。

2. 信号量

  • 自旋锁是一种睡眠锁。
  • 如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠,这时处理器获得自由去执行其它代码。
  • 当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。
  • 信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况,只能在进程上下文中使用,因为中断上下文中是不能被调度的。当代码持有信号量时,不可以再持有自旋锁。

 

以上,是【Linux中主要有哪几种内核锁】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧