python银行家算法_【操作系统实验】编制银行家算法通用程序(python)

该Python程序实现了银行家算法,用于检测系统在给定资源请求后的安全性。通过用户界面,允许输入进程和资源请求,判断系统是否处于安全状态。程序包括安全性检查算法、资源分配和银行家算法流程。
摘要由CSDN通过智能技术生成

实验一、编制银行家算法通用程序,并检测所给状态的系统安全性。假定系统的任何一种资源在任一时刻只能被一个进程使用。任何进程已经占用的资源只能由进程自己释放,而不能由其它进程抢占。进程申请的资源不能满足时,必须等待。

设计的要求:

(1)   程序中使用的数据结构及主要符号说明;

(2)   资源的种类和数目可以变化的

(3)   进程可以任意的顺序创建和变化

#!/usr/bin/env python

# -*- coding: utf-8 -*

'''

该模块实现了银行家算法,可以有效地避免死锁。

算法思想:

每一个进程在进入系统时,它必须申明在运行过程中,可能需要每种资源类型地最大单元数目

1) 其数目不应超过系统所拥有地资源总量

2)当请求资源时,系统必须首先确定是否有足够的资源分配给进程

3)计算将这些资源分配给进程后,是否会使系统处于不安全状态

模块功能:

在用户可视化界面上,用户可以根据自己的需求,输入请求资源的进程名称和进程请求的资源数,

点击CHECK按钮,系统会提示用户请求资源的结果。其中,资源的种类和数目是可以变化的,进程

可以任意的创建和变化,资源可以任意的顺序创建和变化。

'''

import numpy as np

import sys

from PyQt5.QtWidgets import QDesktopWidget, QHBoxLayout, QVBoxLayout

from PyQt5.QtGui import QBrush,QPixmap,QPalette,QIcon

from PyQt5.QtWidgets import (QLabel, QGridLayout)

from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit, QApplication)

def safeAlgorithm():

#安全性检查算法

global safeList, system_security

safeList= []

work = Available

Finish=[False]*length_progress

#在进程集合中找到一个 Finish[i] = false 且 need[i,j] < Work[j] 的进程

while False in Finish:

for i in range(0,length_progress):

for j in range(0,length_Avalable):

if (Finish[i] == False) and (Need[i]<=work).all():

for

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
银行家算法是避免死锁的一种重要方法,本程序用java编程语言对其进行了实现。 当用户申请一组资源时,系统必须做出判断,如果把这些资源分出去,系统是否还处于安全状态。 若是,就可以分出这些资源;否则,该申请暂不予满足。 1.数据结构 假设有M个进程N类资源,则有如下数据结构: MAX[M*N] M个进程对N类资源的最大需求量 AVAILABLE[N] 系统可用资源数 ALLOCATION[M*N] M个进程已经得到N类资源资源量 NEED[M*N] M个进程还需要N类资源资源量 2.银行家算法进程I提出请求Request[N],则银行家算法按如下规则进行判断。 (1)如果Request[N]<=NEED[I,N],则转(2);否则,出错。 (2)如果Request[N]<=AVAILABLE,则转(3);否则,出错。 (3)系统试探分配资源,修改相关数据: AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。 3.安全性检查 (1)设置两个工作向量WORK=AVAILABLE;FINISH[M]=FALSE (2)从进程集合找到一个满足下述条件的进程, FINISH[i]=FALSE NEED<=WORK 如找到,执行(3);否则,执行(4) (3)设进程获得资源,可顺利执行,直至完成,从而释放资源。 WORK=WORK+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的进程Finish[M]=true,则表示安全;否则系统不安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值