linux 存储管理 报告,Linux操作系统实验报告 存储管理试验精品.doc

Linux操作系统实验报告 存储管理试验精品

电子信息学院

实验报告书

课程名:《Linux操作系统实验》

题 目: 实验三 存储管理试验

实验类别 【验证】

班 级: BX0907

学 号: 09

姓 名: 吴沛儒

实验内容或题目

(1)模拟初始内存页面分配(数组、结构体均可)

(2)实现Buddy heap算法

(3)通过键盘输入随机产生申请和释放操作

请求:r8代表申请8个页面。

释放:f4代表释放4个页面。

(4)每个申请或释放操作,都在屏幕上显示操作前与操作后的内存分配的对比图。

(5)实验假设申请和释放的页数都是2的整次幂。

(1)建立工作集页面模型。

(2)利用随机函数动态生成进程访问页面的序列号。

(3)实现FIFO页面淘汰算法。

(4)实现页故障率反馈模型。

实验目的与要求

①(1) 用C语言是实现模拟Linux系统中连续内存分配用到的伙伴对算法。

(2) 通过链表的形式输出在内存申请和释放过程中内存状态的对比图。

②(1)了解工作集模型的原理及其特点。

(2)实现页故障率反馈模型。

实验步骤与源程序

1. Buddy heap算法模拟

源程序;

#include

#include

typedef struct block

{

int size;

int start;

int loc;

struct block *next;

struct block *prior;

}block;

int maxsize=512;

block *note;

block *id[10];

void printmem(){

int i;

for(i=9; i>=0;i--){

printf("%d ->",i);

block * temp = (struct block *)malloc(sizeof(struct block));

temp = id[i]->next;

while(temp!=NULL){

printf("%d(%s)(%d)->",temp->size,temp->loc==1?"占用":"空闲",temp->start); temp=temp->next;

}

printf("\n");

}

}

void init(){

int i;

for(i=0;i<9;i++){

id[i]=(struct block *)malloc(sizeof(struct block));

id[i]->prior=id[i];id[i]->next=NULL;

}

note=(struct block *)malloc(sizeof(struct block));

note->size=maxsize;

note->start=0;

note->loc=0;

note->next=NULL;

id[9]=(struct block *)malloc(sizeof(struct block));

id[9]->next=note;

id[9]->prior=id[9];

note->prior=id[9];

printmem();

}

int power(int x,int y){

int k=0,tmp=1;

for(;k

tmp=tmp*x;

}

return tmp;

}

int root(int x,int y){

int result=y,count=0;

while(result!=1){

result=result/x;

count++;

}

return count;

}

int split(int tempId){

block * pend=(struct block *)malloc(sizeof(struct block));

block * cend=(struct block *)malloc(sizeof(struct block));

block * newf=(struct block *)malloc(sizeof(struct block));

block * newu=(struct block *)malloc(sizeof(struct block)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值