操作系统二轮复习(进程的同步与互斥)

文章目录

  • 进程互斥与同步四原则
  • 进程互斥的软件实现方法
    • 单标志法(空闲让进)
    • 双标志先检查法(忙则等待)
    • 双标志后检查法(空闲让进、有限等待)
    • 皮特森算法(让权等待)
    • 小结
  • 进程互斥的硬件实现方法
    • 中断屏蔽方法(适用于单处理机、内核进程)
    • TestAndSet 指令(不满足让权等待,适用于多CPU)
    • Swap 指令(不满足让权等待、适用于多CPU)
    • 小结
  • 软硬件方法都不满足“让权等待”
  • 信 量机制
    • 整型信 量(违背让权等待)
    • 记录型信 量(满足让权等待)
    • 小结
    • 如何实现同步与互斥
      • 实现互斥(信 量初值为1)
      • 实现同步(初值为0)
    • 前驱关系
  • 管程
  • 死锁
    • 死锁检测
  • 进程互斥 锁
    • 互斥锁(存在忙等的问题,不满足让权等待)
  • 进程同步 条件变量
    • 条件变量通常和锁配合着使用,用于实现互斥

进程互斥与同步四原则

进程互斥的软件实现方法

单标志法(空闲让进)

双标志后检查法(空闲让进、有限等待)

进程互斥的硬件实现方法

TestAndSet 指令(不满足让权等待,适用于多CPU)

小结

记录型信 量(满足让权等待)

小结

实现同步(初值为0)

  1. 引入管程的目的无非就是要更方便地实现进程互斥和同步。
  2. 这种互斥特性是由编译器负责实现 的,程序员不用关心。

死锁检测

先看分配出去的资源

P1请求分配两个R2资源,而R2资源已经全部分配出去了,一个给了P3,一个给了P2,所以P1进程应该被阻塞。
P2也是同理
能顺利执行得只有P3进程

进程互斥 锁

互斥锁(存在忙等的问题,不满足让权等待)

自旋忙等的过程中没有发生进程切换,所以忙等的代价是很低的

进程同步 条件变量

条件变量通常和锁配合着使用,用于实现互斥

条件变量和信 量:

信 量它有一个初值,这个值表示用信 量表示的资源他有多少个
条件变量是没有初始值的,他只是一个队列而已
初始时,条件变量为空
一个条件变量代表一种阻塞的原因

信 量V操作:先让值+1,如果有进程在等待这个信 量,还会唤醒等待的信 量。
这就意味着即便没有任何进程在等待,
我的V操作至少会让值加1


条件变量signal操作,如果等待队列的条件变量为空,他不会累加值,也无法唤醒任何一个进程,
所以使用条件变量的时候,wait操作会在signal操作之前

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年11月4日
下一篇 2021年11月4日

相关推荐