资源描述:
《操作系统报告报告浅谈死锁》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统论文——浅谈操作系统中的死锁问题班级:软件08-04班学号:0820010420浅谈操作系统中的死锁问题软件08-4唐铉摘要:在多道程序系统中,多个程序并发执行吋可能造成死锁。所谓死锁是指多个进程在运行过程屮因争夺资源而造成的一种僵局。当进程处于这种僵局状态时若无外力作用,它们都将无法再向前推进,造成资源的浪费。该程序将模拟多进程并发时死锁现象的产生、避免、检测与解除。死锁避免用最著名的银行家算法,用银行家安全性算法类似的死锁检测算法来检测进程状况,又用资源剥夺法来实现死锁的解除。该程序实现操作简易,表示清晰并口形象描述
2、多进程并发环境中死锁的预防、避免、检测与解除。关键字:死锁;避免死锁;安全状态;银行家算法引言:在操作系统、数据库系统以及网络通信中,由于进程并发和资源共享,当系统屮资源分配顺序或者进程推进顺序不当就会造成系统死锁⑴。处于死锁状态的系统中,进程之间互相等待资源而永远不能继续向前推进,严重地影响了系统的可靠性。因而有时需要合理的对资源进行分配必要的时候加以限制保证系统安全、高效、稳定的运行。1理论分析1.1死锁的概念如果一个进程集合中的每个进程都在等待只能由此集合中的其他进程才能引发的事件,而无限期陷入僵持的局面称为死锁⑵。1.2
3、产生死锁的条件:1、互斥使用(资源独占):一个资源每次只能给一个进程使用。2、不可强占(不可剥夺):资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放。3、请求和保持(部分分配,占有申请):一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配)。4、循环等待:存在一个进程等待队列{Pl,P2,・.・,Pn},其中Pl等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路⑶。1.3死锁的预防在系统设计时确定资源分配算法,保证不发牛死锁。具体的做法
4、是破坏产生死锁的四个必要条件之一。①破坏“不可剥夺”条件在允许进程动态中请资源前提下规定,一个进程在中请新的资源不能立即得到满足而变为等待状态之前,必须释放己占有的全部资源,若需要再重新申请。②破坏“请求和保持”条件要求每个进程在运行前必须一次性申请它所要求的所有资源,且仅当该进程所要资源均可满足时才给予一次性分配。③破坏“循环等待”条件采用资源有序分配法:把系统中所有资源编号,进程在申请资源时必须严格按资源编号的递增次序进行,否则操作系统不予分配。〔4安全状态与不安全状态所谓安2状态,是指存程能按某种进程次序(pl,p2,…,
5、pn),来为每个进程pi分配其所需资源,直至满足进程pi对资源的最大需求量,使每个进程pi可顺利地完成,则此吋系统处于安全状态,称序列(pl,p2,…,pn)为安全序列.如果系统无法找到这样一个安全序列,则称系统处于不安全状态⑷。2核心算法2.1银行家算法死锁的避免主要采用银行家算法,流程图如下:银行家算法的基本思想是分配资源Z前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。设进程cusneed提出请求REQUEST[i],则银彳亍家算法按如下规则进行判断。(1)如果REQUEST[cusneed][i
6、]<=NEED[cusneed][i],则转(2);否则,出错。(2)如果REQUEST[cusneed][i]<=AVAILABLE[cusneed][i],则转(3);否则,出错。(3)系统试探分配资源,修改相关数据:AVAILABLE[i]-=REQUEST[cusneed][i];ALLOCATIONEcusnccd][i]+=REQUEST[cusnccd][i];NEED[cusneed][i]-=REQUEST[cusneed][i];(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状
7、,进程等待。安全性算法流程图:死锁检测:允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发牛一旦死锁发牛则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行死锁检测算法与银行家安全性算法类似。死锁检测时机有:当进程等待时检测死锁、定时检测、系统资源利用率下降时检测死锁。该程序才用定时检测。死锁解除有:重新启动、撤消进程、剥夺资源、进程回退。该程序中可使用重新启动或者剥夺资源两中方法。死锁检测与解除往往配套使用,当死锁被检测到Z后,采用各种方法解除系统的死锁。3调试分析2.1无措施运行:进程0请求1个P2失败进程2请求
8、6个P1失败进程1请求2个P3成功并且分配进程0请求1个P3成功并且分配进程0请求2个P2失败进程0请求1个P1成功并且分配进程4请求1个P3成功并且分配进程4请求2个P2成功并且分配进程4请求1个P1成功并且分配进程2请求1个P3成功并且分配进程2请求7个P1