计算机操作系统--死锁-笔记
定义
一组等待的进程,其中每一个进程都持有资源,并且等待着这个组中其他进程所持有的资源、
死锁Deadlock:计算机系统中多道程序并发执行时,两个或两个以上的进程由于竞争资源而造成的一种互相等待的现象(僵局),如无外力作用,这些进程将永远不能再向前推进。
产生死锁的原因
- 竞争资源:当系统中供多个共享的资源数目不足以满足各个进程的需要时,会引起诸进程对资源竞争而产生死锁。
- 进程间推进顺序非法:进程在运行过程中,请求和释放资源的顺序不当也会导致死锁
资源的分类,根据资源性质:
- 可抢占资源—指资源占有进程虽然需要使用该资源,但另一个进程却可强行把资源从占有者进程处抢来。
- 不可抢占资源—指只有占用者进程不再需要使用该资源而主动释放资源外,其它进程不得在占有者进程使用资源过程中强行抢占。
产生死锁的必要条件
- 互斥条件
进程对所分配到的资源进行排他性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其他进程请求该资源,则请求者只能等待,直至占有该资源的进程用毕释放。 - 请求和保持条件
只进程已经保持了至少一个资源,但是又提出了先的资源请求,而该资源又被其他进程占有,此时进程阻塞,但是自己持有的资源又不释放。 - 不可剥夺条件
进程已经获得资源,在未使用完之前不能被剥夺。只能在使用完由自己释放。 - 环路等待条件
发生死锁时,必定存在一个进程-资源的环形链。
处理死锁的基本方法
- 预防死锁
设置某些限制条件去破坏产生死锁的四个必要条件中的一个或者几个条件,来预防死锁。但是由于施加的限制条件往往太严格,因而可能导致系统资源利用率和系统吞吐量降低。(打破四个条件) - 避免死锁
不采用限制条件,而是在资源动态分配过程中,用某种方式防止系统进入不安全状态。只需要事先施加较弱的限制条件,便可以获得较高资源利用率和系统吞吐量,但实现有难度。(安全状态和银行家算法) - 检测死锁
允许发生死锁,检测然后清除(资源分配图,死锁定理) - 解除死锁
与检测死锁配套。常用的方法是撤销或者挂起一些进程,回收一些资源再分配给阻塞的进程。可以获得较高资源利用率和系统吞吐量,但是实现难度最大。(剥夺资源、撤销进程)