死锁 互斥 同步

2017-08-21  本文已影响0人  元素周期表的十七君

操作系统中的互斥,同步与死锁

死锁

两个及以上进程,因每个进程都在等待其他进程做完某事(如释放资源),而不能继续执行

死锁的充要条件:

1.互斥:一个资源只能够供一个进程使用,已分配给进程的资源,不可以在分配给其他的进程;

2.占有且等待:当进程等待其他进程释放资源的时候,他申请的并且已经获得的资源是继续占有已经获得的资源的;

3. 不可抢占:不可以抢占进程已经占有的资源;

4.循环等待:存在一个封闭的进程链,是每一个进程至少占有此链中下一个进程所需要的一个资源。


死锁避免

是允许三个必要条件,但是不允许出现循环等待的状况,这样会允许处理更多的并发请求。死锁避免需要知道将来的进程资源需求的情况。在死锁的避免中,是否同意资源的请求是通过判断该请求是否可能造成死锁来决定的。如果一个进程的启动会造成死锁的话,则不启动该进程;如果一个进程增加资源请求的话,会造成死锁,则不分配给他资源。

银行家算法(资源分配拒绝策略)和拒绝启动进程的算法。

1.拒绝启动的算法

R表示系统资源,V表示未分配的资源,C[i][j]表示进程i对资源j的需求,A[i][j]表示的是进程i中已经分配了资源j的数目。根据这个矩阵的关系,定义了一个死锁避免的策略:如果一个新进程的资源需求会导致死锁,则拒绝启动这个新的进程

2.银行家算法:

一系列的进程已经运行,R表示总的资源数目,V表示当前未分配的资源,C表示需求的资源,A表示当前已经给进程分配的资源,那么C-A矩阵就是新的资源分配需求,V需要满足至少一条C-A否则不会分配资源给进程。然后再可以执行的进程结束的时候,回收掉该进程的所有资源

上一篇下一篇

猜你喜欢

热点阅读