(完整word版)Linux操作系统实验报告 存储管理试验.docx

上传人:啊飒飒 文档编号:10768552 上传时间:2021-06-03 格式:DOCX 页数:10 大小:468.45KB
返回 下载 相关 举报
(完整word版)Linux操作系统实验报告 存储管理试验.docx_第1页
第1页 / 共10页
(完整word版)Linux操作系统实验报告 存储管理试验.docx_第2页
第2页 / 共10页
(完整word版)Linux操作系统实验报告 存储管理试验.docx_第3页
第3页 / 共10页
(完整word版)Linux操作系统实验报告 存储管理试验.docx_第4页
第4页 / 共10页
(完整word版)Linux操作系统实验报告 存储管理试验.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《(完整word版)Linux操作系统实验报告 存储管理试验.docx》由会员分享,可在线阅读,更多相关《(完整word版)Linux操作系统实验报告 存储管理试验.docx(10页珍藏版)》请在三一文库上搜索。

1、 实 验 报 告 书【验证】BX090709吴沛儒实验态度:认真( ) 一般()差(实验理论:掌握( ) 熟悉()了解(差()一般(一般(差( (1)模拟初始内存页面分配(数组、结构体均可)(2)实现 Buddy heap 算法(2)利用随机函数动态生成进程访问页面的序列号。(3)实现 FIFO 页面淘汰算法。1. Buddy heap 算法模拟源程序;int loc;int size;block; id9-next=note;id9-prior=id9;note-prior=id9;printmem();int root(int x,int y)int result=y,count=0;wh

2、ile(result!=1)result=result/x;count+;printf(n);block * pend=(struct blockblock * cend=(struct blockblock * newf=(struct block*)malloc(sizeof(struct block);block * newu=(struct block*)malloc(sizeof(struct block);note-loc=0;pend=idtempId-next;int flag=0,isFirst=0;note-next=NULL;id9=(struct block *)mal

3、loc(sizeof(struct isFirst+;if(pend-loc=0)pend-prior-next=pend-next;newf-size=size;newf-loc=0;block * merger=(struct block*)malloc(sizeof(struct block);second=idtempId-next;int nextStart=first-start+first-size;int preStart=first-start-first-size;int flag=0,isFirst=0;if(second-start=nextStart |second-

4、start=preStart) &second-loc=0)merger-size=(first-size)+(second-size);merger-loc=0;return 1;merger-start=(first-start)start)?(first-start):(second-start); return 1;second=second-next;isFirst+;tempId+;else merge(tempId,merger);else printf(需要释放的内存块不存在!n);return 0; printf(没有合适的空间可分配!n);block * temp=(str

5、uct blockprintf(分配成功!n);printmem();return 1;scanf(%c %d,&order,&size);if(order=r)requestb(size);else出):);scanf(%d,&flag);getchar();结果图: /changeArray();for(i=0;iMAX_WORKSET;i+)wini0=-1;#define MAX_WORKSET 10#define WINDOW_SIZE 20int mempage=10;wini1=cur_workset;void changePage(int number)for(i=1;icur

6、_workset;i+)winflag0=procArraynumber;winflag1=1;for(i=0;icur_workset;i+)wini1+;for(i=0;iWINDOW_SIZE;i+)procArrayi=rand()%mempage;printf(进程调用页面序列:);for(i=0;iWINDOW_SIZE;i+)printf(%d|,procArrayi);for(i=0;icur_workset;i+)if(procArraynumber = wini0)/number+;hit=1;void init()break; cur_workset+;else if(c

7、urRateminRate)cur_workset-;for(i=0;iWINDOW_SIZE;i+)print();step(i);feedback(); 存储管理是操作系统中最重要的组成部分之一。在早期计算时代,由于人们所需要的内存数目远远大于物理内存,人们设计出了各种各样的策略来解决此问题,其中最成功的是虚拟内存技术。它使得系统中为有限物理内存竞争的进程所需内存空间得到满足。我们以 Buddy Heap 算法为例,实现模拟 Linux 系统中连续内存分配。BH 算法具有速度快的明显特点,同时解决了外碎片问题,但带此外当进程物理空间不要求连续时,内存分配由第三分配器完成。此外,这个实验还需要很好的理解 FIFO 算法,这是最简单的页面淘汰算法,在实现时,对应每一个页面需要有一个调入时间,该时间可设在内存中并用软件记录,不过最好设在寄存器中并由硬件记录。当内存空间紧张时,调入时间最早的页面将被淘汰。FIFO 算法易于理解和编程,但它的效率不高。被置换的页面可能存有一个初始化程序段,很早以前曾用到,以后不会再用到;但也可能存有一组经常访问的全局变量,初始化时被调入内存,在整个程序运行过程中都将会用到。这次实验难点在理论方面,在理解了之后操作比较顺利。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1