• 大小: 552KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-01-10
  • 语言: 其他
  • 标签: 伙伴系统  

资源简介

假设系统的可利用空间容量为2m个字,则系统开始运行时,整个内存区是一个大小为2m的空闲分区。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了k(0≤k≤m)个空闲分区链表。 当需要为进程分配一个长度为n的存储空间时,首先计算一个i值,使2i-1<n≤2i,然后在空闲分区大小为2i的空闲分区链表中查找。若找到,即把该空闲分区分配给进程。否则,表明长度为2i的空闲分区已经耗尽,则在分区大小为2i+1的空闲分区链表中寻找。若存在2i+1的一个空闲

资源截图

代码片段和文件信息

#include 
#include 
#include 

int buddy[10]={2481632641282565121024};  //分区大小 2的k次幂
int free1[10]={0000000001};  //空闲分区的个数   初始内存大小1024
int use[100][2]={0};   //已分配分区表  最多为100个进程分配 记录已分配分区大小,内存地址
int free_addr[10][50]={0};  //空闲分区的首地址 [i][j]表示2的i次方大小的空闲分区的第j个分区的首地址
int maxsize=9;  //最大空闲分区 初始为1024
int usenum=0;   //进程数 初始为0

void menu();         // 多级菜单函数
void showMemory();   //输出内存占用情况
void showFreeMemory(); //输出空闲分区情况
void showUseMemory(); //输出已分配区情况
void allocBuddy();    //分配内存
void reclaimBuddy();   //回收内存

void menu()
{
printf(“ *******************      欢迎使用伙伴系统模拟程序      **************\n“);
    printf(“ *********************************************************************\n“);
    printf(“ **************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-06-29 10:41  新建文件夹\
     目录           0  2012-06-29 11:00  新建文件夹\伙伴系统\
     文件      404480  2012-06-29 11:00  新建文件夹\伙伴系统.doc
     文件        6924  2012-06-17 11:09  新建文件夹\伙伴系统\companionSystem.cpp
     文件        3509  2012-06-17 11:09  新建文件夹\伙伴系统\companionSystem.dsp
     文件         538  2012-06-17 11:11  新建文件夹\伙伴系统\companionSystem.dsw
     文件       41984  2012-06-17 13:25  新建文件夹\伙伴系统\companionSystem.ncb
     文件       48640  2012-06-17 13:25  新建文件夹\伙伴系统\companionSystem.opt
     文件        1328  2012-06-17 11:09  新建文件夹\伙伴系统\companionSystem.plg
     目录           0  2012-06-29 11:00  新建文件夹\伙伴系统\Debug\
     文件      204867  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\companionSystem.exe
     文件      299124  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\companionSystem.ilk
     文件       18562  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\companionSystem.obj
     文件      222152  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\companionSystem.pch
     文件      525312  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\companionSystem.pdb
     文件       41984  2012-06-17 12:12  新建文件夹\伙伴系统\Debug\vc60.idb
     文件       86016  2012-06-17 11:09  新建文件夹\伙伴系统\Debug\vc60.pdb

评论

共有 条评论

相关资源