操作系统实验四报告-主存空间分配和回收(含源码)(3)
}
return OK; }
//分配主存
Status allocation(int a) {
int request;//申请内存大小
printf(\请输入申请分配的主存大小(单位:KB):\ scanf(\ if(request<0 ||request==0) {
printf(\分配大小不合适,请重试!\ return ERROR; }
switch(a) {
case 1: //默认首次适应算法
if(First_fit(request)==OK) printf(\分配成功!****\ else printf(\内存不足,分配失败!****\ return OK; break;
case 2: //选择最佳适应算法
if(Best_fit(request)==OK) printf(\分配成功!****\ else printf(\内存不足,分配失败!****\ return OK; break; case 3: //选择最差适应算法
if(Worst_fit(request)==OK) printf(\分配成功!****\ else printf(\内存不足,分配失败!****\ return OK; break; } }
Status deal1(Node *p)//处理回收空间 {
Node *q=first;
for(;q!=NULL;q=q->next) {
if(q==p) { if(q->prior->data.state==0&&q->next->data.state!=0) {
11
q->prior->data.length+=q->data.length; q->prior->next=q->next; q->next->prior=q->prior; q=q->prior; q->data.state=0;
q->data.num=flag-1; }
if(q->prior->data.state!=0&&q->next->data.state==0) {
q->data.length+=q->next->data.length; q->next=q->next->next; q->next->next->prior=q; q->data.state=0;
q->data.num=flag; }
if(q->prior->data.state==0&&q->next->data.state==0) { q->prior->data.length+=q->data.length; q->prior->next=q->next; q->next->prior=q->prior; q=q->prior; q->data.state=0;
q->data.num=flag-1; }
if(q->prior->data.state!=0&&q->next->data.state!=0) { q->data.state=0; } } }
return OK; }
Status deal2(Node *p)//处理回收空间 {
Node *q=first;
for(;q!=NULL;q=q->next) {
if(q==p) { if(q->prior->data.state==0&&q->next->data.state!=0) { q->prior->data.length+=q->data.length; q->prior->next=q->next;
12
q->next->prior=q->prior; q=p->prior; q->data.state=0;
q->data.num=flag-1; }
if(q->prior->data.state!=0&&q->next->data.state==0) {
q->data.state=0; }
if(q->prior->data.state==0&&q->next->data.state==0) { q->prior->data.length+=q->data.length; q->prior->next=q->next; q->next->prior=q->prior; q=q->prior; q->data.state=0;
q->data.num=flag-1; }
if(q->prior->data.state!=0&&q->next->data.state!=0) { q->data.state=0; } } }
return OK; }
//主存回收
Status recovery(int flag) {
Node *p=first;
for(;p!=NULL;p=p->next) {
if(p->data.num==flag) { if(p->prior==first) { if(p->next!=end)//当前P指向的下一个不是最后一个时 { if(p->next->data.state==0) //与后面的空闲块相连 {
p->data.length+=p->next->data.length; p->next->next->prior=p; p->next=p->next->next;
13
p->data.state=0; p->data.num=flag; } else p->data.state=0; } if(p->next==end)//当前P指向的下一个是最后一个时 {
p->data.state=0; } }//结束if(p->prior==block_first)的情况 else if(p->prior!=first) { if(p->next!=end) { deal1(p); } else { deal2(p); } }//结束if(p->prior!=block_first)的情况 }//结束if(p->data.num==flag)的情况 }
printf(\回收成功****\ return OK; }
//主函数 void main() {
int i; //操作选择标记 int a;//算法选择标记
printf(\ printf(\用以下三种方法实现主存空间的分配\\n\
printf(\首次适应算法\\t(2)最佳适应算法\\t(3)最差适应算法\\n\ printf(\ printf(\
printf(\请输入所使用的内存分配算法:\ scanf(\ while(a<1||a>3) {
printf(\输入错误,请重新输入所使用的内存分配算法:\\n\ scanf(\ }
14
switch(a) { case 1:printf(\使用首次适应算法:****\\n\ case 2:printf(\使用最佳适应算法:****\\n\ case 3:printf(\使用最坏适应算法:****\\n\ }
Initblock(); //开创空间表 while(1) {
show();
printf(\分配内存\\t2: 回收内存\\t0: 退出\\n\ printf(\请输入您的操作:\ scanf(\ if(i==1)
allocation(a); // 分配内存 else if(i==2) // 内存回收 {
printf(\请输入您要释放的分区号:\ scanf(\ recovery(flag); }
else if(i==0) { printf(\退出程序\\n\ break; //退出 }
else //输入操作有误 {
printf(\输入有误,请重试!\ continue; } } }
八、执行结果和结果分析
15
…… 此处隐藏:1283字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




