一学期的可也算是基本上完了,不知道大家学的怎样。 -资源共享关系 只要求读的进程称为“reader进程”,其他进程称为“writer进程”。 有五个哲学家,他们的生活方式是交替地进行思考和进餐。哲学家们共用一张圆桌,分别坐在周围的五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐毕,放下筷子继续思考。 ①至多只允许四个哲学家同时进餐,以保证至少有一个哲学家能够进餐,最终总会释放出他所使用过的两支筷子,从而可使更多的哲学家进餐。 为了解决信号量大量的同步操作分散,不利于管理;而且还会因同步操作的使用不当而导致系统死锁,所以引入一种新的同步工具——管程 一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据. 由定义可知,管程由三部分组成 在多道程序系统中,若对资源的管理、分配和使用不当,也会产生一种危险,即在一定条件下会导致系统发生一种随机性错误——死锁。 多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁 进程运行过程中,请求和释放资源的顺序不当,而导致进程死锁 互斥条件 请求和保持条件 不剥夺条件 环路等待条件 预防死锁 避免死锁 检测死锁 解除死锁 系统要求所有进程一次性地申请其所需的全部资源,若系统有足够的资源分配给一进程时,便一次把所有其所需的资源分配给该进程,摒弃“请求”条件;在分配时只要有一种资源要求不能满足,则已有的其它资源也全部不分配给该进程,摒弃“保持”条件(静态资源分配法). 一个已保持了某些资源的进程,若新的资源要求不能立即得到满足,它必须释放已保持的所有资源 将所有的资源按类型进行线性排队,并赋予不同的序号 ,所有进程对资源的请求,必须严格按资源序号递增的次序提出. 所谓安全状态,是指系统能按某种进程顺序如(P1,P2,…,Pn)(称<P1,P2,…,Pn>序列为安全序列)来为每个进程分配其所需资源,直至最大需求,使每个进程都可顺利完成 若系统不存在这样一个安全序列,则称系统处于不安全状态 如果不按照安全顺序分配资源,则系统可能由安全状态进入不安 全状态 ,可能发生死锁 是一个具有m个元素的数组,其中每一个元素代表一类 可利用的资源数目 ,如果Available[j]=k,表示系统中现有Rj类资源有k个 Need(i,j)=Max(i,j)-Allocation(i,j) 为了检测死锁,系统必须①保存有关资源的请求和分配信息,②提供一种算法,利用这些信息来检测系统是否已进入死锁状态 资源分配图是由一组结点N和 一组边E所组成的一对偶G =(N,E) -剥夺资源 未说明的部分:
应朋友之约,我来总结一下这学期学的操作系统课程,方便大家复习。
总纲:https://blog.csdn.net/qq_43762191/article/details/106411766 (带思维导图)进程间的相互作用
进程间的联系
-相互合作关系同步机制应遵循的准则
- 空闲让进 - 忙则等待 - 有限等待 - 让权等待
读者-写者问题
允许多个reader进程同时读一个共享对象,但决不允许一个writer进程和其他reader进程或writer进程同时访问共享对象
所谓读者-写者问题(The Reader-Writer Problem)是只保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题哲学家进餐问题
解决办法:
②仅当哲学家的左、右两支筷子均可用时才允许他拿起筷子进餐。
③规定奇数号哲学家先拿他左边的筷子,然后再去拿他右边的筷子;而偶数号哲学家则相反。管程
管程引入
管程的定义
管程组成
-局部于管程的共享变量说明
-对该数据结构进行操作的一组过程
-对局部于管程的数据设置初值的语句进程通信
死锁
产生死锁的原因和必要条件
产生死锁的原因
竞争资源
-竞争可剥夺和非剥夺性资源
-竞争非剥夺性资源进程推进顺序不当引起死锁
-进程推进顺序合法
-进程推进顺序非法产生死锁的四个必要条件
进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占有
当进程因请求资源而阻塞时,对已获得的资源保持不放
进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放
在发生死锁时必然存在一个进程—资源的环形链解决死锁的基本办法
通过设置某些限制条件,以破坏产生死锁的四个必要条件中的一个或几个,来防止发生死锁。
在资源的动态分配过程中,使用某种方法去防止系统进入不安全状态,从而避免了死锁的发生。
检测死锁方法允许系统运行过程中发生死锁。但通过系统所设置的检测机构,可以及时检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中消除所发生的死锁
解除死锁是与检测死锁相配套的一种设施,用于将进程从死锁状态下解脱出来预防死锁
摒弃“不剥夺”条件
摒弃“环路等待”条件
避免死锁
安全与不安全状态
不安全状态
由安全状态向不安全状态的转换
银行家算法
银行家算法中的数据结构
可利用资源向量Available
最大需求矩阵Max
是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程,对m类资源的最大需求,如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k
分配矩阵Allocation
一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一个进程的资源数,如果Allocation(i,j)=k,表示进程i当前已分得Rj类资源的数目为k
需求矩阵Need
是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数,如果Need[i,j]=k,表示进程i还需要Rj类资源k个,方能完成其任务
示例
检测死锁
资源分配图
结点分为两种结点:进程结点和资源结点;边表示进程和资源的请求分配关系死锁的解除
-撤销进程其余
进程·全家桶
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算