没有合适的资源?快使用搜索试试~ 我知道了~
银行家算法7的具体实现银行家算法7的具体实现
资源推荐
资源详情
资源评论
#define M 50
int max[M][M], allocation[M][M],need[M][M],available[M]; /*定义全局变量*/
int i, j, n, m, r;
main()
{ void check();
void print();
int p,q;
int req[M], allocation1[M][M],need1[M][M],available1[M];
printf("Please input the processes sum:");
scanf("%d", &n); /*输入进程总数*/
printf("Please input the kinds sum :");
scanf("%d", &m); /*输入资源种类总数*/
printf("please input the max resources :");
for(i=0;i<n; i++)
for(j=0;j<m; j++)
{scanf("%2d",&max[i][j]); } /*输入最大矩阵*/
printf("please input the allocation resources :");
for(i=0;i<n; i++)
for(j=0;j<m; j++)
scanf("%d", &allocation[i][j]); /*输入已分配资源数*/
printf("please input the need resources :");
for (i=0;i<n; i++)
for(j=0;j<m; j++)
{ need[i][j]=max[i][j]-allocation[i][j];
printf("%2d",need[i][j]);
} /*输出还需要的资源数*/
printf("\nplease input the available number :");
for (i=0;i<m; i++)
scanf("%d", &available[i]); /*输入可用资源数*/
int max[M][M], allocation[M][M],need[M][M],available[M]; /*定义全局变量*/
int i, j, n, m, r;
main()
{ void check();
void print();
int p,q;
int req[M], allocation1[M][M],need1[M][M],available1[M];
printf("Please input the processes sum:");
scanf("%d", &n); /*输入进程总数*/
printf("Please input the kinds sum :");
scanf("%d", &m); /*输入资源种类总数*/
printf("please input the max resources :");
for(i=0;i<n; i++)
for(j=0;j<m; j++)
{scanf("%2d",&max[i][j]); } /*输入最大矩阵*/
printf("please input the allocation resources :");
for(i=0;i<n; i++)
for(j=0;j<m; j++)
scanf("%d", &allocation[i][j]); /*输入已分配资源数*/
printf("please input the need resources :");
for (i=0;i<n; i++)
for(j=0;j<m; j++)
{ need[i][j]=max[i][j]-allocation[i][j];
printf("%2d",need[i][j]);
} /*输出还需要的资源数*/
printf("\nplease input the available number :");
for (i=0;i<m; i++)
scanf("%d", &available[i]); /*输入可用资源数*/
check(); /*检测已知的状态是否安全*/
if (r==1) /*如果已知的状态安全则执行以下代码*/
{
do { p=0,q=0;
printf("\nplease input the NO. of process: ");
scanf("%d", &i); /*输入请求资源的进程号*/
printf("please input the resources of request:");
for(j=0;j<m; j++)
scanf("%d",&req[j]); /*输入该进程所需的资源数 */
for(j=0;j<m; j++)
if(req[j]>need[i][j])
p=1; /*判断请求是否超过最大资源数*/
if(p)
printf("The resources of request have been beyond the max number needed!");
else
{
for(j=0;j<m; j++)
if(req[j]>available[j])
q=1; /*判断请求是否超过可用资源数 */
if(q)
printf("There are not enough available resources!");
else
{
for(j=0;j<m; j++) /*请求满足条件 */
{ available1[j]=available[j]; /* 保存原已分配的资源数,需要的资源数,和可用的资源数*/
allocation1[i][j]=allocation[i][j];
need1[i][j]=need[i][j];
available[j]=available[j]-req[j]; /* 系统尝试把资源分配给请求的进程 */
if (r==1) /*如果已知的状态安全则执行以下代码*/
{
do { p=0,q=0;
printf("\nplease input the NO. of process: ");
scanf("%d", &i); /*输入请求资源的进程号*/
printf("please input the resources of request:");
for(j=0;j<m; j++)
scanf("%d",&req[j]); /*输入该进程所需的资源数 */
for(j=0;j<m; j++)
if(req[j]>need[i][j])
p=1; /*判断请求是否超过最大资源数*/
if(p)
printf("The resources of request have been beyond the max number needed!");
else
{
for(j=0;j<m; j++)
if(req[j]>available[j])
q=1; /*判断请求是否超过可用资源数 */
if(q)
printf("There are not enough available resources!");
else
{
for(j=0;j<m; j++) /*请求满足条件 */
{ available1[j]=available[j]; /* 保存原已分配的资源数,需要的资源数,和可用的资源数*/
allocation1[i][j]=allocation[i][j];
need1[i][j]=need[i][j];
available[j]=available[j]-req[j]; /* 系统尝试把资源分配给请求的进程 */
剩余5页未读,继续阅读
资源评论
dxq1234567890
- 粉丝: 0
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功