操作系统请求分页式存储管理页面置换算法课程设计报告

合集下载

操作系统报告-最近最久未使用置换算法

操作系统报告-最近最久未使用置换算法

操作系统课程报告最近最久未使用置换算法学号姓名班级华侨大学电子工程系设计内容假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:3,5,1,2,3,1,5,1,2,3,4,1,3,1,5,2,3,1,3,5(按各自数据来填写)。

模拟分页式存储管理中硬件地址转换和产生缺页中断,用最近最久未使用置换算法处理缺页中断,求出每次物理块的存储情况,并与“最优”置换算法进行置换次数的对比。

报告内容1、算法的基本原理。

答:1>最近最久未使用置换算法最近最久未使用(LRU)的页面置换算法是根据页面调入内存后的使用情况做出决策的。

由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。

该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t。

当需要淘汰一个页面时,选择现有也面中t值最大的,即最近最久未使用的页面予以淘汰。

2>最佳(Optimal)置换算法最佳置换算法是由Belady于1966年提出的一种理论上的算法。

其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。

采用最佳置换算法,通常可保证获得最低的缺页率。

2、程序流程图。

1>最近最久未使用置换算法3、程序及注释。

1>最近最久未使用置换算法2>最佳(Optimal)置换算法4、运行结果以及结论。

(如果发现上机考试结果有误,请解释原因并写出正确答案)1>最近最久未使用置换算法2>最佳(Optimal)置换算法结论:由运行结果知最佳(Optimal)置换算法比最近最久未使用置换算法(LRU)更优化,缺页次数更少。

页面置换算法

页面置换算法

图 FIFO算法的Belady现象
FIFO陷阱现象示例
3个页面 123412512345 111444555555 22211111333 3332222244 9次缺页 9/12=75%
4个页面 123412512345
111111555544 22222211115 3333332222 444444333
1-随机淘汰算法
随机淘汰算法。在系统设计人员认为无法确定哪 些页被访问的概率较低时,随机地选择某个用户 的页面并将其换出将是一种明智的作法。
2-最佳页面置换(OPT)算法
7 最0 佳1 置2 换0算3法0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7其2所选择2 的被2 淘汰2页面,将是2以后永不再7 用
7这列样前7 ,头7当的2要页进顺行次2置换换出2 时,4,而4只把需换4 把入0置的换页指链针接0所在指F0IF的OF队I7F尾O7队即 7
可。0 0 0
333222
11 100
缺点:1a. 1算法与1进0程的0 实0际运3 行3规律不相3适应2 ,因2为进2 程1 页框中这存(的些利物某页用理些面率块页不不) 面被高经淘。常汰被。先访b进. 问由先,实出但验置先和换进测算先试法出发置现换FI算FO法算不法能的保内证
页面置换算法
置换算法的前提:若需访问的页面不在内存而需将 其调入,且内存中没有空闲页面,需从内存中调 出一页程序或数据。 目的:选出一个被淘汰的页面。 把选择换出页面的算法称为页面置换算法。 置换算法的好坏直接影响系统的性能。一个好的 置换算法应具有较低的页面更换频率。从理论上 讲,应将那些以后不会再访问的页面换出,或者 把那些在较长时间内不会再访问的页面换出。
10 次缺页

存储管理实验报告_6

存储管理实验报告_6

昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013 学年第二学期)一、实验目的存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

通过本次实验, 要求学生通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解, 通过请求页式存储管理中页面置换算法模拟设计, 了解虚拟存储技术的特点, 掌握请求页式存储管理的页面置换算法。

二、实验原理及基本技术路线图(方框原理图)用C或C++语言模拟实现请求式分页管理。

要求实现: 页表的数据结构、分页式内存空间的分配及回收(建议采用位图法)、地址重定位、页面置换算法(从FIFO,LRU,NRU中任选一种)。

int subareaSize[num]={8,12,16,32,24,16,64,128,40,64};//分区大小Process *pro=NULL;//保持进程信息int ProcessNum=0;//进程数目int applyProcessNum=0;//每次申请进程数目int maxApplyNum=0;//最大可申请数目int *applyIndex=NULL;//申请进程队列int totalApplyNum=0;//申请总数int *assignPointer=NULL;//已分配内存的进程队列int assignFlag=0;//分配索引, 表示已申请队列已分配的进程数int exeIndex;//执行的进程号Node *subareaNode=new Node[3];//分区回收时, 进程所在分区及其前, 后分区信息LinkList createLinkList(int n );//建立空闲分区链Node firstFit(LinkList &head,Process pro);//首次适应算法Node nestFit(LinkList &head,Process pro,Node flag);//循环适应算法Node bestFit(LinkList &head,Process pro);//最佳适应算法Node worstFit(LinkList &head,Process pro);//最坏适应算法Node assign(LinkList &head,int orderIndex,int index,Node flagNode);//一次分区分配int assignMemory(LinkList &head);//内存分配void insertNode(LinkList &head,Node q,int index);//插入节点Node deleteNode(LinkList &head,int index);//删除节点int display(LinkList &head);//打印分区分配情况int lowAttemper(int *excursionPointer);//低级调度int findSubarea(LinkList &head,int index);//回收内存int creatProcess();//创建进程Process* randomCreatPro(int n);//随机产生进程下面是各种方法简述:(1) 最优替换算法, 即OPT算法。

实验六请求分页存储管理

实验六请求分页存储管理

实验六:请求分页存储管理一.实验目的深入理解请求页式存储管理的基本概念和实现方法,重点认识其中的地址变换、缺页中断、置换算法等实现思想。

二.实验属性该实验为综合性、设计性实验。

三.实验仪器设备及器材普通PC386以上微机四.实验要求本实验要求2学时完成。

本实验要求完成如下任务:(1)建立相关的数据结构:页表、页表寄存器、存储块表等;(2)指定分配给进程的内存物理块数,设定进程的页面访问顺序;(3)设计页面置换算法,可以选择OPT、FIFO、LRU等,并计算相应的缺页率,以比较它们的优劣;(4)编写地址转换函数,实现通过查找页表完成逻辑地址到物理地址的转换;若发生缺页则选择某种置换算法(OPT、FIFO、LRU等)完成页面的交换;(5)将整个过程可视化显示出来。

实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。

实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。

三、设计过程3.1算法原理分析OPT算法是未来最远出现,当当前内存中没有正要访问的页面时,置换出当前页面中在未来的访问页中最远出现的页面或再也不出现的页面。

FIFO算法是先进先出,当当前内存中没有正要访问的页面时,置换出最先进来的页面。

LRU算法是最近最久未使用,当当前内存中没有正要访问的页面时,置换出在当前页面中最近最久没有使用的页面。

3.2数据定义int length,num_page,count,seed; //length记录访问串的长度,num_page页面数,count记录缺页次数int result[20][30],order[30],a[10]; //result记录结果,order存储访问串,a存储当前页面中的值int pos1,flag1,flag2,flag3; //pos1位置变量,flag1等为标志变量 char result1[30]; //记录缺页数组 void opt() //最佳void fifo() //先进先出bool search(int n) //查找当前内存中是否已存在该页3.3流程图与运行截图图6.1 FIFO ()函数流程图;否是 是否 开始得到执行的指令指令是否在内存中最先存入指令被淘汰下面是否还有指令 结束得出命中率图2.2 OPT算法流程图四、小结本次课程设计目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。

操作系统实验4-请求分页存储管理模拟实验

操作系统实验4-请求分页存储管理模拟实验

实验四请求分页存储管理模拟实验一:实验目的通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求分页存储管理系统的原理和实现技术的理解。

二:实验内容假设每个页面可以存放10条指令,分配给进程的存储块数为4。

用C语言或Pascal语言模拟一进程的执行过程。

设该进程共有320条指令,地址空间为32个页面,运行前所有页面均没有调入内存。

模拟运行时,如果所访问的指令已经在内存,则显示其物理地址,并转下一条指令;如果所访问的指令还未装入内存,则发生缺页,此时需要记录缺页产生次数,并将相应页面调入内存,如果4个内存块已满,则需要进行页面置换。

最后显示其物理地址,并转下一条指令。

在所有指令执行完毕后,显示进程运行过程中的缺页次数和缺页率。

页面置换算法:分别采用OPT、FIFO、LRU三种算法。

进程中的指令访问次序按如下原则生成:50%的指令是顺序执行的。

25%的指令是均匀分布在低地址部分。

25%的指令是均匀分布在高地址部分。

三:实验类别分页存储管理四:实验类型模拟实验五:主要仪器计算机六:结果OPT:LRU:FIFO:七:程序# include<stdio.h># include<stdlib.h># include<conio.h># define blocknum 4//页面尺寸大小int m; //程序计数器,用来记录按次序执行的指令对应的页号static int num[320]; //用来存储320条指令typedef struct BLOCK //声明一种新类型--物理块类型{int pagenum; //页号int accessed; //访问量,其值表示多久未被访问}BLOCK;BLOCK block[blocknum]; //定义一大小为8的物理块数组void init() //程序初始化函数,对block初始化{for(int i=0;i<blocknum;i++){block[i].pagenum=-1;block[i].accessed=0;m=0;}}int pageExist(int curpage)//查找物理块中页面是否存在,寻找该页面curpage是否在内存块block中,若在,返回块号{for(int i=0; i<blocknum; i++){if(block[i].pagenum == curpage )return i; //在内存块block中,返回块号}return -1;}int findSpace()//查找是否有空闲物理块,寻找空闲块block,返回其块号{for(int i=0;i<blocknum;i++){if(block[i].pagenum==-1)return i; //找到了空闲的block,返回块号}return -1;}int findReplace()//查找应予置换的页面{int pos = 0;for(int i=0;i<blocknum;i++){if(block[i].accessed > block[pos].accessed)pos = i; //找到应该置换页面,返回BLOCK中位置}return pos;void display()//显示物理块中的页面号{for(int i=0; i<blocknum; i++){if(block[i].pagenum != -1){printf(" %02d ",block[i].pagenum);printf("%p |",&block[i].pagenum);}}printf("\n");}void randam()//产生320条随机数,显示并存储到num[320]{int flag=0;printf("请为一进程输入起始执行指令的序号(0~320):\n");scanf("%d",&m);//用户决定的起始执行指令printf("******进程中指令访问次序如下:(由随机数产生)*******\n");for(int i=0;i<320;i++){//进程中的320条指令访问次序的生成num[i]=m;//当前执行的指令数,if(flag%2==0)m=++m%320;//顺序执行下一条指令if(flag==1)m=rand()%(m-1);//通过随机数,跳转到低地址部分[0,m-1]的一条指令处,设其序号为m1if(flag==3)m=m+1+(rand()%(320-(m+1)));//通过随机数,跳转到高地址部分[m1+2,319]的一条指令处,设其序号为m2flag=++flag%4;printf(" %03d",num[i]);//输出格式:3位数if((i+1)%10==0) //控制换行,每个页面可以存放10条指令,共32个页面printf("\n");}}void pagestring() //显示调用的页面序列,求出此进程按次序执行的各指令所在的页面号并显示输出{for(int i=0;i<320;i++){printf(" %02d",num[i]/10);//输出格式:2位数if((i+1)%10==0)//控制换行,每个页面可以存放10条指令,共32个页面printf("\n");}}void OPT() //最佳替换算法{int n=0;//记录缺页次数int exist,space,position;int curpage;//当前指令的页面号for(int i=0;i<320;i++){m=num[i];curpage=m/10;exist=pageExist(curpage);if(exist==-1){ //当前指令的页面号不在物理块中space=findSpace();if(space != -1){ //当前存在空闲的物理块block[space].pagenum = curpage; //将此页面调入内存display();//显示物理块中的页面号n++;//缺页次数+1}else{ //当前不存在空闲的物理块,需要进行页面置换for(int k=0;k<blocknum;k++){for(int j=i;j<320;j++){//找到在最长(未来)时间内不再被访问的页面if(block[k].pagenum!= num[j]/10){block[k].accessed = 1000;} //将来不会被访问,设置为一个很大数else{ //将来会被访问,访问量设为jblock[k].accessed = j;break;}}}position = findReplace();//找到被置换的页面 ,淘汰block[position].pagenum = curpage;// 将新页面调入display();n++; //缺页次数+1}}}printf("缺页次数:%d\n",n);printf("缺页率:%f%%\n",(n/320.0)*100);}void LRU() //最近最久未使用算法{int n=0;//记录缺页次数int exist,space,position ;int curpage;//当前指令的页面号for(int i=0;i<320;i++){m=num[i];curpage=m/10;exist = pageExist(curpage);if(exist==-1){ //当前指令的页面号不在物理块中space = findSpace();if(space != -1){ //当前存在空闲的物理块block[space].pagenum = curpage; //将此页面调入内存display();//显示物理块中的页面号n++;//缺页次数+1}else{ //当前不存在空闲的物理块,需要进行页面置换position = findReplace();block[position].pagenum = curpage;display();n++; //缺页次数+1}}elseblock[exist].accessed = -1;//恢复存在的并刚访问过的BLOCK中页面accessed为-1for(int j=0; j<blocknum; j++){//其余的accessed++block[j].accessed++;}}printf("缺页次数:%d\n",n);printf("缺页率:%f%%\n",(n/320.0)*100);}void FIFO(){int n=0;//记录缺页次数int exist,space,position ;int curpage;//当前指令的页面号int blockpointer=-1;for(int i=0;i<320;i++){m=num[i];curpage=m/10;exist = pageExist(curpage);if(exist==-1){ //当前指令的页面号不在物理块中space = findSpace();if(space != -1){ //当前存在空闲的物理块blockpointer++;block[space].pagenum=curpage; //将此页面调入内存n++;//缺页次数+1display();//显示物理块中的页面号}else{ // 没有空闲物理块,进行置换position = (++blockpointer)%4;block[position].pagenum = curpage; //将此页面调入内存n++;display();}}}printf("缺页次数:%d\n",n);printf("缺页率:%f%%\n",(n/320.0)*100);}void main(){int choice;printf("************请求分页存储管理模拟系统*************\n");randam();printf("************此进程的页面调用序列如下**************\n");pagestring();while(choice != 4){printf("********1:OPT 2:LRU 3:FIFO 4:退出*********\n");printf("请选择一种页面置换算法:");scanf("%d",&choice);init();switch(choice){case 1:printf("最佳置换算法OPT:\n");printf("页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n");OPT();break;case 2:printf("最近最久未使用置换算法LRU:\n");printf("页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n");LRU();break;case 3:printf("先进先出置换算法FIFO:\n");printf("页面号物理地址页面号物理地址页面号物理地址页面号物理地址\n");FIFO();break;}}}。

页面置换算法教案

页面置换算法教案

页面置换算法
第7次课授课时间 2015年7月1日教案完成时间2015年6月22日
例:假定系统为某进程分配了三个物理块,并有以下的页面号引用串:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
若采用先进先出置换算法,共发生12次置换。

注:
(1)该算法的出发点是最早调入内存的页面,其不再被访问的可能性会大一些。

(2)该算法实现比较简单,对具有线性顺序访问的程序比较合适,而对其他情况效率不高。

因为经常被访问的页面,往往在内存中停留最久,结果这些常用的页面却因变老而被淘汰。

(3)先进先出算法存在一种异常现象,即在某些情况下会出现分配给的进程物理块数增多,缺页次数有时增加,有时减少的奇怪现象,这种现象称为Belady现象。

3、最近最久未使用置换算法
最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。

由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU置换算法是选择最近最久未使用的页面予以淘汰。

例:假定系统为某进程分配了三个物理块,并有以下的页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
利用LRU算法进行页面置换,其结果如图:
注:
该算法的出发点:如果某个页面被访问了,则它可能马上还要访问。

反之,如果很长时间未被访问,则它在最近一段时间也不会被访问。

全国自考操作系统(存储管理)模拟试卷1(题后含答案及解析)

全国自考操作系统(存储管理)模拟试卷1(题后含答案及解析)

全国自考操作系统(存储管理)模拟试卷1(题后含答案及解析) 题型有:1. 单项选择题 3. 填空题 4. 简答题 6. 判断题单项选择题1.根据作业在本次分配到的内存起始地址将目标代码装到指定内存地址中,并修改所有有关地址部分的值的方法称为_______方式。

A.固定定位B.静态重定位C.动态重定位D.单一连续重定位正确答案:B 涉及知识点:存储管理2.静态地址重定位的对象是_______。

A.源程序B.编译程序C.目标程序D.执行程序正确答案:C 涉及知识点:存储管理3.使用_______,目标程序可以不经过任何改动而装入主存直接执行。

A.静态重定位B.动态重定位C.编译或汇编D.连接程序正确答案:B 涉及知识点:存储管理4.在可变式分区存储管理中,当释放和回收一个空闲区时,造成空闲表项区数减1的情况是_______。

A.无上邻空闲区,也无下邻空闲区B.有上邻空闲区,但无下邻空闲区C.无上邻空闲区,但有下邻空闲区D.有上邻空闲区,也有下邻空闲区正确答案:D解析:在有上邻空闲区也有下邻空闲区的情况下,释放区和上、下邻空闲区合并成一块空闲区,故原先记录上、下邻空闲区的两个表项就只需要合并为一个表项记录新的大空闲区。

知识模块:存储管理5.在下列存储管理算法中,内存的分配和释放平均时间之和为最大的是_______。

A.首次适应法B.循环首次适应法C.最佳适应法D.最差适应法正确答案:C解析:最佳适应算法的分配算法的速度比首次适应法、循环首次适应法和最差适应算法差得多,如用链表实现,释放算法要在链表中找上、下邻空闲区,修改过或新加入的空闲区还要有序地插入到链表中。

知识模块:存储管理6.早期采用交换技术的目的是_______。

A.能运行更多的程序B.能运行更大的程序C.实现分时系统D.实现虚拟存储技术正确答案:A 涉及知识点:存储管理7.虚拟存储器技术的目的是_______。

A.实现存储保护B.实现程序浮动C.可运行更大更多的程序D.扩充主存容量正确答案:C 涉及知识点:存储管理8.在以下存储管理方案中,不适用于多道程序设计系统的是_______。

操作系统-页面置换算法课件

操作系统-页面置换算法课件
2
第一章 操作系统引论
图5-3 利用最佳页面置换算法时的置换图
3
第一章 操作系统引论
2. 先进先出(FIFO)页面置换算法 FIFO算法是最早出现的置换算法。该算法总是淘汰最先 进入内存的页面,即选择在内存中驻留时间最久的页面予以 淘汰。该算法实现简单,只需把一个进程已调入内存的页面 按先后次序链接成一个队列,并设置一个指针,称为替换指 针,使它总是指向最老的页面。但该算法与进程实际运行的 规律不相适应,因为在进程中,有些页面经常被访问,比如, 含有全局变量、常用函数、例程等的页面,FIFO算法并不能 保证这些页面不被淘汰。
9
第一章 操作系统引论
图5-6 某进程具有8个页面时的LRU访问情况
10
第一章 操作系统引论
2) 栈 可利用一个特殊的栈保存当前使用的各个页面的页面号。 每当进程访问某页面时,便将该页面的页面号从栈中移出, 将它压入栈顶。因此,栈顶始终是最新被访问页面的编号, 而栈底则是最近最久未使用页面的页面号。假定现有一进程, 它分有五个物理块,所访问的页面的页面号序列为:
4
第一章 操作系统引论
图5-4 利用FIFO置换算法时的置换图
5
第一章 操作系统引论
5.3.2 最近最久未使用和最少使用置换算法 1. LRU(Least Recently Used)置换算法的描述 FIFO置换算法的性能之所以较差,是因为它所依据的条
件是各个页面调入内存的时间,而页面调入的先后并不能反 映页面的使用情况。最近最久未使用(LRU)的页面置换算法 是根据页面调入内存后的使用情况做出决策的。
1
第一章 操作系统引论
5.3.1 最佳置换算法和先进先出置换算法 1. 最佳(Optimal)置换算法 最佳置换算法是由Belady于1966年提出的一种理论上的

虚拟储存管理实验报告

虚拟储存管理实验报告

一、实验目的1. 理解虚拟存储管理的基本概念和原理。

2. 掌握分页式虚拟存储管理的地址转换和缺页中断处理过程。

3. 学习并分析几种常见的页面置换算法,如FIFO、LRU、OPT等。

4. 比较不同页面置换算法的性能,提高对虚拟存储管理的认识。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 虚拟存储器模拟工具:虚拟机(VirtualBox)三、实验内容1. 模拟分页式虚拟存储器(1)定义分页式虚拟存储器的参数,如页大小、内存大小、虚拟地址空间大小等。

(2)创建页表,记录每个页在内存中的位置和是否已加载。

(3)模拟进程的指令序列,生成虚拟地址。

(4)根据虚拟地址进行地址转换,得到物理地址。

(5)处理缺页中断,选择合适的页面置换算法。

2. 页面置换算法模拟(1)实现FIFO(先进先出)页面置换算法。

(2)实现LRU(最近最少使用)页面置换算法。

(3)实现OPT(最优页面置换)算法。

3. 比较不同页面置换算法的性能(1)设置不同的页面置换算法,模拟进程运行。

(2)记录每次缺页中断时的页面命中率。

(3)比较不同页面置换算法的页面命中率,分析其性能。

四、实验结果与分析1. 分页式虚拟存储器模拟(1)通过模拟,成功实现了分页式虚拟存储器的地址转换和缺页中断处理过程。

(2)实验结果表明,分页式虚拟存储器能够有效地提高内存利用率,减少内存碎片。

2. 页面置换算法模拟(1)实现了FIFO、LRU和OPT三种页面置换算法。

(2)通过模拟,比较了三种算法在不同进程下的页面命中率。

3. 页面置换算法性能比较(1)FIFO算法的页面命中率较低,适用于进程较稳定的情况。

(2)LRU算法的页面命中率较高,适用于进程频繁访问同一页面的情况。

(3)OPT算法的页面命中率最高,但实现复杂度较高,适用于进程访问序列可预测的情况。

五、实验结论1. 通过本次实验,加深了对虚拟存储管理的基本概念和原理的理解。

页式存储管理实验报告

页式存储管理实验报告

页式存储管理一、实验目的:掌握分页式存储管理的基本概念和实现方法。

要求编写一个模拟的分页式管理程序,并能对分页式存储的页面置换算法进行编写和计算各个算法的缺页率。

二、程序设计:首先创建页面链指针数据结构,并设计页面映像表,采用数组的方法给定页面映像。

申请缓冲区,将一个进程的逻辑地址空间划分成若干个大小相等的部分,每一部分称做页面或页。

每页都有一个编号,叫做页号,页号从0开始依次编排,如0,1,2……。

设置等大小的内存块。

初始状态:将数据文件的第一个页面装入到该缓冲区的第0块。

设计页面置换算法,这里分别采用最佳页面置换算法OPT和最近最久未使用置换算法LRU,并分别计算它们的缺页率,以比较它们的优劣。

三、算法说明:执行程序时,当主存没有可用页面时,为了选择淘汰主存中的哪一页面,腾出1个空闲块以便存放新调入的页面。

淘汰哪个页面的首要问题是选择何种置换算法。

该程序采用人工的方法选择,依置换策略选择一个可置换的页,并计算它们的缺页率以便比较。

/*分页式管理实验-源程序*/#include"stdio.h"#define N 16#define num 5 /*进程分配物理块数目*/int A[N]={1,2,3,4,5,6,7,8,5,2,3,2,7,8,1,4}; /*页表映像*/typedef struct page{ int address; /*页面地址*/struct page *next;}page;struct page *head,*run,*rear;void jccreat() /*进程分配物理块*/{ int i=1;page *p,*q;head=(page *)malloc(sizeof(page)); p=head;for(i=1;i<=num;i++) { q=(page *)malloc(sizeof(page));p->next=q; q->address=0; q->next=NULL; p=q; }rear=p;}int search(int n){page *p;int i=0;p=head;while(p->next){if(p->next->address==n){printf("Get it at the page %d\n",i+1);run=p;return 1;}p=p->next;i++;}return 0;}void changeOPT(int n,int position){int i;int total=0;int flag=1;int distance[num];int MAX;int order=0;page *p,*q;p=head->next;q=head->next;for(i=0;i<num;i++)distance[i]=100;i=0;while(p){if(p->address==0){flag=0;break;}p=p->next;i++;}if(!flag){p->address=n;printf("Change the page %d\n",i+1);}else{while(q){for(i=position;i<N;i++){if(q->address==A[i])distance[total]=i-position;}total++;q=q->next;}MAX=distance[0];for(i=0;i<num;i++){if(distance[i]>MAX){MAX=distance[i];order=i;}}printf("Change the page %d\n",order+1);i=0;while(p){if(i==order)p->address=n;i++;p=p->next;}}}void changeLRU(int n){int i=0;int flag=1;page *p,*delect;p=head->next;while(p){if(p->address==0){flag=0;p->address=n;printf("Change the page %d\n",i+1);break;}p=p->next;i++;}if(flag){delect=head->next;head->next=delect->next;printf("Delect from the head, and add new to the end.\n");delect->address=n;rear->next=delect;rear=delect;rear->next=NULL;}}float OPT(){int i;int lose=0;float losef;float percent;for(i=0;i<N;i++){if(search(A[i])==0){lose++;changeOPT(A[i],i);}}losef=lose;percent=1-(losef/N);return percent;}float LRU(){int i;int lose=0;float losef;float percent;page *p;for(i=0;i<N;i++){if(search(A[i])==0){lose++;changeLRU(A[i]);}else{p=run->next;run->next=p->next;rear->next=p;rear=p;rear->next=NULL;printf("Move it to end of queue.\n");}}losef=lose;percent=1-(losef/N);return percent;}main() /*主函数部分*/{float percent;int choice;printf("Select the arithmetic:\n(1)OPT\n(2)LRU\nyour choice is:"); scanf("%d",&choice);/*选择页面置换算法*/jccreat(); /*创建进程*/if(choice==1) /*采用OPT算法置换*/{percent=OPT(); /*计算OPT时的缺页率*/ printf("The percent of OPT is %f",percent);}else if(choice==2) /*采用LRU算法置换*/ {percent=LRU(); /*计算LRU时的缺页率*/ printf("The percent of OPT is %f",percent);}else printf("Your choice is invalid.");getch();}四.运行结果:最佳(Optimal)置换算法:最近最久未使用(LRU)置换算法:五、心得体会掌握分页式存储管理的基本概念和实现方法。

存储管理作业(二):分页分段管理与页面置换

存储管理作业(二):分页分段管理与页面置换

存储管理作业(二)1、已知某系统页面长4KB,页表项4B,采用多级页表映射64位虚地址空间。

若限定最高层页表占1页,问它可以采用几级页表?2、设有一页式存储管理系统,向用户提供的逻辑地址空间最大为16页,每页2048B,内存总共有8个存储块。

试问逻辑地址至少应为多少位?内存空间有多大?3、在一分页存储管理系统中,逻辑地址长度为24位,页面大小为4096B,现有一逻辑地址为2FA6H,且第0、1、2页依次存放在物理块10、12、14中,问相应的物理地址为多少4、有一个页式虚存系统,某进程占用3个内存块,开始时内存为空,执行如下访问页号序列:0,1,2,3,4,1,2,0,5,1,0,1,2,3,2,4,5(1) 采用先进先出(FIFO)置换算法,缺页次数是多少?(2) 采用LRU置换算法,缺页次数是多少?(3) 若用最优(OPT)算法呢?5、(8分)设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。

若某进程最多需要6页(Page)数据存储空间,页的大小为1KB,操作系统采用固定分配局部置换策略为此进程分配4个页框(Page Frame)。

在时刻260前的该进程访问情况如下表所示(访问位即(1)该逻辑地址的对应的页号是多少?(2)若采用先进先出(FIFO)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。

46题)10ns,处理一次缺页的平均时间为108ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。

假设①TLB初始为空;②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断后,返回到产生缺页中断的指令处重新执行。

设有虚地址访问序列2362H、1565H、25A5H,请问:(1) 依次访问上述三个虚地址,各需多少时间?给出计算过程。

页面淘汰算法实验报告

页面淘汰算法实验报告

操作系统实验报告课题:页面淘汰算法专业:班级:学号:姓名:年月日目录一实验目的 (3)二实验要求 (3)三背景知识 (3)四总体设计 (4)五详细设计 (7)六运行结果分析 (9)七心得体会 (13)八参考文献 (14)附:源代码 (15)一、实验目的本实验主要对操作系统中请求分页式内存管理及其应用的一些关键算法进行模拟。

学生通过设计与实现Clock算法,能够加强对相应理论的理解,并对了解操作系统内部的基本处理原理与过程也有很多益处。

利用简单的数据结构,模拟实现操作系统中的页面置换机制,通过写程序模拟实现上述三种内存页面置换算法,使学生进一步掌握内存页面置换的方法。

对操作系统中内存的管理有一个实践上的认识。

1、用C语言编写OPT、FIFO、LRU三种置换算法。

2、熟悉内存分页管理策略。

3、了解页面置换的算法。

4、掌握一般常用的调度算法。

5、根据方案使算法得以模拟实现。

6、锻炼知识的运用能力和实践能力。

二、实验要求●设计随机页面序号产生程序,并说明随机的性能和其性能可能对算法的影响●编写页面淘汰算法(FIFO、OPT、LRU)●结果数据的显示或提取●结果数据的分析几点说明:●设计并绘制算法流程,附加说明所需的数据结构●如何标记时间的先后、最久的将来、最久未被使用●描述Clock算法的基本原理、必要的数据结构、算法执行流程图、编码实现。

1)初始化:输入作业可占用的总页框数,初始化置空。

2)输入请求序列:输入一个作业页号访问请求序列,依次占用相应页框,直至全部占用;3)Clock算法:当页框全部占用后,对于后续新的页号访问请求,执行Clock 算法,淘汰1个页面后装入新的页号。

4)显示当前分配淘汰序列:显示淘汰的页号序列。

三、背景知识:在操作系统当中,在进程运行过程中,若其访问的页面不在内存中而需把他们调入内存,但内存已无空闲空间时,为了保证该进程能够正常的运行,系统必须从内存中调出一页程序或数据送到磁盘的兑换区中,但是应该是哪个页面被调出,需根据一定的算法来确定。

22秋季-福师《操作系统导论》在线作业一-辅导资料-答案7

22秋季-福师《操作系统导论》在线作业一-辅导资料-答案7

22秋-福师《操作系统导论》在线作业一-0007
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 60 分)
1.当用户程序执行访管指令时,中断装置将使中央处理器________工作。

A.维持在目态
B.从目态转换到管态
C.维持在管态
D.从管态转换到目态
【此题正确选项】:B
2.在请求分页内存管理的页表表项中,其中访问位供()时参考。

A.分配页面
B.程序访问
C.换出页面
D.调入页面
E.其他
【此题正确选项】:C
3.避免死锁的一个著名的算法是()。

A.先入先出法
B.银行家算法
C.优先级算法
D.资源按序分配法
【此题正确选项】:B
4.段式和页式存储管理的地址结构很类似,但是它们之间有实质上的不同,下列哪项不是其具体表现()。

A.页是的地址是一维的,段式的地址是二维的
B.分页是操作系统进行的,分段是用户确定的
C.各页可以分分散存放在主存,每段必须占用连续的主存空间
D.页式采用静态重定位方式,段式采用动态重定位方式
【此题正确选项】:D
5.用磁带作为文件存贮介质时,文件只能组织成( )。

A.顺序文件
B.链接文件
C.索引文件
D.目录文件
【此题正确选项】:A
6.若干个等待占有CPU并运行的进程按一定次序链接起来的队列为()。

A.运行队列
B.后备队列
C.等待队列。

《操作系统》课程教学大纲

《操作系统》课程教学大纲

《操作系统》课程教学大纲一、课程基本情况课程代码:10411290课程名称(中/英文):操作系统/Operating System课程类别:专业基础课学分:3.5总学时:56理论学时:48实验/实践学时:8适用专业:数据科学与大数据技术适用对象:本科先修课程:计算机组成与系统结构、java程序设计、数据结构教学环境:多媒体开课学院:计算机与信息工程学院二、课程简介《操作系统》是高校软件工程专业的一门专业核心课,是后续专业课程的理论基础,本课程讲述操作系统的基本原理,主要偏重于操作系统功能与结构的理论分析,对其中的重要算法辅以实验,以加深对理论知识的理解和掌握。

主要内容包括操作系统概论;进程的概念、进程的描述与控制、进程的同步与互斥以及进程管理的常用算法;处理机调度的策略和处理死锁的方法;存储器管理的方案和分配算法以及存储保护和共享;文件系统的运行机制及关键的数据结构;设备与系统的结合方式,设备驱动程序的结构及加载机制。

通过该课程的学习要求学生理解和掌握操作系统的原理和实现方法,培养分析、比较操作系统实现方法优劣的基本能力,加深对操作系统的理解,提高深入编程和借鉴操作系统的设计思想和算法的能力。

本课程主要讲述操作系统的原理,使学生不仅能够从操作系统内部了解操作系统的工作原理,而且可以学到软件设计的思想方法和技术方法。

主要内容包括:操作系统的概论;操作系统的作业管理;操作系统的文件管理原理;操作系统的进程概念、进程调度和控制、进程同步和互斥等;操作系统的各种存储管理方式以及存储保护和共享;操作系统的设备管理原理。

三、课程教学目标2.课程教学目标及其与毕业要求指标点、主要教学内容的对应关系四、教学内容第一章操作系统引论1.主要内容:阐述操作系统的目标和作用;操作系统的发展过程;操作系统基本特性;操作系统主要功能;操作系统的结构设计。

2.基本要求:掌握操作系统的定义;理解操作系统目标、作用和功能;。

3.重点:操作系统的定义与功能。

操作系统课程教案修订版

操作系统课程教案修订版

《操作系统》课程教案一、课程定位操作系统课程是计算机应用技术专业基础课程,属于必修课程。

在课程设置上起着承上启下的作用,其特点是概念多、抽象和涉及面广。

主要任务是:使学生掌握计算机操作系统的基本原理及组成;计算机操作系统的概念和相关新概念、名词及术语;了解计算机操作系统的发展特点、设计技巧和方法;对常用计算机操作系统会进行基本的操作使用。

按照新专业人才培养方案,该课程开设在第三学期。

本课程的先导课程为《计算机组成原理》,《微机原理》,《数据结构》和《高级语言程序设计》;后续课程为《数据库系统原理》、《计算机网络》。

二、课程总目标通过本课程的学习,使学生理解操作系统基本原理,并在此基础上培养学生实际动手编程能力。

(一)知识目标1.理解操作系统的概念、操作系统的发展历史、类型、特征以及结构设计。

2.掌握进程和线程。

3.掌握死锁的预防、避免、检测和恢复。

4.掌握作业调度、进程调度、调度准则、调度算法、线程调度等。

5.掌握存储管理中的分区法、分页技术、分段技术、段页式技术等。

6.掌握文件系统的功能和结构、目录结构和目录查询、文件和目录操作。

7.掌握输入/输出管理、用户接口服务、嵌入式操作系统、分布式操作系统。

(二)素质目标1.熟练使用计算机操作系统。

2.能够解决一些简单的应用问题。

3.了解计算机操作系统设计技巧。

(三)职业能力培养目标1 .初步具备辩证思维的能力。

2 .具有热爱科学,实事求是的学风和创新意识,创新精神。

三、课程设计(一)设计理念以职业能力培养为导向,进行课程开发与设计。

按照人才培养目标要求来确定课程的内容、教学组织、教学方法和手段,注重培养学生分析问题、解决问题的能力、计算机思维能力、自学能力和从业能力。

(二)设计思路1.以“够用、适用、实用”为目标设计课程教学内容。

2.考虑后序课程需要,突出重点,强化专业应用。

3.注重课堂教学互动,教师为主导,学生为主体,引导学生积极思维,培养学生的学习能力。

存储器管理实验报告

存储器管理实验报告

一、实验目的1. 理解存储器管理的概念和作用。

2. 掌握虚拟存储器的实现原理。

3. 熟悉存储器分配策略和页面置换算法。

4. 提高动手实践能力,加深对存储器管理知识的理解。

二、实验环境1. 操作系统:Linux2. 编程语言:C/C++3. 开发环境:GCC编译器三、实验内容1. 虚拟存储器实现原理(1)分页式存储管理:将内存划分为固定大小的页,进程的逻辑地址空间也划分为相应的页。

内存与外存之间通过页表进行映射,实现虚拟存储器。

(2)页表管理:包括页表建立、修改和删除等操作。

(3)页面置换算法:包括FIFO、LRU、LRU时钟等算法。

2. 存储器分配策略(1)固定分区分配:将内存划分为若干个固定大小的分区,每个分区只能分配给一个进程。

(2)可变分区分配:根据进程需求动态分配内存,分为首次适应、最佳适应和最坏适应等策略。

(3)分页存储管理:将内存划分为固定大小的页,进程的逻辑地址空间也划分为相应的页,通过页表进行映射。

3. 页面置换算法(1)FIFO算法:根据进程进入内存的顺序进行页面置换,最早进入内存的页面将被淘汰。

(2)LRU算法:淘汰最近最少使用的页面。

(3)LRU时钟算法:结合LRU算法和FIFO算法的优点,通过一个时钟指针实现页面置换。

四、实验步骤1. 编写程序实现虚拟存储器的基本功能,包括分页式存储管理、页表管理、页面置换算法等。

2. 编写测试程序,模拟进程在虚拟存储器中的运行过程,观察不同页面置换算法的效果。

3. 分析实验结果,比较不同页面置换算法的性能差异。

五、实验结果与分析1. 实验结果通过模拟实验,验证了虚拟存储器的基本功能,包括分页式存储管理、页表管理、页面置换算法等。

实验结果显示,不同页面置换算法对系统性能的影响较大。

2. 实验分析(1)FIFO算法:实现简单,但可能导致频繁的页面置换,影响系统性能。

(2)LRU算法:性能较好,但实现复杂,需要额外的硬件支持。

(3)LRU时钟算法:结合LRU算法和FIFO算法的优点,在性能和实现复杂度之间取得平衡。

操作系统原理及应用(Linux)(第2版)课程教学大纲

操作系统原理及应用(Linux)(第2版)课程教学大纲

《操作系统》课程教学大纲一、课程基本信息课程名称:操作系统先修课程:《计算机导论》(或《计算机应用基础》)、《C语言程序设计》、《数据结构》、《计算机组成原理》适用专业:计算机科学与技术、软件工程、网络工程等计算机及相关专业。

课程类别:专业教育必修课程/基础课程课程总学时:56-72 (其中理论40-56学时,实验16学时)二、课程目标通过本课程的学习,使学生具备下列能力:1.能够准确理解及掌握操作系统的基本概念、基本功能和基本原理,理解操作系统的整体运行过程。

2.能够理解及掌握操作系统的各组成部分,包括进程管理、调度、内存管理、文件管理、设备管理的功能及策略、算法、机制及相互关系。

3.能够运用操作系统原理、方法与技术分析问题和解决问题,并能利用C 语言描述相关算法。

4.在理解及掌握操作系统原理及算法的基础上,在进行硬件配置、软件设计及编程过程中,能够在资源和效率方面综合考虑,完善提高设计方案,提高利用操作系统知识解决实际问题的能力。

三、教学内容、要求及重难点第一章操作系统引论(3学时)教学要求:1.掌握操作系统的概念及功能,掌握操作系统的分类;2.掌握操作系统在计算机系统中的地位和作用;理解操作系统的大致运行过程;3.理解操作系统的特征;了解各种类型操作系统的特点及服务适应情况;4.了解操作系统的结构特征及发展概况,发展趋势。

教学重点:操作系统的概念、作用;操作系统的分类;操作系统的特征;操作系统的功能;操作系统的结构设计。

教学难点:操作系统的特征;操作系统的功能。

[实验名称]Linux系统管理及命令的使用[实验类型]验证型[实验要求]1.熟练Linux系统常用命令的使用;2.掌握Vi编辑器的使用方法;3.练习Linux shell的作用和主要分类,能编写简单的shell程序[实验学时]2学时第二章进程管理(10学时)教学要求:1.掌握进程的概念与特征;2.掌握进程的结构及进程控制的方法;3.掌握进程的同步与互斥,以及实现进程同步问题的硬件方法和软件方法;4.能用信号量机制解决进程的同步问题;5.掌握线程的基本概念;6.基本掌握利用管程解决同步问题的方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统程序设计课程设计报告课题: 请求分页式存储管理页面置换算法姓名:学号:同组姓名:专业班级:指导教师:设计时间:评阅意见:评定成绩:指导老师签名:年月日目录1. 系统描述 (3)2. 分析与设计 (3)2.1.系统功能模块图 (3)2.2.系统文件结构描述 (3)2.3.系统功能流程图 (4)2.4.UI设计以及操作说明: (4)2.5.测试数据及期望 (11)3.系统测试 (12)4.总结心得体会 (12)5.参考文献 (13)6.核心代码 (13)1. 系统描述系统使用.net framework 4.0开发的,图形用户界面使用winform程序设计,功能模块分别实现了请求分页式存储管理的LRU算法,FIFO 算法。

通过虚拟系统存储的概念和实现方法,进行运行的时候不需要把所有页面都装入内存中,只需要将部分页面调入内存,就可以运行。

在运行过程中,若要访问的页面不在内存中,则需用请求调入的功能将其装入内存中,如果此时内存中没有空白的物理块,就通过页面置换功能淘汰一个页面,根据LRU,FIFO两种淘汰算法来进行页面置换,并能计算出FIFO,LRU两种算法在不同内存容量中的的命中率。

系统运行时通过输入访问内存的顺序,以及分配的内存页面数,来进行二种算法的页面置换,实现了虚拟存储的功能和特点。

2. 分析与设计2.1.系统功能模块图图4.1 页式存储管理模块划分2.2.系统文件结构描述2.3.系统功能流程图开始还有指令?计算页号找到了吗?新页进入计算过程数组第一位,其余为一次下移计算命中率结束YNNY FIFO开始还有指令?计算页号找到了吗?比较现有页面计数项的大小,新页面替换最大项页面计算命中率结束YNNY LRU2.4.UI 设计以及操作说明:主窗体:#region访问顺序private void btnSure_Click(object sender, EventArgs e){if (txtOrder.Text.Equals("")){MessageBox.Show("访问顺序字符串不能为空", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);return;}order = txtOrder.Text;listBox1.Items.Clear();string[] page = order.Split(' ');foreach (string pg in page){listBox1.Items.Add(pg);}txtOrder.Text = "";allocation alca = new allocation();this.Hide();DialogResult d = alca.ShowDialog();if (d == DialogResult.OK){this.Show();btnAlloc.Enabled = true;btnFifo.Enabled = true;btnlru.Enabled = true;alpage = alca.page;}}#endregion输入访问内存顺序,点击确定:#region确定内存页分配private void button1_Click(object sender, EventArgs e){if (textBox1.Text.Equals("")){MessageBox.Show("内存页面数不能为空", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);return;}page = Convert.ToInt32(textBox1.Text.Trim());this.Close();}#endregion输入分配内存页面数,点击确定:点击FIFO置换:FIFO 算法:淘汰最先进入的页面,也就是淘汰进入内存中驻留时间最长的页面,先进先出。

FIFO 计算#region第二步,计算//第二步,计算//查看是否命中for (fangwenyemianshu = 0; fangwenyemianshu < cunchufangwenyemian.Length; fangwenyemianshu++) {//对于某一列进行处理lie = fangwenyemianshu;if (lie == 0)//如果为第台一列{cunchujisuanguocheng[0, lie] =Convert.ToInt32(cunchufangwenyemian[lie]);cunchushifoumingzhong[0] = 0;//没命中为a}else{//如果不为a第台一列shifoumingzhong = 0;//假设没命中for (hang = 0; hang < alpage; hang++){if (cunchujisuanguocheng[hang, lie - 1] == Convert.ToInt32(cunchufangwenyemian[lie])){shifoumingzhong = hang + 1;//如果相同,则是否命中为命中位置}}cunchushifoumingzhong[lie] = shifoumingzhong;if (lie != 0){if (shifoumingzhong != 0)//是否命中{ //如?果命中,则不变for (hang = 0; hang < alpage; hang++){cunchujisuanguocheng[hang, lie] = cunchujisuanguocheng[hang, lie - 1];//将上一列复制?过来? }}else{ //如果没有命中,则向下移一位,新的进来置换过程for (hang = 2; hang > 0; hang--){cunchujisuanguocheng[hang,lie]= cunchujisuanguocheng[hang - 1, lie - 1];}cunchujisuanguocheng[0,lie]=Convert.ToInt32(cunchufangwenyemian[lie]);}}}#endregionLRU 算法:最近久未使用的置换算法的替换规则,根据内存调入页面后的使用情况,该算法赋予页面一个访问字段,用来记录一个页面自上次访问以来所经过的时间,当需要淘汰一个页面时选择现有页面其时间值最大的进行淘汰。

Lru计算:for (int j = 0; j < alpage; j++)//行列小于分配内存页面时,不需要淘汰页{for (int k = 0; k < alpage; k++){for (fangwenyemianshu = 0; fangwenyemianshu <ref_chars.Length; fangwenyemianshu++){lie = fangwenyemianshu;if (lie == 0)//如果为a第一列{cunchujisuanguocheng[0, lie] =Convert.ToInt32(ref_chars[lie]);cunchushifoumingzhong[0] =0; }else{shifoumingzhong = 0;for (hang = 0; hang < alpage; hang++){if(cunchujisuanguocheng[hang, lie - 1] == Convert.ToInt32(ref_chars[lie])){ shifoumingzhong = hang + 1;//如果相同,则是否命中为a命中位置}}cunchushifoumingzhong[lie] = shifoumingzhong;}if (lie != 0){if (shifoumingzhong != 0)//是否命中{ //如果命中,则不变for (hang = 0; hang < alpage; hang++) {cunchujisuanguocheng[hang, lie] = cunchujisuanguocheng[hang, lie - 1];}}else{ //如果没有命中,则向下移一位,新的进来置换过程for (hang = 0; hang < alpage; hang++) {cunchujisuanguocheng[hang, lie] = cunchujisuanguocheng[hang, lie - 1];}cunchujisuanguocheng[lie, lie] = Convert.ToInt32(ref_chars[lie]);}}}}}bool flag = false;for (int loop = alpage; loop < ref_chars.Length; loop++)//需要淘汰页时需要癮计算替换{flag = false;for (int i = 0; i < alpage; i++){if ((Phy_Blk[i].data ==Convert.ToInt32(ref_chars[loop]))){flag = true;}}if (flag)//不缺页,不置换,但是要计数{for (int i = 0; i < alpage; i++){cunchushifoumingzhong[loop] = i;Phy_Blk[i].count = 0;for (int l = 0; l < i; l++){Phy_Blk[i].count++;}for (int k = i + 1; k < alpage; k++){Phy_Blk[k].count++;}} }else// 缺页,置换所有的页都不相等{for (int i = 0; i < alpage; i++){if (maxCount == Phy_Blk[i].count){Phy_Blk[i].data =Convert.ToInt32(ref_chars[loop]);cunchushifoumingzhong[loop] = 0;Phy_Blk[i].count = 0;hang = i;}}for (int l = 0; l < hang; l++){Phy_Blk[hang].count++;}for (int k = hang + 1; k < alpage; k++){Phy_Blk[k].count++;}}for (int hang = 0; hang < alpage; hang++){cunchujisuanguocheng[hang, loop] =Convert.ToInt32(Phy_Blk[hang].data);arryMax[hang] = Phy_Blk[hang].count;}maxCount = max(arryMax);}StringBuilder strFang = new StringBuilder();for (lie = 0; lie < fangwenyemianshu; lie++){strFang.Append(" " + ref_chars[lie]);txtFWYMS.Text = strFang.ToString();DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();column.HeaderText = ref_chars[lie].ToString();dataGridView1.Columns.Add(column);}#endregion2.5.测试数据及期望输入内存顺序分配物理块为:5 如 1 6 2 5 4 8 9 3 7 来计算缺页率为100%如 3 4 5 6 7 2 1 8 缺页率为85%,经过比较发现 LRU算法比FIFO 更加适用3.系统测试输入内存访问顺序为 1 6 2 5 4 8 9 3 7 分配页面数为4FIFO和LRU缺页率为100%图3.21 FIFO 页面置换图 3.2 LRU 页面置换4.总结心得体会通过这次课程设计,使自己更加深刻了解了虚拟存储管理的功能,以及如何实现,对LRU和FIFO两种算法也是理解更加彻底,锻炼了自己的实践能力。

相关文档
最新文档