频道栏目
首页 > 资讯 > 其他 > 正文

线程死锁调研

17-06-20        来源:[db:作者]  
收藏   我要投稿

线程死锁调研

1.定义

死锁:是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外部处理作用,它们都将无限等待下去。

2.死锁产生的原因:

①系统资源不足;

②进程(线程)推进的顺序不恰当;

③资源分配不当;

3.线程死锁产生的必要条件:

(1)互斥条件:一个资源每次只能被一个进程使用;

(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;

(3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

4.如何避免死锁

①加锁顺序(线程按照一定的顺序加锁)

②加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)

③死锁检测

5.避免死锁的的算法:银行家算法

算法原理:

把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。

为保证资金的安全,银行家规定:

①当一个顾客对资金的最大需求量不超过银行家现有的资金时就可接纳该顾客;

②顾客可以分期贷款,但贷款的总数不能超过最大需求量;

③当银行家现有的资金不能满足顾客尚需的贷款数额时,对顾客的贷款可推迟支付,但总能使顾客在有限的时间里得到贷款;

总之:把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。“资源需求总量”表示进程在整个执行过程中总共要申请的资源量。显然,每个进程的资源需求总量不能超过系统拥有的资源总数, 银行算法进行资源分配可以避免死锁。

相关TAG标签
上一篇:Android服务Service详解(作用,生命周期,AIDL)系列文章--远程服务AIDL&IPC
下一篇:关于android的混淆
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站