欢迎光临散文网 会员登陆 & 注册

死锁?

2021-11-16 21:26 作者:艾枫start  | 我要投稿

1 区分死锁 饥饿 和死循环

共同点:进程得不到资源而无法顺利向前推进

不同点

死锁:至少有两个以上的进程,都处于阻塞态

饥饿:可能就一个进程,就绪态或者阻塞态

死循环:问题来源于是被管理者问题而非操作系统(比如人为设置死循环,或者程序逻辑bug)

2 产生死锁的三个必要条件

1 不剥夺条件2 循环等待条件 3请求和保持条件 4 互斥条件

死锁一定循环等待,循环等待不一定死锁accountability:资源在数量只有1时,充分必要。

银行家算法(dijkstra):

不安全序列:我有100万,我借给了三个流氓一共80 万 他们还会再再借一次钱,如果我剩余的钱满足不了任何一个人的要求,那我的钱就不安全了!

解法

1:把已分配的列相加,然后用总资源数-已分配的=剩余资源(3,3,2)

2:再把最大需求的数-已分配的=最多还需要的

3:比较,找出安全序列;

c++算法实现


3死锁的检测和解除

解除:1 资源剥夺法 2 撤销进程法 3 进程回退法

检测:资源分配图:一个可动的进程让它先动,然后回收资源

检测算法:


死锁?的评论 (共 条)

分享到微博请遵守国家法律