如何理解产生死锁的4个必要条件

对于永久性资源,产生死锁有四个必要条件:

  1. 互斥条件。一个资源只能被一个进程占用
  2. 不可剥夺条件。某个进程占用了资源,就只能他自己去释放。
  3. 请求和保持条件。某个进程之前申请了资源,我还想再申请资源,之前的资源还是我占用着,别人别想动。除非我自己不想用了,释放掉。
  4. 循环等待条件。一定会有一个环互相等待。

什么是必要条件

必要条件是数学中的一种关系形式。如果没有A,则必然没有B;如果有A而未必有B,则A就是B的必要条件,记作B→A,读作“B含于A”。数学上简单来说就是如果由结果B能推导出条件A,我们就说A是B的必要条件。

可能我一直犯了一个错误,把必要条件理解成了数学中的必要条件,其实这里更像是逻辑学的一些关系形式。这里或多或少还是有一定区别的。

数学

有命题p、q,如果p推出q,则p是q的充分条件,q是p的必要条件;如果p推出q且q推出p,则p是q的充分必要条件,简称充要条件

逻辑学

  • 必要条件
    定义:如果没有事物情况A,则必然没有事物情况B;如果有事物情况B就一定有事物情况A,A就是B的必要条件,应注意必要条件不是必要不充分条件的简称。
  • 充分条件
    定义:如果有事物情况A,则必然有事物情况B;如果没有事物情况A而未必没有事物情况B,A就是B的充分而不必要条件,简称充分条件。紧跟在“如果”之后 。
    必要条件是逻辑学在研究假言命题假言推理时引出的。

我们按照逻辑学的定义来简述 :
产生死锁的4个必要条件是1.互斥2.不可剥夺3.请求和保持4.循环等待。

逻辑学的定义

如果没有事物情况A,则必然没有事物情况B;如果有事物情况B就一定有事物情况A,A就是B的必要条件,应注意必要条件不是必要不充分条件的简称。

如果没有这个4个条件(1.互斥2.不可剥夺3.请求和保持4.循环等待),则必然不会产生死锁
如果产生死锁,这一定有这个4个条件(1.互斥2.不可剥夺3.请求和保持4.循环等待)并且这4个条件都是要满足的。并不是满足其中一个。
4个条件是死锁产生的必要条件。不是充分条件,充分条件的意思是如果有这个4个条件,就一定会死锁,显示不是,要产生死锁肯定还有其他条件满足才行。但是必要条件的意思是,只要产生死锁,就会有这4种情况出现,如果有一条情况不满足,那么肯定不会产生死锁。所以我们经常预防死锁就是通过解除这4个必要条件来实现。

北京大学出版社 陈向群 的 《操作系统教程》第三版 我怎么感觉这句话不严谨呢?


image.jpeg

我觉得应该改成 只要系统发生死锁,则以上四个条件都必须成立。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,076评论 0 13
  • 选择题部分 1.(),只有在发生短路事故时或者在负荷电流较大时,变流器中才会有足够的二次电流作为继电保护跳闸之用。...
    skystarwuwei阅读 13,597评论 0 7
  • 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请...
    像敏锐的狗阅读 1,050评论 0 0
  • 如何培养孩子的责任感? 将从两个方面展开: 第一个方面就是学会有同理心; 第二个方面就是要培养孩子的责任感,同时要...
    爱学习的MM阅读 397评论 0 1
  • 色铅笔绘画基础入门-牡丹花 用铅笔起稿后,轻轻擦去,留下淡淡的铅笔痕,用红色和绿色重新勾画出牡丹轮廓。 用渐变法,...
    微影流年阅读 626评论 1 2