云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 《计算机操作系统》实验指导书

《计算机操作系统》实验指导书

  • 62 次阅读
  • 3 次下载
  • 2025/6/18 9:51:13

专业资料

#include \#include \

typedef struct MEMORY_BLOCK {

int name; int address; int length; int flag;

MEMORY_BLOCK *next; }MEMORY_BLOCK;

int allocation(MEMORY_BLOCK *Header,int name,int time); int reclaim(int processname, MEMORY_BLOCK *Header); int main() {

#define NUM 10 int time,i;

MEMORY_BLOCK *Header,*t;

Header = (struct MEMORY_BLOCK *)malloc(sizeof(struct MEMORY_BLOCK)); //

Header->name=-1; Header->address=0; Header->length=100; Header->flag=0; Header->next=NULL; srand(100);

for(i=0;i

time=rand() ; // time=time ; allocation(Header,i,time); }

t=Header;

while(t!=NULL) {

printf(\ ,t->name,t->address,t->length,t->flag); t=t->next; }

int processname=3;//回收

printf(\回收 process name %d\\n\ reclaim(processname,Header); t=Header; while(t!=0) {

printf(\ ,t->name,t->address,t->length,t->flag); t=t->next;

word完美格式

初始化存储空间 专业资料

}

processname=4;

printf(\回收 process name %d\\n\ reclaim(processname,Header); t=Header; while(t!=0) {

printf(\ ,t->name,t->address,t->length,t->flag); t=t->next; }

return 1; }

int reclaim(int processname, MEMORY_BLOCK *Header) {

MEMORY_BLOCK *temp,*t,*tt; t=Header; temp=t;

while(t->name!=processname) {

temp=t; t=t->next; }

if(t==0) {printf(\ else

{ if(t->next!=NULL)

if(temp->flag==0&&t->next->flag==0)//左右为空 { temp->name=-1;

temp->length=temp->length+t->length+t->next->length; tt=t->next;

temp->next=tt->next; free (tt); free (t); }

else if(temp->flag==0) //左为空 {

temp->name=-1;

temp->length=temp->length+t->length; temp->next=t->next; free (t); }

else if(t->next->flag==0) //右为空 {

t->name=-1;

t->length=t->length+t->next->length; t->flag=0;

word完美格式

专业资料

tt=t->next;

t->next=tt->next; free (tt); }

else {

t->name=-1; t->flag=0; } else {

if(temp->flag==0) //左为空 {

temp->name=-1;

temp->length=temp->length+t->length; temp=t->next; free (t); }

else {

t->name=-1; t->flag=0; } } }

return 1; }

int allocation(MEMORY_BLOCK *Header,int name,int time) {

MEMORY_BLOCK *temp,*t,*tt; int thresh=2; t=Header; while(t!=0) {

if(t->length>time&&t->flag==0) break; t=t->next; }

if(t==0) { printf(\ else{

if(t->length-time>thresh) //分割 {

temp=new MEMORY_BLOCK; temp->name=-1; temp->flag=0;

temp->length=t->length-time; temp->address=t->address+time;

word完美格式

专业资料

t->name=name; t->flag=1; t->length=time;

temp->next=t->next; t->next=temp; }

else //直接分配 {

t->name=name;

t->flag=1; } }

return 1; }

7)编写测试程序,对存储分配表进行初始化,存储分配情况和回收一个进程的存储空间后的结果在屏幕上显示出来,显示的结果如图5.4所示。

图5.4模拟输出的示意图

七、 实验步骤

1)进入vi编辑器

2)在编译器中输入所要运行的程序代码

3)退出编辑器,返回命令行输入方式,使用gcc编译器编译程序,获得能运行的目标程序。

4)运行目标程序,查看运行结果。 八、

注意事项

1)随机数的产生由rand()函数实现,rand()的输出随机数范围在0~215之间,需要转换到0~20范围。

2)节点的删除和插入方式。

3)回收内存空间时,分四种情况讨论是否需要合并。 九、

实验报告要求

需要列出运行了的程序清单及相应结果,并对结果进行分析和讨论。对结果的分析主要讨论首次适应存储分配算法的优缺点,实验结果是如何体现的?

word完美格式

搜索更多关于: 《计算机操作系统》实验指导书 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

专业资料 #include \#include \ typedef struct MEMORY_BLOCK { int name; int address; int length; int flag; MEMORY_BLOCK *next; }MEMORY_BLOCK; int allocation(MEMORY_BLOCK *Header,int name,int time); int reclaim(int processname, MEMORY_BLOCK *Header); int main() { #define NUM 10 int time,i; MEMORY_BLOCK *Header,*t; Header = (struct ME

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com