资源简介
Buddy 伙伴 算法 ,Windows编程环境。
代码片段和文件信息
#include//包含头文件
int free[10]= {0000000001}
use[100][2]= {0}buddy[10]= {2481632641282565121024}
free_add[10][50]= {0}usenum=0; //定义外部变量
void PrintTable( ) //输出功能表函数
{
printf(“功能说明表:\n“);
printf(“1.申请内存\n“);
printf(“2.释放内存\n“);
printf(“3.退出\n“);
}
void show() //输出内存占用情况
{
int ij;
printf(“\n内存空闲区剩余情况:\n“);
for(i=0; i<10; i++) //输出空闲情况
{
printf(“%4d:有%d个空闲块 起始地址分别为: “buddy[i]free[i]);
for(j=0; j printf(“%4d~%4d “free_add[i][j]free_add[i][j]+buddy[i]-1);//??
printf(“\n“);
}
printf(“\n内存已分配区情况:\n“); //输出占用情况
for(i=0; i printf(“%2d: 大小:%4d 内存地址:%4d~%4d\n“i+1buddy[use[i][0]]use[i][1]use[i][1]+buddy[use[i][0]]-1);
}
void main()
{
int ijkordersizestartmaxsize=9usepageshengfree_startflag;
PrintTable();
// free_add[2][0]=0;
free_add[9][0]=0;//初始化已分配内存
b:
show();
printf(“\n输入你要执行的命令:“);
scanf(“%d%*c“ &order);
while( order != 3 ) //接受命令
{
if ( order < 1 || order > 3 ) //非法命令检测
{
printf(“输入的非法命令,请重新输入:“);
scanf(“%d%*c“ &order);
continue;
}
if ( order == 1 )
{
a:
printf(“输入作业申请空间的大小(1~1024):“); //输入要申请内存的大小
scanf(“%d%*c“ &size);
if(size<1||size>1024)
{
printf(“请输入1~1024之间的数字\n“); //检查输入正确性
goto a;
}
else if(size>buddy[maxsize])
{
printf(“没有足够的内存,请先释放\n“); //检查内存空间
goto a;
}
else
{
for(i=0; i<10; i++)
{
if(free[i]!=0&&size<=buddy[i]) break; //寻找合适内存
}
usepage=i;
free[i]--;
for(i=0; i<10; i++)
{
if(buddy[i]>=size) break; //寻找分裂大小
}
use[usenum][0]=i;
use[usenum][1]=free_add[usepage][free[usepage]]; //添加已分配表
sheng=buddy[usepage]-buddy[use[usenum][0]];
start=free_add[usepage][free[usepage]]+buddy[usepage]-buddy[usepage-1]; //首地址确定
usenum++;
for(i=usepage-1; i>=0; i--) //添加其他页面内存大小
{
if(sheng>=buddy[i])
{
free[i]++;
free_add[i][free[i]-1]=start;
sheng-=buddy[i];
start-=buddy[i-1]; //首地址确定
}
if(sheng==0) break;
}
if(free[maxsize]==0) //确定最大剩余空间
{
maxsize=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6108 2011-08-31 09:49 myBuddy.c
相关资源
- DAA算法 VC++实现 画线
- 免疫算法 解决TSP问题
- 二维粒子群算法的matlab源程序
- 进程调度 时间片轮转调度算法源代码
- 模糊c均值聚类+FCM算法的c++代码
- 多元线性回归c++算法
- FFT算法的c语言实现
- 24点算法 C++实现
- 直线反走样算法
- 优先级和时间片轮转调度实验算法c语
- 用C语言实现的的全部的古典密码学算
- MPI_并行程序设计中文教程C++/c/Fortan
- C++完整实现DES算法
- BP 算法用于实现分类
- RSA算法C语言程序
- 汉诺塔非递归算法 用栈 C语言
- QM算法C++实现
- AES加密算法C++语言实现
- 实验3 C语言实现RC4加密算法报告
- C语言实现DES算法对任意文件加解密报
- 基于优先级调度进程算法的实现C语言
- 排序算法综合:有直接插入排序,希
- 加油问题贪心算法求解
- 高斯混合模型直观实现
- MFC图像处理荧光检测算法代码
- 图像处理连通域算法 c++ vc 6.0
- DDA画线算法
- sha256-512加密算法
- 操作系统实验 循环首次适应算法C
- 遗传算法C++实现若干
评论
共有 条评论