Linux环境下银行家算法,银行家算法

本文介绍了在Linux环境下实现银行家算法的过程,包括初始化、安全性检测和银行家算法主体等关键步骤。通过多线程模拟,作者在编程中遇到了如数组定义、二维数组参数传递等问题,并分享了解决方案。此外,还提到了资源请求赋值和进程进入互斥区顺序等算法优化挑战。
摘要由CSDN通过智能技术生成

周二晚才知道第四章小作业还有一道难度及工作量不亚于一个大作业的编程题..晚上找了一些资料,周三肝了一天算是赶完了这突如其来的ddl...

银行家算法是一种经典的死锁问题,下面是ppt里对银行家算法的描述。

4c1a8121a711

4c1a8121a711

4c1a8121a711

4c1a8121a711

4c1a8121a711

查阅网上资料时,发现对于算法的代码有不少,但基于多线程的linux编程实现却很少,偶然发现了班上一大佬的文章,参考了他的思路(linux多线程模拟银行家算法

),结合了其他的一些资料,算是在ddl之前水完了这个作业...

这里记录一下一些细节和遇到的一些问题,以便日后回顾...(再次对上边的大佬进行无声的感谢..)

先贴代码为敬。

#include

#include

#include

#include

#include

#define true 1

#define false 0

#define MAXTN 10

#define MAXSRC 50

typedef int bool;

int thnum; //线程数目

int res; //资源种类数

int leftnum; //结束的线程数

int Available[MAXSRC]; //Available[j]:系统中j类资源空闲个数

int Max[MAXTN][MAXSRC]; //Max[i][j]:线程i对j类资源的最大需求量

int Allocation[MAXTN][MAXSRC]; //Allocation[i][j]:线程i已分配j类资源的数量

int Need[MAXTN][MAXSRC]; //Need[i][j]:线程i还需要j类资源的数量 Need=Max-Allocation

int Work[MAXTN]; //工作向量

bool visited[MAXTN]; //线程是否被访问过

bool Finish[MAXTN]; //线程是否已结束

int Safeseries[MAXTN]; //安全序列

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;//初始化互斥锁

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;//初始化条件变量

void init

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无,可以下载,项目五、linux系统进程间通信方式分析 设计要求: ① 分析linux系统下几种主要的进程通信手段。 ② 共享存储器的方式 ③ 共享文件的通信方式 ④ 消息传递的通信方式 ⑤ ②针对每个通信手段关键技术环节给出详细实例。 ③分析某些通信手段的内部实现机制 项目六、linux网络服务器的配置与管理 设计要求: ①架设samba服务器或ftp服务器。 ②掌握NFS服务器和客户端的安装与配置。 项目七、linux shell程序设计 设计要求: 1.熟练掌握shell的使用,会编写简单的shell程序。 2.Linux环境下利用 shell设计和实现机房的辅助管理系统 3.利用Linux shell进行程序脚本设计,实现两大功能:编辑生成上机课表并自动生成上机用户,进行用户课前和课后管理。 4.主要技术关键的分析 (1) 定义起始登陆界面 ①能显示三种信息:能根据登录用户显示欢迎对象、根据系统时间显示欢迎内容个性化的欢迎信息;有系统初始化、系统管理和退出三个菜单项操作提示菜单; ②能显示当前上课的具体时间(教学第几周、星期几第几节)和系统状态提示信息。 (2)系统初始化 ①生成本机房的上机安排表:上机安排表至少包含十条记录,每条记录应有课程 、班级、起至周、上课节等内容,能对安排表进行显示、添加、删除、修改,复制。 ②生成本机房的上机用户:根据上机安排表自动生成对应的上机用户,一个用户对应于安排表的一条记录,且账号= 班级+课程;密码=班级+课程号 (3)课前准备 ①为用户创建一个工作环境:工作空间和用户资料。 ②校正系统时间;在用户目录下创建工作目录,挂载U盘;查找所需文件;拷贝所需文件;若有压缩包则需打开压缩包;设置文件和目录属性,开放使用权限。 (4)课后整理: ①释放用户空间,进行资料收集。 ②更改文件和目录属性,关闭使用权限,对发生改变和新生成文档要进行打包压缩;移动包到U盘,卸载U盘,删除在用户目录下创建工作目录。 项目六、linux模块加载或内核编译 设计要求:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值