欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Linux操作系统实验报告存储管理试验参考模板.docx

    • 资源ID:3275681       资源大小:271.74KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Linux操作系统实验报告存储管理试验参考模板.docx

    1、Linux操作系统实验报告存储管理试验参考模板电子信息学院实验报告书课程名:Linux操作系统实验 题 目: 实验三 存储管理试验 实验类别 【验证】 班 级: BX0907 学 号: 09 姓 名: 吴沛儒 评语:实验态度:认真( ) 一般( ) 差( )实验结果:正确( ) 部分正确( )错( )实验理论:掌握( ) 熟悉( ) 了解( ) 不懂( )操作技能:强( ) 一般( ) 差( )实验报告:好( ) 一般( ) 差( )成绩: 指导教师: 胡静 批阅时间: 年 月 日成绩: 指导教师: 宁建红 批阅时间: 年 月 日1、实验内容或题目(1)模拟初始内存页面分配(数组、结构体均可)

    2、 (2)实现Buddy heap算法 (3)通过键盘输入随机产生申请和释放操作请求:r8代表申请8个页面。释放:f4代表释放4个页面。 (4)每个申请或释放操作,都在屏幕上显示操作前与操作后的内存分配的对比图。 (5)实验假设申请和释放的页数都是2的整次幂。(1)建立工作集页面模型。 (2)利用随机函数动态生成进程访问页面的序列号。 (3)实现FIFO页面淘汰算法。 (4)实现页故障率反馈模型。2、实验目的与要求(1) 用C语言是实现模拟Linux系统中连续内存分配用到的伙伴对算法。 (2) 通过链表的形式输出在内存申请和释放过程中内存状态的对比图。(1)了解工作集模型的原理及其特点。 (2)

    3、实现页故障率反馈模型。3、实验步骤与源程序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 *id10; void printmem() int i; for(i=9; i=0;i-) printf(%d -,i); block * temp = (struct block *)malloc(size

    4、of(struct block); temp = idi-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;iprior=idi;idi-next=NULL; note=(struct block *)malloc(sizeof(struct block); note-size=maxsize; note-start=0; note-loc=0; note-next=NUL

    5、L; id9=(struct block *)malloc(sizeof(struct block); id9-next=note; id9-prior=id9; note-prior=id9; printmem();int power(int x,int y) int k=0,tmp=1; for(;knext; int flag=0,isFirst=0; while(pend!=NULL) if(pend-loc=0) if(isFirst=0) idtempId-next=pend-next; else pend-prior-next=pend-next; int size=(pend-

    6、size)/2; int start=pend-start; newu-size=size; newu-start=start; newf-start=start+size; newu-loc=0; newf-size=size; newf-loc=0; newf-prior=newu; newu-next=newf; newf-next=NULL; tempId-; cend=idtempId; while(cend-next!=NULL) cend=cend-next; cend-next=newu; newu-prior=cend; flag=1; return 1; else pend

    7、=pend-next; isFirst+; if(flag=0) tempId=tempId+1; if(tempIdnext; int nextStart=first-start+first-size; int preStart=first-start-first-size; int flag=0,isFirst=0; while(second!=NULL) if(second-start=nextStart | second-start=preStart) & second-loc=0) merger-size=(first-size)+(second-size); merger-loc=

    8、0; merger-start=(first-start)start)?(first-start):(second-start); if(first-next!=NULL) first-next-prior=first-prior; if(first-prior-prior)=first-prior) idtempId-next=first-next; else first-prior-next=first-next; if(second-next!=NULL) second-next-prior=second-prior; if(isFirst=0) idtempId-next=second

    9、-next; else second-prior-next=second-next; tempId+; merger-next=idtempId-next; merger-prior=idtempId; if(idtempId-next!=NULL) idtempId-next-prior=merger; idtempId-next=merger; if(tempIdnext; isFirst+; return 1;int freeb(int size) block * first=(struct block *)malloc(sizeof(struct block); int tempId=

    10、root(2,size); first=idtempId-next; int flag=0; while(first!=NULL) if(first-loc=1) first-loc=0; flag=1; break; else first=first-next; if(flag=1) merge(tempId,first); printmem(); else printf(需要释放的内存块不存在!n); return 1;int requestb(int size) block * temp=(struct block *)malloc(sizeof(struct block); int t

    11、empId = root(2,size); int flag=0; temp=idtempId-next; while(temp!=NULL) if(temp-loc=0 & temp-size=size) temp-loc=1; flag=1; printf(分配成功!n); printmem(); return 1; else temp=temp-next; if(flag=0) tempId+; if(tempId=9) int rs=split(tempId); if(rs=-1) printf(没有合适的空间可分配!n); return -1; else requestb(size)

    12、; else printf(没有合适的空间可分配!n); return -1; free(temp); int main() init(); int flag=1; int size; char order; do printf(请输入命令:(以空格相隔,示例:r 8)n); scanf(%c %d,&order,&size); if(order=r) requestb(size); else if(order=f) freeb(size); else printf(error!); printf(是否继续?(1继续,0退出):); scanf(%d,&flag); getchar(); wh

    13、ile(flag=1);结果图:2. 页故障率反馈模型源程序; #include #include #include #define MAX_WORKSET 10#define WINDOW_SIZE 20int mempage=10; int procArrayWINDOW_SIZE; int winMAX_WORKSET2;double maxRate=0.8,minRate=0.2;double curRate;int cur_workset=3;int conflictCount=0;void print() curRate=(double)conflictCount/(double)

    14、WINDOW_SIZE; printf(缺页故障率:%g,故障率上限/下限:%g/%gn,curRate,maxRate,minRate);void changeArray() int i; for(i=0;iWINDOW_SIZE;i+) procArrayi=rand()%mempage; printf(进程调用页面序列:); for(i=0;iWINDOW_SIZE;i+) printf(%d|,procArrayi); printf(n);void init() int i,j; /changeArray(); for(i=0;iMAX_WORKSET;i+) wini0=-1; wi

    15、ni1=cur_workset; void changePage(int number) int i,flag=0; for(i=1;icur_workset;i+) if(winflag1 = wini1) flag=i; winflag0=procArraynumber; winflag1=1; conflictCount+; for(i=0;icur_workset;i+) if(i!=flag & wini1!=-1) wini1+; void step(int number) int i,hit=0; for(i=0;icur_workset;i+) if(procArraynumb

    16、er = wini0) /number+; hit=1; break; if(hit=0) changePage(number); void run() int i; conflictCount=0; changeArray(); for(i=0;imaxRate) cur_workset+; else if(curRateminRate) cur_workset-; int main() init(); char quit; do run(); print(); feedback(); printf(输入任意字符继续,q退出n); scanf(%c,&quit); getchar(); wh

    17、ile(quit != q);4、结果分析与实验体会存储管理是操作系统中最重要的组成部分之一。在早期计算时代,由于人们所需要的内存数目远远大于物理内存,人们设计出了各种各样的策略来解决此问题,其中最成功的是虚拟内存技术。它使得系统中为有限物理内存竞争的进程所需内存空间得到满足。我们以Buddy Heap算法为例,实现模拟Linux系统中连续内存分配。BH算法具有速度快的明显特点,同时解决了外碎片问题,但带来内碎片,这是由于实际请求一般不能恰好与2i相对应,此时必须向上取整。对于更大块的请求内碎片的浪费更严重。为此Linux将剩余的内碎片按2j整数次幂切片并由二次分配器进行单独管理。此外当进程物

    18、理空间不要求连续时,内存分配由第三分配器完成。此外,这个实验还需要很好的理解FIFO算法,这是最简单的页面淘汰算法,在实现时,对应每一个页面需要有一个调入时间,该时间可设在内存中并用软件记录,不过最好设在寄存器中并由硬件记录。当内存空间紧张时,调入时间最早的页面将被淘汰。FIFO算法易于理解和编程,但它的效率不高。被置换的页面可能存有一个初始化程序段,很早以前曾用到,以后不会再用到;但也可能存有一组经常访问的全局变量,初始化时被调入内存,在整个程序运行过程中都将会用到。这次实验难点在理论方面,在理解了之后操作比较顺利。 友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!


    注意事项

    本文(Linux操作系统实验报告存储管理试验参考模板.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开