死锁

2018-12-04  本文已影响0人  ZMRWEGo

操作系统中死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局。具体来讲在多进程环境中,当一个进程请求资源时,如果该资源不能立即获得,那么进程就会进入等待状态。若果一个处于等待状态的进程P(i),由于所等待的资源被另一个处于等待状态的进程p(j)(i!=j)所持有,而p(j)所请求的资源又被p(i)持有,这样它们所请求的资源都不会获得,两进程一直处于等待状态,形成死锁。

一、形成死锁的四个必要条件:

1、互斥(Mutual exclusion)。进程对所分配到的资源进行排它性使用,在一段时间内某资源只由一个进程占用。

2、持有并等待(Hold and wait)。指某个进程已经持有了一个或多个资源,但是还要请求其他资源,而它请求的资源不能立即获得,需要等待。

3、不可抢占(No preemption)。即进程已经获取的资源在使用过程中不能被其他进程抢占,只能在使用完后,由该进程自己释放。

4、环路等待(Circular wait)。即形成进程和请求资源之间的环路,如图:

矩形的代表进程,圆形代表资源,实线表示已经持有的资源,虚线表示正在请求的资源。

二、死锁的处理

死锁的处理包括:不允许死锁的发生;允许死锁的发生,但是可以检测并恢复;忽略该问题(这就是当机器卡死时,重启可以解决的原理所在)。

上一篇 下一篇

猜你喜欢

热点阅读