资源简介
用c语言实现了操作系统的银行家算法,功能比较全面,注释很丰富。有多种判错机制,几乎没有崩溃的情况。内附课设报告流程图
编辑软件为codeblocks.
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define n 3 //进程的个数
#define m 5 //资源的种类数
#define source 20 //定义系统给定的每种资源的总量
#define FALSE 0 //布尔变量
#define TRUE 1
int semid[m]; //定义m个信号量标志符
/************全局数据结构的定义**********/
int Resource[m]; //系统中每种资源的总量
int *Available[m]; //没有分配的每种资源的总量
int Work[m]; //长度为m的工作向量
int Finish[n]; //长度为n的工作向量
int a[n]; //安全序列
int flag = 0; //定义全局变量,用于确定系统是否是安全的
int availableid[m]; //定义共享内存的虚拟地址(针对系统可利用的资源)
/**************************************/
/***********进程控制块的定义************/
typedef struct
{
char name[10]; //进程名(最长为10个字母)
int id; //进程ID号
char statue; //进程状态(r:为处于临界区)(f:为处于退出区)
int Need[m]; //每个进程对每种资源的最大需求
int Allocation[m]; //当前分配情况
int Request[m]; //定义了进程对资源的请求情况
} Pcb;
Pcbp[n]; //声明一个存储进程的结构体数组
/**************************************/
/*****************函数声明*************/
int Init_Resource(); //初始化系统提供的各种资源的总量
int Create_Process(); //创建进程并实现信号量机制的资源分配
int Create_Semaphore(); //创建信号量
int Semaphore_P(intsem_id); //信号量的P操作
int Semaphore_V(intsem_id); //信号量的V操作
void SafeCheck(); //安全性检测算法
int Share_Memory(); //共享内存的函数
int Rand_Distribution(); //随机分配资源
/************************************/
/***初始化系统提供的各种资源的总量****/
int Init_Resource()
{
int i k j;
for(i = 0; i < m; i++)
{
Resource[i] = source; //每种资源给定的系统值的大小
}
//以下是输出系统给定的资源总量到屏幕上(结构化输出)
printf(“系统给每个资源的总量为:\ n“);
for(k = 0; k < m; k++)
{
printf(“资源%d\t“ k);
}
printf(“\ n“);
for(j = 0; j < m; j++)
{
printf(“%d\t“ Resource[j]);
}
printf(“\ n“);
return 0;
}
/***********************************/
/***定义一个内存共享(可利用资源)***/
int Share_Memory()
{
int j;
for(j = 0; j < m; j++) //创建共享内存
{
availableid[j] = shmget(IPC_PRIVATE sizeof(int) * (2 * m)IPC_CREAT | 0666);
}
for(j = 0; j < m; j++) //初始化共享内存
{
Available[j] = (int*) shmat(availableid[j] 0 0);
*Available[j] = Resource[j]; //初始时没有分配的每种资源的总量
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1094 2018-07-04 09:21 123\123.cbp
文件 350 2018-07-08 12:52 123\123.depend
文件 321 2018-07-08 13:20 123\123.layout
文件 976813 2018-07-04 22:37 123\bin\Debug\123.exe
文件 12763 2018-07-02 09:44 123\main.c
文件 7341 2018-07-04 09:24 123\main.cpp
文件 27788 2018-07-04 22:37 123\obj\Debug\main.o
文件 478044 2018-07-08 13:14 123\操作系统课设流程图.docx
目录 0 2018-07-08 11:29 123\bin\Debug
目录 0 2018-07-08 11:29 123\obj\Debug
目录 0 2018-07-08 11:29 123\bin
目录 0 2018-07-08 11:29 123\obj
目录 0 2018-07-08 13:20 123
----------- --------- ---------- ----- ----
1504514 13
相关资源
- C++操作系统课设-进程管理
- 银行家算法c语言实现+实验报告
- 银行家算法 mfc 含源代码 界面 操作系
- 银行家算法 死锁避免 可视化 MFC
- 基于C++的银行家算法模拟实现
- 操作系统——银行家算法
- 操作系统课设源代码 模拟进程的并
- 银行家算法C++实现穷举所有安全序列
- 死锁的避免与检测(操作系统课设)
- C++死锁检测解除算法
- 操作系统C语言实现银行家算法,键盘
- 操作系统课程设计银行家算法C语言
- 银行家算法C实现
- 操作系统设备管理模拟 银行家算法
- 银行家算法c++源代码
- 银行家算法编程--没有错误的
- 银行家算法 c++实现代码+报告
- c/c++实现银行家算法模拟
- 银行家算法实现
- 广工操作系统课设:多道批处理系统
- 操作系统课设__多道批处理系统两级调
- 计算机操作系统实验报告,C语言实现
- 银行家算法模拟实现C++版
- 银行家算法c语言
- 银行家算法 MFC实现
- 银行家算法-----一个n个并发进程共享
- 银行家算法源程序包含C语言+C++两种代
- 操作系统银行家算法源码
- 银行家算法C语言实现源文件
- 银行家算法c++工程项目文件
评论
共有 条评论