通过王者自走棋学操作系统-死锁产生的4个条件

前言

最近打王者自走棋,老是拿不了第一,我也太难了,特别每次都拿第二,都会被对面嘲讽一波,“打得很好”,这就导致了没有能够好好听课,所以还是好好学习吧(笑),那么我就写下了自己对于死锁的理解。

死锁概念及产生原理    

概念:

多个并发进程因争夺系统资源而产生相互等待的现象。

原理:

当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。 

本质原因: 

1)、系统资源有限。 2)、进程推进顺序不合理。

自走棋解释:每次你玩自走棋的时候由于是同一个库中的卡,每张卡就几张,有数量限制,例如5元的吕布就10张,多了没有,这就是系统资源有限,这个时候如果这是线上游戏,你想要,我也想要咱俩就会发生冲突,产生一定的隐患,但这却不足以构成死锁,继续往下看。

死锁产生的4个必要条件 :

1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。

所谓互斥其实就是说,每个人每次刷新的5张卡,只能你一个用户刷新到。比如3个人同时刷到3张吕布,9张吕布并没有溢出,但是如果刷新3个人同时刷到5张吕布,那么就与系统设置的总共只有10张吕布冲突了。那么怎么办呢》第一,拼手速法解决,但由于网络传输的速度问题,对于这个游戏来说并不是那么适合,又不是抢火车票……搞得这么紧张。》第二,就是我说的每个用户只能刷新到固定编号的吕布,比如a用户刷新到了1,2,5号吕布,b用户刷新到了3,4,6号吕布。但是这个方法却没有从根本上去除互斥这一属性。至于为什么不能去掉互斥这个属性,可以复习前面的章节,理解上就是和初中物理“质量”是物质的一种属性一样,就是不可更改的属性。  

2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。

比如妹妹让你帮他玩游戏,但她一定要拿2星貂蝉,这样可以看到炫酷的皮肤,否则她就生气,你为了让她开心,就拿了2张貂蝉,想合成2星,但是需要至少3张才能合成,这个时候你看到牌堆里已经没有貂蝉,但你就想,说不定小咲手里也拿了两张貂蝉,等着小咲给你释放资源,将貂蝉卡牌释放出来。但我怎么会让你合成2星呢,结果咱俩互相都不放手,都不用升级了。   

3、不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。

这个就是说,你不能说你知道小咲拿了两张貂蝉,你就当面来打我,来抢我的貂蝉卡牌,即便你是为了你的妹妹,可是相信我会让你“骨科”的。   

4、循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。

小咲手里有孙策,要一张貂蝉,小a手里有吕布,要一张孙策,小b手里有貂蝉,想要孙策,但互相咱们都不愿意放弃自己已经分配的资源。     

当以上四个条件均满足,必然会造成死锁,发生死锁的进程无法进行下去,它们所持有的资源也无法释放。这样会导致CPU的吞吐量下降。所以死锁情况是会浪费系统资源和影响计算机的使用性能的。那么,解决死锁问题就是相当有必要的了。

推荐好好看看,基本能看懂

参考博客:

https://blog.csdn.net/guaiguaihenguai/article/details/80303835

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值