- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统中进程死锁探讨
操作系统中进程死锁探讨
摘要:在多道程序系统中,虽可借助于多个进程的并发执行,来改善系统的资源利用率,提高系统的吞吐量,但由于系统中资源分配不当或进程间推进顺序非法可能发生死锁。死锁是不能完全避免的,只能尽可能的去完善操作系统中的各项功能体系的设计,减少死锁的发生概率。通过简单实例,从死锁产生的原因和条件出发,讨论了避免和解除死锁的几种方法。
关键词:死锁;银行家算法;进程;共享资源
中图分类号:TP316文献标识码:A文章编号:1009-3044(2012)01-0201-03
The Discussion of Process Deadlock in Operating System
ZHANG Jun
(hulunbuir College, Hulunbuir 021008, China)
Abstract: Although people can improve the using rate of resources and throughput of system by means of the concurrency of multiple processes in multiprogramming system, deadly lock can still occur due to improper resource allocation and illegal execution sequence. Deadly lock is unavoidable. People can only improve the design of the all kinds of functions architecture of OS to decrease the occurrence of deadly lock.The thesis discusses some means to avoid and release deadly lock from the reasons and conditions through some simple examples.
Key words: deadly lock; banker algorithm; process; sharing resourses
1死锁的引入
在计算机的许多专业课(如操作系统、数据库系统以及网络通信)中,由于进程的并发执行和资源的共享,当系统中资源分配顺序或者进程推进顺序不当时就会造成系统死锁。处于死锁状态的系统中,进程之间互相等待资源而永远不能继续向前推进,严重地影响了系统的可靠性。
在日常生活中经常会出现一种现象,图1给出了某一个街区交通死锁的情况,从图中可以看到四个街区的路口都被连续的车辆堵塞,使得各车辆无法再前进的状态,这四个街口正是车流相互竞争的共享资源,谁占据后都不愿意主动放弃,最后造成谁也不会释放自己占有的资源,谁也得不到所需资源,大家都处在相互等待中,形成所谓的死锁。
在操作系统中也有类似的情况。在两个或多个并发进程中,如果每个进程锁定了其他进程试图锁定的资源,此时会造成这些进程都想得到资源而又都得不到资源,永久阻塞,从而出现死锁。图2是两个进程发生死锁的例子(p1和p2是进程,s1和s2是共享资源),p1占有s1,p2占有s2,p1申请s2却申请不到,因为p2没执行完不会放弃s2,只能等待,p2申请s1也申请不到,因为p1没执行完不会放弃s1,只能等待,p1和p2互相等待永远不可能发生的事件,操作系统中这样的现象就是死锁。
2可以死锁的资源
每个用户进程要想得到执行可能获取或等待获取各种资源。以下类型的资源可能会造成阻塞,并最终导致死锁。
1)锁。等待获取资源(如对象、页、行、元数据和应用程序)的锁可能导致死锁。如图2所示,进程P1在S1上有共享锁(S锁)并等待获取S2的排他锁(X锁)。进程P2在S2上有共享锁(S锁)并等待获取S1的排他锁(X锁)。这将导致一个锁循环,其中,P1和P2都等待对方释放已锁定的资源。
2)工作线程。排队等待可用工作线程的任务可能导致死锁。如果排队等待的任务拥有阻塞所有工作线程的资源,则将导致死锁。例如,进程P1获取S1的 共享锁(S锁)后,进入睡眠状态。在所有可用工作线程上运行的进程正尝试获取S1的排他锁(X锁)。因为进程P1无法获取其他工作线程,所以无法执行完并释放S1的锁,这将导致死锁。3)内存。当并发请求等待获得内存,而当前的可用内存无法满足其需要时,可能发生死锁。例如,两个并发查询(Q1和Q2)作为用户定义函数执行,分别获取10MB和20MB的内存。如果每个查询需要30MB,而可用总内存10MB
原创力文档


文档评论(0)