当前位置:文档之家› 虚拟存储器管理

虚拟存储器管理

虚拟存储器管理
虚拟存储器管理

沈阳工程学院

学生实验报告

(课程名称:操作系统)

实验题目:虚拟存储器管理

班级计算机131 学号2013414126 姓名杨光成地点实训F608 指导教师吕海华王黎明

实验日期: 2015 年 5 月26 日

一、实验题目

模拟分页式虚拟存储管理实验。

二、实验要求

编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。

三、实验目的

通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。

四、实验原理分析

⑴页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。

⑵算法的说明

最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。

先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。

最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时间来决定淘汰哪一个页面。

⑶主要变量及函数说明如表1所示

表1 主要变量及函数说明表

PRA(void) 初始化

int findSpace(void) 查找是否有空闲内存

int findExist(int curpage) 查找内存中是否有该页面

int findReplace(void) 查找应予置换的页面

void display(void) 显示

void FIFO(void) FIFO算法

void LRU(void) LRU算法

void Optimal(void) OPTIMAL算法

void BlockClear(void) BLOCK恢复

struct pageInfor * block 物理块

struct pageInfor * page 页面号串

五、实验代码清单

1、主函数(如图1)

int main()

{

int c;

int m=0,t=0;

float n=0;

Pro p[L];

m=Input(m,p);//调用input函数,返回m值

cout<<"请输入可用内存页面数m(3~5): ";

do

{

cin>>M;

if(M>5||M<3)

cout<<"内存块m须在3~5之间,请重新输入m: ";

else break;

}while(1);

Pro *page=new Pro[M];

do{

for(int i=0;i

{

page[i].num=0;

page[i].time=m-1-i;

}

i=0;

cout<<"1:FIFO"<

cout<<"2:LRU"<

cout<<"3:OPT"<

cout<<"按其它键结束程序;"<>c;

return 0;

}

图1 2、FIFO页面置换(如图2)

if(c==1)//FIFO页面置换

{

n=0;

cout<<" ****************************************** "<

cout<

cout<<" FIFO算法情况如下: "<

cout<

cout<<" ****************************************** "<

while(i

{

if(Search(p[i].num,page)>=0)//当前页面在内存中

{ cout<

cout<<"不缺页"<

i++;//i加1

}

else //当前页不在内存中

{

if(t==M)t=0;

else

{

n++;//缺页次数加1

page[t].num=p[i].num;//把当前页面放入内存中

cout<

print(page);//打印当前页面

t++;//下一个内存块

i++;//指向下一个页面

}

}

}

cout<<"缺页次数:"<

}

图2

3、LRU页面置换(如图3)

if(c==2)//LRU页面置换

{

n=0;

cout<<" ****************************************** "<

cout<

cout<<" LRU算法情况如下: "<

cout<

cout<<" ****************************************** "<

{

int a;

t=Search(p[i].num,page);

if(t>=0)//如果已在内存块中

{

page[t].time=0;//把与它相同的内存块的时间置0

for(a=0;a

if(a!=t)page[a].time++;//其它的时间加1

cout<

cout<<"不缺页"<

}

else//如果不在内存块中

{

n++; //缺页次数加1

t=Max(page);//返回最近最久未使用的块号赋值给t

page[t].num=p[i].num;//进行替换

page[t].time=0;//替换后时间置为0

cout<

print(page);

for(a=0;a

if(a!=t)page[a].time++;//其它的时间加1

}

i++;

}

cout<<"缺页次数:"<

}

图3

4、OPT页面置换(如图4)

if(c==3)//OPT页面置换

{

n=0;

cout<<" ****************************************** "<

cout<

cout<<" OPT算法情况如下:"<

cout<

cout<<" ****************************************** "<

while(i

{

if(Search(p[i].num,page)>=0)//如果已在内存块中

{

cout<

cout<<"不缺页"<

i++;

}

else//如果不在内存块中

{

int a=0;

for(t=0;t

if(page[t].num==0)a++;//记录空的内存块数

if(a!=0)//有空内存块

{

int q=M;

for(t=0;t

if(page[t].num==0&&q>t)q=t;//把空内存块中块号最小的

找出来

page[q].num=p[i].num;

n++;

cout<

print(page);

i++;

}

else

{

int temp=0,s;

for(t=0;t

if(temp

{

temp=Count(page,i,t,p);

s=t;

}//把找到的块号赋给s

page[s].num=p[i].num;

n++;

cout<

print(page);

i++;

}

}

}

cout<<"缺页次数:"<

}

图4

五、成绩评定

优良中及格不及格出勤

内容

格式

分析

总评

指导教师:

年月日

操作系统实验五虚拟存储器管理

操作系统实验 实验五虚拟存储器管理 学号1115102015 姓名方茹 班级11 电子A 华侨大学电子工程系

实验五虚拟存储器管理 实验目的 1、理解虚拟存储器概念。 2、掌握分页式存储管理地址转换盒缺页中断。 实验内容与基本要求 1、模拟分页式存储管理中硬件的地址转换和产生缺页中断。 分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说 明哪些页已在主存,哪些页尚未装入主存。作业执行 时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转 换机构按页号查页表,若该页对应标志为“ 1”,则表示该页 已在主存,这时根据关系式“绝对地址 =块号×块长 +单元号”计算出欲访问的主 存单元地址。如果块长为 2 的幂次,则可把块号作为高地址部分,把单元号作为低 地址部分,两者拼接而成绝对地址。若访问的页对 应标志为“ 0”,则表示该页不在主存,这时硬件发“缺页中断”信号, 有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后 再重新执行这条指令。设计一个“地址转换”程序来模拟硬件的地址转 换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执 行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主 存时,则输出“ * 该页页号”,表示产生了一次缺页中断。 2、用先进先出页面调度算法处理缺页中断。 FIFO 页面调度算法总是淘汰该作业中最先进入主存的那一页,因此可以用一个数组来表示该作业已在主存的页面。假定作业被选中时, 把开始的 m 个页面装入主存,则数组的元素可定为m 个。 实验报告内容 1、分页式存储管理和先进先出页面调度算法原理。 分页式存储管理的基本思想是把内存空间分成大小相等、位置固定

四川大学 操作系统上机实验 实验五 Windows虚拟存储器管理

实验报告 实验名称:Windows虚拟存储器管理 实验时间:2013年5月27日 实验人员:____郑笑凡___(姓名)__1143041243__(学号)____2011____(年级) 实验目的:1、了解Windows 2000/XP的内存管理机制,掌握页式虚拟存储技术。 2、理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。 3、学会使用Windows 2000/XP下内存管理的基本API函数 实验环境:windows xp 实验步骤: 1、下载virtumem.cpp; 2、建立工程,将virtumen.cpp加入; 3、编译工程,观察结果,确信六种状态都出现至少一次,必要时可改程 序,方便观察结果; 4、看懂程序,按要求另写一段小程序; 5、编译,执行,观察结果。 6,总结。 实验陈述: 1、基础知识: pagefile.sys文件的位置在:__安装的系统盘根目录下____________________________________此文件的作用:____实现物理内存的扩展__________________________________________________ 改变此文件大小的方法:右击”我的电脑”,依次选择”属性”—“高级”—“性能选项”— “更改”_______________________________________ 虚拟地址空间中的页面分为:提交页面,保留页面,空闲页面 页面的操作可以分为:保留、提交、回收、释放、加锁 2、编程准备. 页面属性是在结构体MEMORY_BASIC_INFORMATION_的字段AllocationProtect 和字段中Protect体现出来的。 简述VirtualFree,VirtualPtotect,VirtualLock,VirtualUnlock,VirtualQuery的作用:_ VirtualFree:__释放虚存___________________________________________________ VirtualPtotect:_保留虚存_________________________________________________ VirtualLock:___加锁虚存_________________________________________________ VirtualUnlock:_解锁虚存________________________________________________ VirtualQuery:____查询虚存_______________________________________________ 3、编程 1)将virtumem.cpp加入工程,编译,执行。 是否能编译成功?是 请描述运行结果:

OS实验指导四——虚拟存储器管理

OS实验指导四——虚拟存储器管理

————————————————————————————————作者:————————————————————————————————日期: 2

《操作系统》实验指导四 开课实验室:A207、A209 2015/11/23 、2015/11/24 实验类型设计 实验项目(四)虚拟存储器管理实验 实验学时 4 一、实验目的 设计一个请求页式存储管理方案,并编写模拟程序实现。 二、设备与环境 1. 硬件设备:PC机一台 2. 软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发 环境,如C \C++\Java 等编程语言环境。 三、实验要求 1) 上机前认真复习页面置换算法,熟悉FIFO算法和LRU页面分配和置换算法的过程; 2) 上机时独立编程、调试程序; 3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行 结果截图)。 四、实验内容 1、问题描述: 设计程序模拟FIFO和LRU页面置换算法的工作过程。假设内存中分配给每个进程的最小物理块数为m,在进程运行过程中要访问的页面个数为n,页面访问序列为P1, … ,Pn,分别利用不同的页面置换算法调度进程的页面访问序列,给出页面访问序列的置换过程,并计算每种算法缺页次数和缺页率。 2、程序具体要求如下: 编写程序用来模拟虚拟页式存储管理中的页面置换 要求: 1)快表页面固定为4块 2)从键盘输入N个页面号 3)输出每次物理块中的页面号和缺页次数,缺页率 4)实现算法选择

3、程序流程图 3、源程序参考: (1)FIFO 算法部分 #include "stdio.h" #define n 12 #define m 4 void main() { int ym[n],i,j,q,mem[m]={0},table[m][n]; char flag,f[n]; printf("请输入页面访问序列\n "); for(i =0;i

虚拟存储器管理 页面置换算法模拟实验

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理A 》 题目:虚拟存储器管理 页面置换算法模拟实验 班级:软件*** 学号:20**1228** 姓名:****

一、实验目的与要求 1.目的: 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 2.要求: 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 二、实验说明 1.设计中虚页和实页的表示 本设计利用C语言的结构体来描述虚页和实页的结构。 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实 页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页 的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。 在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号, 取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。 2.关于缺页次数的统计 为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内,此虚页被命中,count加1。最终命中率=count/20*100%。 3.LRU算法中“最近最久未用”页面的确定

存储管理实验报告

实验三、存储管理 一、实验目的: ? 一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关的,通过本实验理解在不同的存储管理方式下应怎样实现主存空间的分配和回收。 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验理解在分页式存储管理中怎样实现虚拟存储器。 在本实验中,通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 二、实验题目: 设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。 对分区的管理法可以是下面三种算法之一:(任选一种算法实现) 首次适应算法 循环首次适应算法 最佳适应算法 三.实验源程序文件名:cunchuguanli.c

执行文件名:cunchuguanli.exe 四、实验分析: 1)本实验采用可变分区管理,使用首次适应算法实现主存的分配和回收 1、可变分区管理是指在处理作业过程中建立分区,使分区大小正好适合作业的需求,并 且分区个数是可以调整的。当要装入一个作业时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入,作业等待。随着作业的装入、完成,主存空间被分成许多大大小小的分区,有的分区被作业占用,而有的分区是空闲的。 为了说明那些分区是空闲的,可以用来装入新作业,必须有一张空闲说明表 ? 空闲区说明表格式如下:? 第一栏 第二栏 其中,起址——指出一个空闲区的主存起始地址,长度指出空闲区的大小。 长度——指出从起始地址开始的一个连续空闲的长度。 状态——有两种状态,一种是“未分配”状态,指出对应的由起址指出的某个长度的区域是空闲区;另一种是“空表目”状态,表示表中对应的登记项目是空白(无效),可用来登记新的空闲区(例如,作业完成后,它所占的区域就成了空闲区,应找一个“空表目”栏登记归还区的起址和长度且修改状态)。由于分区的个数不定,所以空闲区说明表中应有适量的状态为“空表目”的登记栏目,否则造成表格“溢出”无法登记。 2、当有一个新作业要求装入主存时,必须查空闲区说明表,从中找出一个足够大的空闲区。 有时找到的空闲区可能大于作业需要量,这时应把原来的空闲区变成两部分:一部分分

南京中医药大学虚拟存储器管理实验

实验三虚拟存储管理 实验性质:验证 建议学时:3 实验目的: 存储管理的主要功能之一是合理的分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法。 预习内容: 阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。 实验内容: (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分。 具体的实施方法是: ①在[0,319]的指令地址之间随机选取一起点m; ②顺序执行一条指令,即执行地址为m+1的指令; ③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; ④顺序执行一条指令,其地址为m’+1; ⑤在后地址[m’+2,319]中随机选取一条指令并执行; ⑥重复上述步骤,直至执行320次指令。 (2)将指令序列变换成页地址流。 设:①页面大小为1K; ②用户内存容量为10块到32块; ③用户虚存容量为32K; 在用户虚存中,按每页存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条~第9条指令为第0页(对应的虚存地址为[0,9]); 第10条~第19条指令为第1页(对应的虚存地址为[10,19]); …… 第310条~第319条指令为第31页(对应的虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 (3)计算并输出下述各种算法在不同的内存容量下的缺页率。 ①先进先出的算法(FIFO); ②最近最少使用算法(LRU); ③最佳淘汰法(OPT):先淘汰最不常用的页地址; ④最少访问页面算法(LFU)。 缺页率=(页面失效次数)/(页地址流长度)= 缺页中断次数/ 320 在本实验中,页地址流的长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

虚拟存储器管理实验报告

淮海工学院计算机科学系实验报告书 课程名:《操作系统》 题目:虚拟存储器管理 页面置换算法模拟实验 班级: 学号: 姓名:

一、实验目的与要求 1.目的: 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 2.要求: 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 二、实验说明 1.设计中虚页和实页的表示 本设计利用C语言的结构体来描述虚页和实页的结构。 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。 在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。 2.关于缺页次数的统计 为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内, 此虚页被命中,count加1。最终命中率=count/20*100%。 3.LRU算法中“最近最久未用”页面的确定 为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问 一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前

第7章虚拟存储器管理

第7章虚拟存储器管理 一、选择 1.虚拟存储器的最大容量是由决定的。 A.内、外存容量之和B.计算机系统的地址结构 C.作业的相对地址空间D.作业的绝对地址空间2.采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、3、4、1、2、5、1、2、3、4、5、6。运行时会产生次缺页中断。 1 2 3 4 1 2 5 1 2 3 4 5 6 1 2 3 4 1 2 5 3 4 6 1 2 3 4 1 2 5 3 4 1 2 3 4 1 2 5 3 1 2 3 4 5 6 7 8 9 10 1 2 3 4 1 2 5 A.7 B.8 C.9 D.10 3.实现虚拟存储器的目的是。 A.进行存储保护B.允许程序浮动 C.允许程序移动D.扩充主存容量 4.作业在执行中发生了缺页中断,那么经中断处理后,应返回执行指令。 A.被中断的前一条B.被中断的那条 C.被中断的后一条D.程序第一条 5.在实行分页式存储管理系统中,分页是由完成的。 A.程序员B.用户C.操作员D.系统6.下面的页面淘汰算法有时会产生异常现象。 A.先进先出B.最近最少使用C.最不经常使用D.最佳7.在下面所列的诸因素中,不对缺页中断次数产生影响的是。 A.内存分块的尺寸B.程序编制的质量 C.作业等待的时间D.分配给作业的内存块数 二、问答 1.一个虚拟地址结构用24个二进制位表示。其中12个二进制位表示页面尺寸。试问这种虚拟地址空间总共多少页?每页的尺寸是多少? 解:24-12=12,有212个页。每页有212个字节。 2.什么叫虚拟存储器?怎样确定虚拟存储器的容量? 3.为什么请求分页式存储管理能够向用户提供虚拟存储器? 4.试述缺页中断与一般中断的区别。

实验四 虚拟存储器管理实验

实验四虚拟存储器管理实验 ◆实验名称:存储器管理实验 ◆仪器、设备:计算机 ◆参考资料:操作系统实验指导书 ◆实验目的: 设计一个请求页式存储管理方案,并编写模拟程序实现。 ◆实验内容: 编写程序用来模拟虚拟页式存储管理中的页面置换 要求: 1.快表页面固定为4块 2.从键盘输入N个页面号 3.输出每次物理块中的页面号和缺页次数,缺页率 ◆实验原理、数据(程序)记录: #define PAGES 4 /* 物理块数*/ #define N 16 /*最多输入的页面号*/ int pages[PAGES][2]; /*page[i][0]保存页面号,page[i][1]保存页面存留时间*/ int queue[N]; /*页面号数组*/ void initialise(void) /*------------初始化:快表和页面号数组++++++++++++++*/ { int i; for(i=0;i

实验四 虚拟存储器管理

实验四虚拟存储器管理 一、实验目的 1、为了更好的配合《操作系统》有关虚拟存储器管理章节的教学。 2、加深和巩固学生对于请求页式存储管理的了解和掌握。 3、提高学生的上机和编程过程中处理具体问题的能力。 二、实验内容 请求页式存储管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 1.通过随机数产生一个指令序列,共320条指令。 指令的地址按下述原则生成: a.50%的指令是顺序执行的。 b.25%的指令是均匀分布在前地址部分。 c.25%的指令是均匀分布在后地址部分。 具体的实施方法是: a.在[0,319]指令地址之间随机选取一起点; b.顺序执行一条指令,即执行地址为m+1的指令; c.在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; d.顺序执行一条指令,其地址为m’; e.在后地址[m’+2,319]中随机选取一条指令并执行; f.重复上述步骤a~e,直到执行320次指令。 2.将指令序列变换成为页地址流 设: a.页面大小为1K; b.用户内存容量为4到32页; c.用户虚存容量为32K。 在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条~第9条指令为第0页,对应虚存地址为[0,9];

第10条~第19条指令为第1页,对应虚存地址为[10,19] . . 第310条~第319条指令为第31页,对应虚存地址为[310,319]。 按以上方式,用户指令可组成32页。 3、输出下述各种算法在不同内存容量下的命中率。 a.先进先出的算法; b.最近最少访问算法; c.最近最不经常使用算法。 其中:命中率=1-页面失效次数/页地址流长度 页地址流长度为320,页面失效次数为每次访问相同指令时,该指令所对应的页不在内存的次数。 三、实验要求 实验课时4学时。要求画出利用各种算法置换时的置换图,并可以分析说明。编程可分 为几个部分完成:指令的分页,算法的选择,算法的实现,命中率的输出。编写程序前可先 阅读Linux源代码页面换入: static int do_swap_page(struct mm_struct * mm, struct vm_area_struct * vma,unsigned long address, pte_t * page_table,swp_entry_t entry,int write_access) { struct page *page = lookup_swap_cache(entry); pte-t pte; if (!pgae){ lock_kernel( ); swapin_readahead(entry); page = read_swap_cache(entry); unlock_kernel( ); if (!page) return -1;

实验三 虚拟存储器管理

实验三虚拟存储器管理 一、实验目的 为了使大的进程(其地址空间超过主存可用空间)或多个进程的地址空间之和超过实际主存空间时,仍能运行,引入了虚拟存储器的概念。使进程的一部分地址空间在主存,另一部分在辅存,由操作系统实现多级存储器的自动管理,实现主存空间的自动覆盖。模拟请求分页虚拟存储器管理技术中的硬件地址变换、缺页中断以及页式置换算法,处理缺页中断。 通过本实验,使学生对请求分页存储管理的概念有一个清楚的理解。 二、实验内容 1、模拟请求分页存储管理中的硬件地址变换的过程 (1)请求分页虚拟存储器管理技术是把进程地址空间的全部信息存放在磁盘对换区上。当进程被选中运行时,先把进程的开始几页装入主存并启动运行。为此在为进程建立页表时,应说明哪些页已在主存,哪些页不在主存。页表的格式如表1 所示。 在表1中 ①"标志位"表示对应页是否已经装入主存的标志: "0"表示对应页未装入主存;"1"表示对应页已装入主存。 ②"主存块号"表示该页对应的主存块号。 ③"修改位"指示该页进主存后是否修改过的标志。 ④"外存地址"表示该页所在的外存地址。 设计一个主存分块表,假定分配给进程的主存块数为M,且该进程开始的M页已装入主存。 (2)进程执行时,指令中的逻辑地址指出指令或操作数的地址中的页号和页内地址。硬件地址转换机构按页号查页表。 ①若该页的有效位为"1" ,表示该页已在主存,从而找到该页对应的主存块号。根据如下的关系式,计算出欲访问的主存地址: 绝对地址=块号×块的长度+页内地址 由于页的大小为2 的整次幕,所以只要将块号与页内地址相拼接,放入主存地址寄存器,形成绝对地址。不去模拟指令的执行,而是输出被转换的地址即可。 ②若该页的有效位为"0" ,对应的页不在主存,由硬件产生缺页中断,转操作系统处理。这里不去设计缺页处理程序,仅输出"*该页号的页不在主存,产生缺页中断"即可,以表示产生了一次缺页中断。 假定主存的每块长度为128个字节。现有一个具有8页的进程,系统为它分配了4 个主存块(即m=4)。其中第0~3页已经装入主存。该进程的页表如表2 所示,进程执行的指令序列如表3 所示,地址变换算法流程如图1所示。

实习五虚拟存储器实验报告

实习五虚拟存储器 一、实习内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 二、实习目的 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实习帮助同学理解在分页式存储管理中怎样实现虚拟存储器。 三、实习题目 本实习有三个题,其中第一题必做,第二、第三题中可任选一个。 第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 [提示]: (1) 分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为: 其中,标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号——用来表示已经装入主存的页所占的块号。 在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。 (2) 作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式: 绝对地址=块号 块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。按计算出的绝对地址可以取到操作数,完成一条指令的执行。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,由操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。 (3) 设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。该模拟程序的算法如图5-1。 (4) 假定主存的每块长度为128个字节;现有一个共七页的作业,其中第0页至第3

虚拟存储器管理

沈阳工程学院 学生实验报告 (课程名称:操作系统) 实验题目:虚拟存储器管理 班级计算机131 学号2013414126 姓名杨光成地点实训F608 指导教师吕海华王黎明 实验日期: 2015 年 5 月26 日

一、实验题目 模拟分页式虚拟存储管理实验。 二、实验要求 编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。 三、实验目的 通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。 四、实验原理分析 ⑴页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。 ⑵算法的说明 最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。 先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。 最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时间来决定淘汰哪一个页面。 ⑶主要变量及函数说明如表1所示 表1 主要变量及函数说明表 PRA(void) 初始化 int findSpace(void) 查找是否有空闲内存 int findExist(int curpage) 查找内存中是否有该页面 int findReplace(void) 查找应予置换的页面 void display(void) 显示 void FIFO(void) FIFO算法

【VR虚拟现实】实验虚拟存储器

实验9、Windows虚拟内存 1 背景知识 在Windows环境下,4GB的虚拟地址空间被划分成两个部分:低端2GB提供给进程使用,高端2GB提供给系统使用。这意味着用户的应用程序代码,包括DLL以及进程使用的各种数据等,都装在用户进程地址空间内(低端2GB)。用户过程的虚拟地址空间也被分成三部分: 1)虚拟内存的已调配区(committed):具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。 2)虚拟内存的保留区(reserved):没有备用的物理内存,但有一定的访问权限o 3)虚拟内存的自由区(free):不限定其用途,有相应的PAGE_NOACCESS权限。 与虚拟内存区相关的访问权限告知系统进程可在内存中进行何种类型的操作。例如,用户不能在只有PAGE_READONLY权限的区域上进行写操作或执行程序;也不能在只有PAGE_EXECUTE权限的区域里进行读、写操作。而具有PAGE_NOACCESS权限的特殊区域,则意味着不允许进程对其地址进行任何操作。 在进程装入之前,整个虚拟内存的地址空间都被设置为只有PAGE_NOACCESS权限的自由区域。当系统装入进程代码和数据后,才将内存地址的空间标记为已调配区或保留区,并将诸如EXECUTE、READWRITE和READONLY的权限与这些区域相关联。 如表1所示,给出了MEMORY_BASIC_INFORMATION的结构,此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态,其中State项表明这些区域是否为自由区、已调配区或保留区;Protect项则包含了Windows系统为这些区域添加了何种访问保护;Type项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存。

操作系统实验5_虚拟存储器管理

实验五主虚拟存储器管理 一、实验内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 二、实验目的 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储器。 三、实验题目 本实验有三个题,其中第一题必做,第二、第三题中可任选一个。 第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 [提示]: (1) 分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式为: 其中,标志——用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号——用来表示已经装入主存的页所占的块号。 在磁盘上的位置——用来指出作业副本的每一页被存放在磁盘上的位置。 (2) 作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式:绝对地址=块号 块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。按计算出的绝对地址可以取到操作数,完成一条指令的执行。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,由操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。 (3) 设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“*该页页号”,表示产生了一次缺页中断。该模拟程序的算法如图5-1。 (4) 假定主存的每块长度为128个字节;现有一个共七页的作业,其中第0页至第3页已经装入主存,其余三页尚未装入主存;该作业的页表为:

操作系统实验3虚拟存储器管理

实验报告 ⒈实验题目 模拟分页式虚拟存储管理实验。 2.实验要求 编写一段程序来模拟页面置换算法。要求能分别显示最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法的置换过程。 3. 实验目的 通过本实验帮助学生理解虚拟存储器的工作方法。了解分页式存储管理里中各页面置换算法是怎样实现的,各算法有怎样的优缺点。 ⒋实验原理分析 ⑴页面置换算法是在分页存储管理方式中为了合理的将进程运行所需的页面调入内存而产生的算法。一个好的页面转换算法,应具有较低的页面更换频率。最常见的页面置换算法有最佳(Optimal)置换算法、先进先出(FIFO)页面置换算法和最近最久未使用(LRU)置换算法。 ⑵算法的说明 最佳置换算法:选择以后永不使用或是在最长时间内不再被访问的页面作为被淘汰的页面。这种算法通常可保证获得最低的缺页率,但因为内存中哪个页面是以后永不使用的是无法预知的,所以该算法是无法实现的。 先进先出页面置换算法:选择内存中驻留时间最长的页面作为被淘汰的页面。该算法实现简单,只需将调入内存中的页面链成一个队列,并设置一个指针指向最老的页面即可。 最近最久未使用置换算法:选择最近最久未使用的页面作为被淘汰的页面。该算法需要为每个页面设置一个访问字段用来记录页面上次被访问的时间,通过这个时间来决定淘汰哪一个页面。 ⑶主要变量及函数说明如表1所示 表1 主要变量及函数说明表 PRA(void) 初始化 int findSpace(void) 查找是否有空闲内存 int findExist(int curpage) 查找内存中是否有该页面 int findReplace(void) 查找应予置换的页面 void display(void) 显示

操作系统-实验六虚拟存储器实验报告

计算机与信息工程学院实验报告 一、实验内容 实验一:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 [提示] (1)分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页 其中,标志----用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号----用来表示已经装入主存的页所占的块号。 在磁盘上的位置----用来指出作业副本的每一页被存放在磁盘上的位置。 (2)作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式: 绝对地址=块号×块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分, 把单元号作为低地址部分,两者拼接而成绝对地址。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上 的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。

(3)设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“* 该页页号”,表示产生了一次缺页中断。 该模拟程序的算法 (4)假定主存的每块长度为128个字节;现有一个共七页的作业,其中第0页至第3页已经装入主存,其余三页尚未装入主存;该作业的页表为: (5)运行设计的地址转换程序,显示或打印运行结果。因仅模拟地址转换,并不模拟指令的执行,故可不考虑上述指令序列中的操作。 实验二:用先进先出(FIFO)页面调度算法处理缺页中断。 [提示]: (1)在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用FIFO页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表页表中对应页的标志。 (2)FIFO页面调度算法总是淘汰该作业中最先进入主存的那一页,因此可以用一个数组来表示该作业已在主存的页面。假定作业被选中时,把开始的m个页面装入主存,则数组的元素可定为m个。例如: P[0],P[1],….,P[m-1] 其中每一个P[i](i=0,1,….,m-1)表示一个在主存中的页面号。它们的初值为:P[0]:=0,P[1]:=1,….,P[m-1]:=m-1 用一指针k指示当要装入新页时,应淘汰的页在数组中的位置,k的初值为“0”。 当产生缺页中断后,操作系统选择P[k]所指出的页面调出,然后执行: P[k]:=要装入页的页号 k:=(k+1) mod m 再由装入程序把要访问的一页信息装入到主存中。重新启动刚才那条指令执行。

页式虚拟存储器管理中地址转换和缺页中断

实验题目:页式虚拟存储器管理中地址转换和缺页中断 一、实验目的 1、深入了解页式存储管理如何实现地址转换; 2、进一步认识页式虚拟存储管理中如何实现缺页中断。 二、实验预备知识 1、页式存储管理中地址转换的方法; 2、页式虚拟存储的缺页中断处理方法。 三、实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。 假定内存64KB,每个内存块1K(1024字节),作业最大支持到64KB,系统中每个作业分得内存块4块。 [提示] 1、页式存储管理中地址转换过程:假设内存块的大小为2n字节,内存大小为2m字节和逻辑地址 m位,则进行地址转换时,首先从逻辑地址中的高m-n位中取得页号,然后根据页号查页表,得到块号,并将块号放入物理地址的高m-n位,最后从逻辑地址中取得低n位放入物理地址的低n位就得到了物理地址,实验中使用软件模拟地址的转换过程,模拟地址转换的流程如下:

2、缺页处理过程 (1)根据当前执行指令中逻辑地址的页号查页表,判断该页是否在主存储器中,若该页标志为“0”,形成缺页中断。中断装置通过交换PSW让操作系统的中断处理程序占用处理机; (2)操作系统处理缺页中断的方法就是查内存分配表,找一个空闲内存块;若无空闲块,查找表,选择一个已在内存的页面,把它暂时调出内存。若在执行过程中该页被修改过,则需将该页信息写回磁盘,否则不必写回; (3)找出该页的磁盘位置,启动磁盘读出该页信息,把磁盘上读出的信息装入到第2步找到内存块,修改页表中该页的标志为“1”; (4)由于产生缺页中断的那条指令没有执行完,所以页面装入后应重新执行被中断的指令。当重新执行该指令时,由于要访问的页面已在内存中,所以可正常执行。

第五章虚拟存储器-题库及(有答案)

第5章虚拟存储器-选择题参考答案 一、单项选择题 1.【2012统考真题】下列关于虚拟存储器的叙述中,正确的是() A.虚拟存储只能基于连续分配技术 B 虚拟存储只能基于非连续分配技术 C.虚拟存储容量只受外存容量的限制 D.虚拟存储容量只受内存容量的眼制 2.请求分页存储管理中,若把页面尺寸增大一倍而且可客纳的最大页数不变则在程序顺序执行时缺页中断次数 会() A.增加 B 减少 C.不变 D.可能增加也可能减少 3.进程在执行中发生了缺页中断,经操作系统处理后,应让其执行()指令 A.被中断的前一条 B 被中断的那一条 C.被中断的后一条 D.启动时的第一条 4.【2011统考真题】在缺页处理过程中,操作系统执行的操作可能是() Ⅰ.修改页表Ⅱ.磁盘1O Ⅲ.分配页框 A.仅Ⅰ、Ⅱ B.仅Ⅱ C.仅Ⅲ D Ⅰ、Ⅱ和Ⅲ 5.【2013统考真题】若用户进程访问内存时产生缺页,则下列选项中,操作系回 统可能执行的操作是() Ⅰ.处理越界错Ⅱ.置换页Ⅲ.分配内存 A.仅Ⅰ、Ⅱ B 仅Ⅱ、Ⅲ C.仅Ⅰ、Ⅲ D.Ⅰ、Ⅱ和Ⅲ 6.虚拟存储技术是() A.补充内存物理空间的技术 B 补充内存逻辑空间的技术 C.补充外存空间的技术 D.扩充输入/输出缓冲区的技术 7.以下不属于虚拟内存特征的是() A 一次性 B.多次性 C.对换性 D.离散性 8.为使虚存系统有效地发挥其预期的作用,所运行的程序应具有的特性是() A.该程序不应含有过多的O操作 B.该程序的大小不应超过实际的内存容量 C 该程序应具有较好的局部性 D.该程序的指令相关性不应过多 9.()是请求分页存储管理方式和基本分页存储管理方式的区别 A.地址重定向 B 不必将作业全部装入内存 C.采用快表技术 D.不必将作业装入连续区城 10.下面关于请求页式系统的页面调度算法中,说法错误的是() A.一个好的页面调度算法应减少和迎免抖动现象

第五章虚拟存储器附答案

第五章虚拟存储器 一、单项选择题 1.虚拟存储器的最大容量___。 *A. 为内外存容量之和 B. 由计算机的地址结构决定(((实际容量 C. 是任意的 D. 由作业的地址空间决定 虚拟存储器是利用程序的局部性原理,一个作业在运行之前,没有必要全部装入内存,而只 将当前要运行那部分页面或段装入便可以运行,其他部分放在外部存储器内,需要时再从外 存调入内存中运行,首先它的容量必然受到外存容量的限制,其次寻址空间要受到计算机地 址总线宽度限制。最大容量(逻辑容量)收内外存容量之和决定,实际容量受地址结构决定。2.在虚拟存储系统中,若进程在内存中占 3 块(开始时为空),采用先进先出页面淘汰 算法,当执行访问页号序列为 1﹑ 2﹑ 3﹑ 4﹑ 1﹑2﹑ 5﹑ 1﹑ 2﹑ 3﹑4﹑ 5﹑ 6 时,将 产生___次缺页中断。(开始为空,内存中无页面, 3 块物理块一开始会发生三次缺页。) A.7 B.8 C.9 3. 实现虚拟存储器的目的是___ A. 实现存储保护 B. 实现程序浮动 D. 10 . C. 扩充辅存容 量 D. 扩充主存容量 4.作业在执行中发生了缺页中断, 经操作系统处理后 , 应让其执行___指令 . (书本 158 页,( 2)最后一句话) A. 被中断的前一条 B. 被中断 的 C. 被中断的后一 条 D. 启动时的第一条 5.在请求分页存储管理中,若采用FIFO 页面淘汰算法,则当分配的页面数增加时, 断的次数 ________。( 在最后一题做完后再作答)答案错误选择: D 缺页中 A.减少B. 增 加 C. 无影响 D. 可能增加也可能减少 6.虚拟存储管理系统的基础是程序的________理论 . A. 局部性 B. 全局 性 C. 动态 性 D. 虚拟性 7. 下述 _______页面淘汰算法会产生Belad y 现象 . A. 先进先出* B. 最近最少使 用 C. 最近不经常使 用 D. 最佳 所谓 Belady 现象是指:在分页式虚拟存储器管理中,发生缺页时的置换算法采用 FIFO(先 进先出)算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面 数增多但缺页率反而提高的异常现象。 二. 填空题 1.假设某程序的页面访问序列为1. 2. 3. 4. 5. 2. 3. 1. 2. 3. 4. 5. 1. 2. 3. 4 且开始执行时主 存中 没有页面,则在分配给该程序的物理块数是3 且采用 FIFO 方式时缺页次数是 ____13____; 在分配给程序的物理块数是 4 且采用 FIFO 方式时,缺页次数是 ___14______; 在分配给程序

相关主题
文本预览
相关文档 最新文档