看到一篇有关银行家算法的解释,觉得还不错。原文链接:
http://www.cppblog.com/jacky2019/archive/2007/03/21/20313.html
银行家算法是著名的操作系统用来解决死锁问题的算法。
它是如何实现解决死锁问题的呢?
今天稍微学习了一下,就稍微说一下其原理吧,免得忘了。其实原理很简单!
Banker algorithm 最重要的一点是:保证操作系统的安全状态!这也是操作系统判断是否分配给一个进程资源的标准!那什么是安全状态?举个小例子,进程 P 需要申请 8 个资源(假设都是一样的),已经申请了 5 个资源,还差 3 个资源。若这个时候操作系统还剩下 2 个资源。很显然,这个时候操作系统无论如何都不能再分配资源给进程 P 了,因为即使全部给了他也不够,还很可能会造成死锁。若这个时候操作系统还有 3 个资源,无论 P 这一次申请几个资源,操作系统都可以满足他,因为操作系统可以保证 P 不死锁,只要他不把剩余的资源分配给别人,进程 P 就一定能顺利完成任务。
为什么银行家算法是可行的呢?这里需要严格的证明一下。我这里就简单得说一下吧。不管任何时候,操作系统分配资源的时候都可以保证当前接受资源的进程不会陷入死锁,因为操作系统总是可以满足该进程需要的资源的。
假设有 n 个进程 {p1, p2, p3, … pn} ,最后一个分配到资源的是 pi , pi 还需要 mi 个资源,假设此时操作系统还有 m 个资源剩余。那么很显然 m>=mi !而且如果之后操作系统又把资源分配给其他进程了,假设是 pj , pj 还需要 mj 个资源,同理可知 m>=mj !也就是说在所有的进程中,还需要的资源数总是有小于 m 的!这样就可以保证资源数永远不会为 0 ,即使可能暂时性为 0 。另外,还需要保证资源数不会减少!而且,所有已经分配到资源的进程总有一天会归还它所拥有的资源!根据操作系统再分配的时候的状态即可判定。
胡说八道了一通。。。不知有没有把问题讲明白了,还是越讲越糊涂?
分享到:
相关推荐
操作系统银行家算法学习 在操作系统中,银行家算法是一种资源分配算法,用于避免系统中的死锁和饥饿现象。该算法通过检查系统中的资源情况和进程的需求来确定是否可以满足进程的请求。 在银行家算法中,系统的资源...
银行家算法PPT学习教案 ...银行家算法PPT学习教案涵盖了银行家算法的定义、实验目的、实验要求、数据结构、原理、安全性算法、实例、流程图和源代码等多个方面,为学生提供了一个系统的银行家算法学习平台。
银行家算法是操作系统中一种经典的资源分配策略,主要用于预防死锁的发生。该算法由艾兹格·迪杰斯特拉在1965年提出,它模拟了银行的贷款系统来管理系统的资源,确保系统在面临资源请求时不会陷入无法解决的僵局。...
### 银行家算法详解 #### 一、引言 银行家算法是操作系统中用于避免死锁的一种重要策略,其基本思想源自于银行信贷体系的管理方式。在本篇报告中,我们将深入探讨银行家算法的核心原理及其具体实现过程,并通过一...
简单模拟银行家算法,实现了银行家算法的模拟,具有小规模学习的作用
银行家算法是操作系统中一种经典的资源分配策略,用于预防死锁的发生。...若对银行家算法有更深入的兴趣或疑问,可以发送邮件至gzdxzhouyuqing@tom.com与作者进行交流学习,共同探讨和提升对操作系统中资源管理的理解。
操作系统中的银行家算法是一种著名的资源分配策略,用于避免系统的死锁情况。在计算机科学中,尤其是在操作系统设计中,死锁是指多个进程互相等待对方释放资源而无法继续执行的状态。银行家算法通过预分配和检查安全...
《银行家算法Java实现带UI界面详解》 银行家算法,由荷兰计算机科学家艾兹格·迪科斯彻提出,是一种预防死锁的策略,它主要用于操作系统中资源的分配,以确保系统的安全性。该算法的核心在于预先分配一部分资源,...
《银行家算法在操作系统中的应用——Java实现及图形界面》 银行家算法是操作系统...在这个作业中,我们不仅学习了银行家算法的理论,还通过实践掌握了Java编程和GUI设计,这对提升我们的系统设计和分析能力大有裨益。
通过这份实验报告和PPT,学习者不仅可以了解银行家算法的理论知识,还能通过实际操作加深理解,掌握如何在具体场景中应用该算法,预防死锁的发生。这对于理解和设计复杂系统的资源管理具有重要意义。
《银行家算法通用程序学习详解》 银行家算法(Banker's Algorithm)是计算机科学中一种著名的资源分配和调度算法,由艾兹格·迪杰斯特拉在1965年提出,主要用于防止死锁的发生。它主要用于操作系统设计,确保系统在...
银行家算法是操作系统中一种著名的资源分配策略,用于预防死锁的发生。它的设计目标是确保系统在面临资源请求时...这个项目的代码可以帮助学习者深入理解银行家算法的细节,并提供了一个实践平台,以便于调试和改进。
《操作系统》银行家算法 摘 要 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不...
银行家算法是操作系统中一种经典的资源分配策略,用于预防死锁的发生。它的核心思想是确保系统在进行资源分配时能够避免出现无法满足所有进程需求的情况,即系统始终处于安全状态。在C#环境下实现银行家算法,我们...
### 操作系统C++银行家算法详解 #### 一、引言 银行家算法是操作系统领域内用于解决死锁问题的一种重要方法。...对于学习操作系统理论和技术的同学来说,掌握银行家算法的原理和实现具有重要的意义。
理解银行家算法对于深入学习操作系统原理非常重要,它能帮助我们设计出更健壮的并发系统,避免因资源竞争导致的死锁问题。在实际应用中,尤其是在服务器和分布式系统中,这种避免死锁的策略尤其关键。通过深入研究这...
总之,"银行家算法MFC"项目结合了操作系统理论与实践,通过MFC的图形界面展示银行家算法的运作,为学习者提供了一个直观的教育资源,加深了对死锁预防策略的理解。对于操作系统、并发编程和软件工程领域的学生和专业...
银行家算法是操作系统领域中一种著名的资源分配策略,主要用于避免系统的死锁问题。该算法由艾兹格·迪杰斯特拉在1965年提出,它的核心思想是预防性策略,通过预先分析系统资源的分配,确保系统不会进入不安全状态,...
### 银行家算法模拟C/C++ #### 实验背景 银行家算法是操作系统中用于避免死锁的重要机制之一。本实验旨在通过编程的方式,帮助学生深入理解银行家算法的具体实现过程及其背后的逻辑原理。 #### 实验目的 1. **...
通过这个银行家算法的图形化模拟程序,学习者不仅可以理解银行家算法的基本原理,还能通过实践加深对操作系统资源管理的理解,同时体验到Java编程的魅力。对于教师和学生来说,这是一个非常实用的教学和学习工具。