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

2018-12-19 22:25

if(H2&&H2->IsUse==0) //后接分区为空闲

{ if(H2->next==NULL) //判断后接分区是否为尾结点

{ H1->Par_Size+=H2->Par_Size; //把H2合并到H1

H1->next=NULL;

free(H2); 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

26

printf(\空表目\\n\

H1=H1->next; }

printf(\

}

void Main_Print( Partition *list, Partition *FP) { //主入口函数,进行菜单选择 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();

27

Main_Print(list,FP);

}

程序运行结果及分析

28

实验感想:

通过本实验,加深了对动态分区分配、回收程序的功能和具体实现,特别是对回收分区的合

并的理解。

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

实验目的:

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

实验内容:

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

法。

实验步骤:

?

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

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

实验代码:

#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() {

29

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(\ printf(\请输入资源种类数:\ scanf(\

printf(\请输入最大需求矩阵:\\n\

for(i=0;i

for(i=0;i

print(); //输出已知条件

check(); //检测T0时刻已知条件的安全状态 if(r==1) //如果安全则执行以下代码 {

do{ q=0;

for(i=0;i

for(i=0;i

p=0; printf(\请输入请求资源的进程号(0~4):\\n\ for(j=0;j<=10;j++)

{

scanf(\

if(i>=no1) { printf(\输入错误,请重新输入:\\n\

30


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

下一篇:1000字《铁道游击队》读书笔记范文

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

马上注册会员

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