linux操作统实验三CB.docVIP

  • 8
  • 0
  • 约1.27万字
  • 约 17页
  • 2017-03-09 发布于贵州
  • 举报
linux操作统实验三CB

电子信息学院 实验报告书 课程名:《Linux操作系统实验 》 题 目: 实验试验 实验类别 【验证】 班 级: BX0907 学 号: 姓 名: 实验内容或题目 1 模拟初始内存页面分配(数组、结构体均可) 2 实现Buddy heap算法 3 通过键盘输入随机产生申请和释放操作 请求:r8代表申请8个页面。 释放:f4代表释放4个页面。 注意:heap的分割和合并操作。 4 每个申请或释放操作,都在屏幕上显示操作前与操作后的内存分配的对比图。 5 实验假设申请和释放的页数都是2的整次幂。 ② 1 建立工作集页面模型。 2 利用随机函数动态生成进程访问页面的序列号。 3 实现FIFO页面淘汰算法。 4 实现页故障率反馈模型。 实验目的与要求 1 用C语言是实现模拟Linux系统中连续内存分配用到的伙伴对算法。 2 通过链表的形式输出在内存申请和释放过程中内存状态的对比图。实验步骤与源程序 uddy 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 //计算x的y次幂 int k 0,tmp 1; for ;k y;k++ tmp tmp*x; return tmp; int root int x,int y //计算y的开x次方 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 ; //拆分后的第一个结点 pend id[tempId]- next; int flag 0,isFirst 0; while pend! NULL if pend- loc 0 //可拆分 //卸载被拆分结点 if isFirst 0 i

文档评论(0)

1亿VIP精品文档

相关文档