操作系统要点二锁

锁:

1.死锁:两个或者两个以上的进程由于竞争资源而导致系统无法推进,这个时候我们称系统的状态为死锁。

2.产生原因:1.资源相对不足,2.进程推进的次序不合理。

死锁产生的必要条件:1.互斥2.占有并等待3.非抢占4.循环等待/环路等待。

3.系统模型:资源分配图用来查看进程是否有死锁,注意:对于多个实例的资源,资源分配图即使有环,也不一定有死锁;对于实例只有一个资源,资源分配图有环,则一定死锁。如果一个系统没有环,则一定没有死锁。

4.死锁预防:即提前做好措施,

⑴基本思路:破坏死锁的必要条件之一。注意有些条件,虽然可以破坏,但是有可能出现其他错误,例如:互斥条件和非抢占条件,eg:打印机属于低速度设备,即打印机在同一时间段只能被一个进程使用,如果破坏互斥条件,则会切换打印机资源进行打印,但是会造成打印数据的混乱,想要保持有序,则需要进行相应的设置(后面介绍输入输出调度中的spooling联机操作,来并行的调度打印机执行任务),更浪费资源,都尽量不要去破坏。占有并等待条件:可以破坏为占有不等待,这种方法称为一次性资源分配法,缺点:资源的浪费很严重。也可以破坏为等待而不占有,不太合适。破坏环路等待,采用有序资源使用法,所有的资源进行编号,使用资源的时候,只能按照资源的编号顺序进行申请,缺点:资源浪费。

5.死锁避免:执行一个死锁避免算法来确认进程不会进入死锁,称这个算法为银行家算法。声明进程需要的最大资源数,然后动态的执行死锁检测算法。

安全状态:根据已有的资源,进程申请的最大数,以及分配的资源数,如果还可以找到一个次序,保证每个进程都可以执行完,则表示安全。

银行家算法:每个进程必须提前声明自己需要的最大的资源数,当进程请求资源的时候,它必须进行wait()(信号量,wait()表示申请资源,signal()表示释放资源,wait(),signal()用于进程的同步,资源的申请只能通过wait,signal),当进程得到所有的资源时,它必须释放所有的资源singal()。

Available:系统中可用资源的数量[j]=k.表示j类资源还有k个,

Max:最大资源,n*m的矩阵,n进程数,m为资源数,max[i,j] = k ,表示i进程,对j资源的使用申请最多为k个,

Allocation:是n*m矩阵,n为进程,m为资源数,Allocation[i,j]=k,表示p进程已经获取j个资源,

Need:是一个n*m矩阵,Need[i,j]表示i进程还需要j个资源。 need[I,j] = max[I,j] – Allocation[I,j],

安全性检测:

1.work,finsh为工作向量,分别是m(资源)和n(进程)维的,刚开始:

work := Available  //已有的资源

finsh[i] = false for I = 1,2,3,…n;  //finsh表示进程的状态,初始化为false,代表进程还没有完成。

2.寻找满足下列条件的:

finsh[i] = false;     //进程的状态

need < work;    //检查已有的资源是否大于需要的资源,进行分配

没有找到,跳转到4, // 即进程已经获取所需要的资源

3.work := work+allocation  //   将执行完毕的进程的资源进行回收,allocation为某进程已经使用完毕的资源数,

finsh[i] = true;  // 将该进程标记为true,进程已经得到资源,运行结束。

跳转到2; //继续进入2,寻找符合条件的进程,对其分配资源

4.如果所有的finsh[i] = true,则系统进行安全状态,否则没有, // 总的输出结果,

资源请求算法

request[i]  =  k ,表示p进程想要申请k个资源,

1.if Request < need ,表示申请的资源和合理的,即小于你需要的,

2.if Request < Avaliable, 表示现有足够的资源可以满足申请的数量,(1,2是进行合理性判断)

3.假定给进程资源:

Avaliable := Avalibale – Request;

Allocaiton:= Allocation + Request;

need := need – Request;

然后进行安全性检测,

if safe,进程申请的资源就会被分配,

if unsafe,进程申请的资源不会给与分配。

6.死锁检测:允许系统进入死锁状态,不断调用死锁检测算法,

7.恢复

⑴.终止所有进程,

⑵.每次终止一个进程,直到环路被消除(根据占用资源数,运行时间,优先级,运行还需要多少资源,根据情景来终止相应的进程)

 

 

 

观看《操作系统原理》-中南大学,,,如有异议,敬请指出,与君共勉。

全部评论

相关推荐

xtu大迫杰:偶遇校友,祝校友offer打牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4388次浏览 77人参与
# AI面会问哪些问题? #
28345次浏览 569人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15439次浏览 223人参与
# 你的实习产出是真实的还是包装的? #
20455次浏览 343人参与
# 找AI工作可以去哪些公司? #
9446次浏览 251人参与
# 春招至今,你的战绩如何? #
66535次浏览 586人参与
# 米连集团26产品管培生项目 #
13412次浏览 285人参与
# 从事AI岗需要掌握哪些技术栈? #
9292次浏览 325人参与
# 中国电信笔试 #
32089次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34555次浏览 249人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
341004次浏览 2175人参与
# 哪些公司真双非友好? #
69720次浏览 289人参与
# 阿里笔试 #
179086次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62710次浏览 393人参与
# 小马智行求职进展汇总 #
25141次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14938次浏览 122人参与
# 金三银四,你的春招进行到哪个阶段了? #
22299次浏览 284人参与
# 担心入职之后被发现很菜怎么办 #
291391次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26288次浏览 310人参与
# 应届生第一份工资要多少合适 #
20697次浏览 86人参与
# HR最不可信的一句话是__ #
6374次浏览 114人参与
# 沪漂/北漂你觉得哪个更苦? #
10098次浏览 194人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务