一学期的可也算是基本上完了,不知道大家学的怎样。 应朋友之约,我来总结一下这学期学的操作系统课程,方便大家复习。
-资源共享关系
-相互合作关系
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
只要求读的进程称为“reader进程”,其他进程称为“writer进程”。
允许多个reader进程同时读一个共享对象,但决不允许一个writer进程和其他reader进程或writer进程同时访问共享对象
所谓读者-写者问题(The Reader-Writer Problem)是只保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题
有五个哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐毕,放下筷子继续思考。
①至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。
②仅当哲学家的左、右两支筷子均可用时才允许他拿起筷子进餐。
③规定奇数号哲学家先拿他左边的筷子,然后再去拿他右边的筷子;而偶数号哲学家则相反。
为了解决信号量大量的同步操作分散,不利于管理;而且还会因同步操作的使用不当而导致系统死锁,所以引入一种新的同步工具——管程
一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据.
由定义可知,管程由三部分组成
-局部于管程的共享变量说明
-对该数据结构进行操作的一组过程
-对局部于管程的数据设置初值的语句
在多道程序系统中,若对资源的管理、分配和使用不当,也会产生一种危险,即在一定条件下会导致系统发生一种随机性错误——死锁。
多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁
-竞争可剥夺和非剥夺性资源
-竞争非剥夺性资源
进程运行过程中,请求和释放资源的顺序不当,而导致进程死锁
-进程推进顺序合法
-进程推进顺序非法
系统要求所有进程一次性地申请其所需的全部资源,若系统有足够的资源分配给一进程时,便一次把所有其所需的资源分配给该进程,摒弃“请求”条件;在分配时只要有一种资源要求不能满足,则已有的其它资源也全部不分配给该进程,摒弃“保持”条件(静态资源分配法).
一个已保持了某些资源的进程,若新的资源要求不能立即得到满足,它必须释放已保持的所有资源
将所有的资源按类型进行线性排队,并赋予不同的序号 ,所有进程对资源的请求,必须严格按资源序号递增的次序提出.
所谓安全状态,是指系统能按某种进程顺序如(P1,P2,…,Pn)(称<P1,P2,…,Pn>序列为安全序列)来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺利完成
若系统不存在这样一个安全序列,则称系统处于不安全状态
如果不按照安全顺序分配资源,则系统可能由安全状态进入不安 全状态 ,可能发生死锁
是一个具有m个元素的数组,其中每一个元素代表一类 可利用的资源数目 ,如果Availablej=k,表示系统中现有Rj类资源有k个
是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程,对m类资源的最大需求,如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k
一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一个进程的资源数,如果Allocation(i,j)=k,表示进程i当前已分得Rj类资源的数目为k
是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数,如果Needi,j=k,表示进程i还需要Rj类资源k个,方能完成其任务
Need(i,j)=Max(i,j)-Allocation(i,j)
为了检测死锁,系统必须①保存有关资源的请求和分配信息,②提供一种算法,利用这些信息来检测系统是否已进入死锁状态
资源分配图是由一组结点N和 一组边E所组成的一对偶G =(N,E)
结点分为两种结点:进程结点和资源结点;边表示进程和资源的请求分配关系
-剥夺资源
-撤销进程
未说明的部分:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有