内功修炼之操作系统学习(同步、通信及死锁)

发表于:2012-7-02 10:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ithzhang    来源:51Testing软件测试网采编

  产生死锁的条件:

  1:互斥条件:存在临界资源,互斥的使用之。

  2:占有和等待条件:进程在请求资源得不到满足时,不释放已占有资源。

  3:不剥夺条件,已占用的资源只能由拥有它的进程释放,不允许其他进程剥夺。

  4:循环等待条件:存在循环等待链。每个进程都在链中等待下一个进程所持有的资源,造成永远等待。

  前三个条件是死锁存在的必要条件,不是充分条件。第四个条件是前三个的结果。只要破坏四个条件中的一个,就可以防止死锁。

  死锁防止策略:

  1:破坏互斥条件。

  使资源可同时访问而非互斥使用,也就没有进程会阻塞在资源上,而不会发生死锁。

  2:破坏占有和等待条件

  静态分配可以解决占有和等待条件。静态分配是指进程必须在执行之前就申请所需要的全部资源,直至所有的资源都得到后才开始执行。但这种策略会严重降低资源利用率。

  3:破坏不剥夺条件

  剥夺调度能够防止死锁,但只是用于主存和处理器资源。方法是占有资源的进程若要申请新的资源,必须主动释放已占用资源。

  4:破坏循环等待条件。

  采用层次分配策略,将系统中所有资源排列到不同的层次中,一个进程得到某层的一个资源后,只能再申请较高一层的资源。当进程释放某一层的资源时必须先释放所占用的较高层资源。

  各种死锁防止算法能够防止发生死锁,但会降低系统的并发性并导致低效的资源利用率。死锁避免却与此相反:如果一个进程当前请求的资源会导致死锁,系统将拒绝启动此进程。如果一个资源分配会导致下一步死锁,系统便拒绝本次分配。

  银行家算法是能够避免死锁调度的一种算法。但是它需要在运行前知道所需的资源的最大量,因而缺乏实用价值。

相关链接:

内功修炼之操作系统学习(处理器管理)

55/5<12345
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号