《操作系统》实验(五)内存管理算法模拟(验证性2学时)一、实验目的:1)掌握内存管理的主要技术与功能。2)模拟内存管理算法的实现方法。二、实验内容:设计一个能模拟内存管理行为的系统程序,该系统至少应包括FIFO和LRU算法(LeastRecentlyUsed)(当需要置换一页时,选择最长时间未被使用的那一页淘汰掉。)的实现。阅读下列的参考程序,写出main()函数,输入下面的各组测试数据,运行并记录结果。数据1:70120304230321201701数据2:0,1,7,2,3,2,17,1,0,3,0,3,0,3,0,10数据3:24151823241718241817171524172418数据4:432143543215723481435231参考程序page.c#includestdio.h#includestdlib.h#defineERR-1#definepage_len16wq//页序列总长#definetotal_vp18//作业的总页数+1,即序列中出现的最大页号+1,为了开pl[total_vp]数组所用typedefstruct{intpn,pfn,counter,time;}pl_type;pl_typepl[total_vp];structpfc_struct{intpn,pfn;structpfc_struct*next;};typedefstructpfc_structpfc_type;pfc_typepfc[total_vp],*freepf_head,*busypf_head,*busypf_tail;intdiseffect;intpage[page_len];voidinitialize(inttotal){inti;diseffect=0;for(i=0;itotal_vp;i++){pl[i].pn=i;pl[i].pfn=ERR;}for(i=1;itotal;i++){pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}voidFIFO(inttotal){inti,j;pfc_type*p,*t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;ipage_len;i++){if(pl[page[i]].pfn==ERR){diseffect+=1;if(freepf_head==NULL){p=busypf_head-next;pl[busypf_head-pn].pfn=ERR;freepf_head=busypf_head;freepf_head-next=NULL;busypf_head=p;}p=freepf_head-next;freepf_head-next=NULL;freepf_head-pn=page[i];pl[page[i]].pfn=freepf_head-pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head;else{busypf_tail-next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf(FIFO:%d,diseffect);}main(){inti;intk;inttprintf(“请输入页的引用序列:\n”);for(k=0;kpage_len;k++)scanf(%d,&page[k]);for(i=4;i=7;i++){printf(\n%2dpageframes,i);FIFO(i);}}参考程序LRU算法,略三、实验结果分析:可以知道长度相等时,块越多,缺页次数越少块数相同,长度越长,缺页越多(对上述实验各题所使用的原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析。)四、总结:你对本次实验有什么体会或看法。通过这次实验,我觉得对c语言已忘了差不多了,导致出现很多问题,回去之后还是要把相关书籍拿来看看。