内核同步有哪些机制?这些机制如何使用?

 

内核同步有哪些机制?

1.原子操作(不可分割)

原子操作是其他同步方法的基石;

 

原子整数最常见的用途就是实现计数器;

 

2.自锁(spin lock)

 

自旋锁的特性

自旋锁最多只能被一个执行线程持有;

若有执行线程去尝试获取已经被持有的自旋锁,会自旋(占着cpu空转);

 

利用自旋锁的特性:为多处理器机器提供了防止并发访问所需的保护机制;

 

使用自旋锁的初衷:

在短时间内进行轻量级加锁;

 

处理对锁争用的方式

让请求锁的执行线程睡眠,直到请求的锁可用,再唤醒线程;

 

自旋锁方法的实现?

自旋锁的实现同体系结构密切相关,代码往往通过汇编实现;

 

自旋锁的使用:

在中断处理程序中可使用自旋锁(不会休眠;提前禁本地中断)

 

 

 

 

2.信号量

Linux中,信号量是一种睡眠锁;

若有一个任务试图获得一个不可用(已经被占用)的信号量,信号量会将其推进一个等待队列,让其睡眠;

 

 

信号量的创建和初始化

 

信号量的使用

 

 

 

3.互斥锁

 

 

 

4.完成变量

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值