电子信息学院 实验报告书 课程名:《Linux 操作系统实验》 题 目: 实验三 存储管理试验 实验类别 【验证】 班 级: BX0907 学 号: 09 姓 名: 吴沛儒 评语: 实验态度:认真( ) 一般( ) 差( ) 实验结果:正确( ) 部分正确( )错( ) 实验理论:掌握( ) 熟悉( ) 了解( ) 不懂( ) 操作技能:强( ) 一般( ) 差( ) 实验报告:好( ) 一般( ) 差( ) 成绩: 指导教师: 胡静 批阅时间: 年 月 日 《 Linux 操作系统》实验报告 - 1 - 1、 实验内容或题目 (1)模拟初始内存页面分配(数组、结构体均可) (2)实现Buddy heap 算法 (3)通过键盘输入随机产生申请和释放操作 • 请求:r8 代表申请8 个页面。 • 释放:f4 代表释放4 个页面。 (4)每个申请或释放操作,都在屏幕上显示操作前与操作后的内存分配的对比图。 (5)实验假设申请和释放的页数都是2 的整次幂。 (1)建立工作集页面模型。 (2)利用随机函数动态生成进程访问页面的序列号。 (3)实现FIFO 页面淘汰算法。 (4)实现页故障率反馈模型。 2、 实验目的与要求 ①(1) 用C 语言是实现模拟Linux 系统中连续内存分配用到的伙伴对算法。 (2) 通过链表的形式输出在内存申请和释放过程中内存状态的对比图。 ②(1)了解工作集模型的原理及其特点。 (2)实现页故障率反馈模型。 3、 实验步骤与源程序 1. Buddy heap 算法模拟 源程序; #include #include typedef struct block { int size; int start; int loc; struct block *next; struct block *prior; }block; 《 Linux 操作系统》实验报告 - 2 - 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->sta...