计算机操作系统课程设计报告(5)

2019-03-16 11:43

printf(\所申请资源已大过系统所拥有的,请重新输入!\\n\

return list; }

Partition *Reclaim( Partition *list, Partition *FP) { //结束作业,资源回收,No为作业名,回收内存

Partition * H1,*H2,*H3,*HF;//H1为释放区,H2为后分区,H3为前分区 int No; //作业名 H1=list;

HF=FP;//可有可无? H1=H1->next;

HF=FP->next;

printf(\请输入您想结束的作业名:\ scanf(\

while(HF)//对已分配表进行操作 { if(HF->Par_No==No) { HF->IsUse=0; //标志为空表目

break;//这时保存着HF所指分区的信息

}

HF=HF->next;

}

if(!HF) //如果找不到该作业,则提示出错 printf(\所输入的作业名称不正确,请重新输入!\ else{ while(H1)//对空闲表进行操作 { if(H1->Par_No==No) { H1->IsUse=0; //标志为空表目 printf(\内存回收成功\

break;

}

H1=H1->next;

}

H2=H1->next;//后分区 H3=H1->pri;//前分区

if(H2&&H2->IsUse==0) //后接分区为空闲 { if(H2->next==NULL) //判断后接分区是否为尾结点 { H1->Par_Size+=H2->Par_Size; //把H2合并到H1

H1->next=NULL;

free(H2);

21

printf(\已回收%d大小内存\

}else

//后分区不为空闲,表示已经被使用

{ H1->Par_Size+=H2->Par_Size; H1->next=H2->next; H2->next->pri=H1;

free(H2);

printf(\已回收%d大小内存\

}

}

if(H3&&H3->IsUse==0) //前分区为空闲分区,则合并去前分区 { H3->Par_Size+=H1->Par_Size; H3->next=H1->next; if(H1->next!=NULL) //若H1为尾结点

H1->next->pri=H3;

free(H1);

printf(\已回收%d大小内存\

}

}

return list;

}

void Print( Partition *list, Partition *FP) { //输出已分配分区和空闲分区 Partition *H1,*H2; H1=list->next; H2=FP;

H2=H2->next;

printf(\ printf(\总分配分区表*******************\\n\ printf(\分区序号 大小 开始地址 状态\\n\

while(H1) { printf(\

%d %d\

if(H1->IsUse==1) printf(\已分配\\n\ else printf(\空表目\\n\ H1=H1->next;

}

printf(\

}

void Main_Print( Partition *list, Partition *FP) { //主入口函数,进行菜单选择

22

int op;

while(1) { printf(\主菜单------------------------\\n\ printf(\

printf(\申请新的作业,分配内存\\n\ printf(\结束作业,回收内存\\n\ printf(\查看内存表\\n\ printf(\退出系统\\n\ printf(\请选择<1-4>:\ scanf(\ switch(op) //根据输入,选择分支方向

{

case 1: New_Process(list,FP);

break;

case 2: Reclaim(list,FP); break; case 3:

Print(list,FP);

break; case 4: break; default: printf(\选择错误,请重新选择!\

break; }

if(op==4) break;

//退出循环

}

}

void main()

{ //主函数入口

struct Partition *list,*FP; list=Int(); FP=InitFP(); Main_Print(list,FP);

}

23

程序运行结果及分析

24

实验五:模拟使用银行家算法判断系统的状态

实验目的:

了解进程管理的实现方法,理解和掌握处理进程同步问题的方法。

实验内容:

实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算

法。

实验步骤:

?

理解安全性算法和银行家算法的核心机制:

? 理解进程的三状态调度过程,及各状态间的转换关系; ? 设计读者--写者问题的写者优先算法;

实验代码:

#include #include #include # define m 50

int no1; //进程数 int no2; //资源数

int r;

int allocation[m][m],need[m][m],available[m],max[m][m];

char name1[m],name2[m]; //定义全局变量 void main() {

void check(); void print(); int i,j,p=0,q=0; char c;

int request[m],allocation1[m][m],need1[m][m],available1[m]; printf(\银行家算法--------------------\\n\ printf(\请输入进程总数:\

scanf(\

25


计算机操作系统课程设计报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于5S管理工作推进的通知

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: