首页 > 系统相关 >进程管理 三 同步与互斥问题

进程管理 三 同步与互斥问题

时间:2023-03-23 12:34:18浏览次数:42  
标签:available 同步 死锁 信号量 互斥 临界 进程

同步与互斥

多道程序环境下,进程并发执行,不同进程之间存在不同的相互制约关系。
同步——直接制约关系
互斥——间接制约关系
image.png

临界区互斥的实现方法

软件实现方法

单标志法

标志turn用于指示允许进入临界区的进程。
image.pngimage.png

双标志先检查法

image.png

双标志后检查法

image.png

Peterson算法

image.png


image.png


硬件实现方法

通过硬件支持实现临界互斥问题的方法称为低级方法,或称元方法。

中断屏蔽方法

image.png

TestAndSet指令

image.png

Swap指令

image.png


image.png

硬件方法的优点:适用于任意数目的进程,而不管是单处理机还是多处理机;简单、容易验证其正确性。可以支持进程内有多个临界区,只需为每个临界区设立一个布尔变量。

硬件方法的缺点:进程等待进入临界区时需要耗费处理机时间,不能实现“让权等待”;从等待进程中随机选择一个进入临界区,有的进程可能一直选不上,导致“饥饿”现象。

互斥锁

解决临界区问题最简单的工具就是互斥锁(mutex lock)。一个进程在进入临界区时应该获得锁,在退出临界区时释放锁。
available:布尔变量,指示锁是否可用。
acquire():获得锁。当锁是可用的(available = true),成功获得锁(设置available = false)
release():释放锁。设置available = true

acquire()和release()操作必须是原子操作(即硬件实现的),当有一个进程在临界区内时,其他进程在进入临界区时必须循环调用acquire()。当多个进程共享同一CPU时,就浪费了CPU周期。因此,互斥锁常用于多处理机系统,一个线程可以在一个处理机上忙等,不影响其他线程的执行。

信号量机制

image.png

整型信号量

Screenshot from 2022-09-29 16-46-09.png

记录型信号量

image.png
image.png

信号量操作实现互斥\同步\前驱

image.png
image.png

前V,P后

image.pngimage.png

经典同步问题

生产者-消费者问题

image.pngimage.pngimage.png

多生产者-多消费者问题

image.pngimage.pngimage.pngimage.png
image.pngimage.pngimage.png

抽烟者问题

image.pngimage.pngimage.png

读写问题

image.pngimage.pngimage.pngimage.png

哲学家进餐问题

image.pngimage.pngimage.png
image.pngimage.png

管程

image.pngimage.pngimage.pngimage.png

死锁

image.pngimage.pngimage.pngimage.png

预防死锁

image.pngimage.pngimage.pngimage.png

避免死锁

image.pngimage.pngimage.png

死锁的检测和解除

image.pngimage.pngimage.pngimage.png

标签:available,同步,死锁,信号量,互斥,临界,进程
From: https://www.cnblogs.com/woshi/p/17247014.html

相关文章