OS 互斥/同步

OS 互斥/同步

互斥 :

  • 竞争条件 (race condition): 当多线程竞争共享变量时, 由于执行时发生上下文切换, 每次结果都是不确定性(indeterminate)
  • 临界区 (critical section): 多线程访问共享资源的代码片段
  • 互斥 (mutualexclusion): 保证临界区, 只能一个线程执行

image.png

同步 : 并发进程/线程, 在某点要互相等待与互通消息

  • 如 : 操作 A 要在操作 B 前执行; 操作 C 要在操作 A 和操作 B 都完成后, 才能执行

实现进程互斥/同步方法:

  • 锁: 加锁、解锁
  • 信号量:P、V

加锁/解锁: 并发线程/进程的互斥问题

  1. 进入临界区的线程,先加锁
  2. 加锁成功,线程进入临界区
  3. 访问完临界资源, 解锁释放

image.png

实现锁

锁的实现方法 : 忙等待锁 , 无忙等待锁

忙等待锁 (自旋锁 (spin lock)) :

  • 测试和置位 (Test-and-Set) 原子指令
  • 原子操作: 要么全部执行,要么都不执行
  • 过程: 获取不到锁时,线程就一直 while 循环,不做任何事情

无等待锁 :

  • 获取不到锁,就不自旋, 将当前线程放入到等待队列,再等待调度执行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值