软考中级-数据库系统工程师复习知识点解释(四)

第五个!操作系统中的死锁问题!

其实这个问题……我们先来看看死锁是个什么东西。

它是由于系统中多个进程在运行过程中,互相争夺资源,最终导致资源分配不足而造成僵局,这种叫死锁。
一个进程如果不能获得资源,他就会停下来等待分配,然后他等待的资源,被同样停下来的进程持有着……那就无法分配了(突然想到一句俗话,占着茅坑不拉屎),然后他们都在排队,都在等待,这样死锁就形成了。

ps:所以我们平时电脑死机就是死锁吗(自己手动划掉)

形成死锁要4个条件:互斥、持有并等待、不可抢占和环路等待

互斥这个很好理解了,就是进程对分配的资源都需求,且排他,在某段时间内,资源只能有一个进程占用。

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

不可抢占,指他在之前占领的资源,不能被其他的进程给抢了,只能由自己用了之后再释放。

环路等待,即形成进程和请求资源之间的环路,偷了一张图,在下面。

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

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

上面是关于死锁的一些描述,接下来我想说一下刷题的一些技巧……

例:一个系统中有m个进程,每个进程需要a个资源,有n个可用资源,问:什么情况下会发生死锁?

答:首先,我们为每个进程都先分配一个资源,达到“互斥”“持有并等待”以及“不可抢占”的情况,这就是m个资源。其次再看剩下的资源,够不够一个进程来完好无损的走下去,不会发生资源不足的状态。即n-m≥a-1,这样就避免了环路等待。

所以,当n<a+m-1时,就会发生死锁了。其中,a+m-1个资源是一个系统的临界条件,在重启的边缘疯狂试探……

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值