电子信息学院实 验 报 告 书课 程 名 : 《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->start=0; note->loc=0; note->next=NULL; id[9]=(struct block *)malloc(sizeof(struct block)); id[9]->ne...