• 大小: 655KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-01
  • 语言: C/C++
  • 标签:

资源简介

用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


评论

共有 条评论