关于操作系统中的死锁的问题

讲真的现在在看一遍操作系统觉得,前人真是强大,越来越佩服。以前大二学此,还是一脸懵逼,两脸懵逼。

产生死锁的必要充分条件是循环等待

例如:两个线程一个竞争A ,B资源,一个竞争B A资源,假如,都是竞争到用完两个资源才会释放两个资源的。这个就可能会产生循环等待问题。

当然,如果用一个就释放一个,那就不会产生死锁问题咯,这也就不是循环等待咯

 循环等待问题:当进程1竞争到了A资源,进程2竞争到了B资源,那么此时就发生了循环等待问题。这时候,进程1抓着A资源不放,欲请求B资源,进程2抓着B资源不放,欲请求A资源,此时,就会产生死锁问题。

待补充图片

 

银行家算法

 资源固定(m种资源,对应的资源数分别为n1,n2,n3,n4….),进程需要的资源给出(P1(Ni,Nj….),P2(….)…..),通过分配资源,为这些进程找到一条不会死锁的通路,这就是银行家算法。

当然没有找到的话,也可能不会死锁。用递归完全可以实现它,有空再实现吧。

 待补充图片

哲学家吃饭问题

待补充图片

 

    原文作者:银行家问题
    原文地址: https://www.cnblogs.com/czk666/p/9548769.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞