死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
可把系统中的资源分为两类:
- 可剥夺性资源:资源分配给进程后可以被高优先级的进程剥夺。如CPU、主存。
- 不可剥夺性资源:分配给进程后只能在进程用完后才释放的资源。如磁带机、打印机等。
一、死锁发生的必要条件
- 互斥条件:即一个资源每次只能被一个进程使用。
- 保持和等待条件:有一个进程获得了一些资源,但因正在请求其他资源而被阻塞。
- 不剥夺条件:就是系统不是抢占式的,进程已获得的资源在未使用完之前,不能剥夺,只能在使用完后由自己释放。
- 环路等待条件:若干个进程形成环型链,每个都占用对方要申请的下一个资源。

二、解决死锁的策略
- 死锁预防
- 死锁避免
- 死锁检测
- 死锁解除
1、死锁预防
(1)摒弃“保持和等待条件”条件
需要的资源一次性申请,需要多少资源一次性得到多少。防止出现持有一个等待另一个
(2)摒弃“不剥夺”条件
允许高优先级进程剥夺低优先级进程占有的资源
(3)摒弃“环路等待”条件
不然形成进程资源的环路,对资源进行编号,只能申请比已经拥有资源编号更大的资源
2、死锁避免
避免是指进程在每次申请资源时判断这些操作是否安全,典型避免死锁的算法是银行家算法。
3、死锁检测
判断系统是否处于死锁状态,如果是,则执行死锁解除策略。
4、死锁解除
就是剥夺,即将资源强行分配给别的进程。
cialis discount coupons buying cialis in south africa cialis 5mg 10mg no prescription
antiviral covid treatment plaxovid where can i get paxlovid
molnupiravir by merck molnupiravir price monulpiravir
plaquenil and weight gain what does plaquenil do to your body plaquenil side effects weight gain
what does female viagra do how long before sex should you take viagra buy viagra online without prescriptions
best place to buy viagra online is it safe to take viagra two days in a row how long for viagra to work