实验四__页式虚拟存储管理中地址转换和缺页中断

实验四__页式虚拟存储管理中地址转换和缺页中断
实验四__页式虚拟存储管理中地址转换和缺页中断

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

1.实验目的

深入了解页式存储管理如何实现地址转换;

进一步认识页式虚拟存储管理中如何处理缺页中断。

2.实验预备知识

页式存储管理中的地址转换的方法;

页式虚拟存储的缺页中断处理方法。

3.实验内容

编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所作工作进程测试。

假定主存64KB ,每个主存块1024字节,作业最大支持到64KB ,系统中每个作业分得主存块4块。

4.提示与讲解

页式存储管理中地址转换过程很简单,假定主存块的大小为2n 字节,主存大小为2m '字节和逻辑地址m 位,则进行地址转换时,首先从逻辑地址中的高m-n 位中取得页号,然后根据页号查页表,得到块号,并将块号放入物理地址的高m '-n 位,最后从逻辑地址中取得低n 位放入物理地址的低n 位就得到了物理地址,过程如图2.61所示。

图2.6 页式存储管理系统地址转换示意图

地址转换是由硬件完成的,实验中使用软件程序模拟地址转换过程,模拟地址转换的流程图如图2.7所示(实验中假定主存64KB ,每个主存块1024字节,即n=10,m'=16,物理地址中块号6位、块内地址10位;作业最大64KB ,即m=16,逻辑地址中页号6位、页内地址10位)。

在页式虚拟存储管理方式中,作业信息作为副本放在磁盘上,作业执行时仅把作业信息的部分页面装入主存储器,作业执行时若访问的页面在主存中,则按上述方式进行地址转换,若访问的页面不在主存中,则产生一个“缺页中断”,由操作系统把当前所需的页面装入主存储器后,再次执行时才可以按上述方法进行地址转换。页式虚拟存储管理方式中页表除页

逻辑地址

号和该页对应的主存块号外,至少还要包括存在标志(该页是否在主存),磁盘位置(该页的副本在磁盘上的位置)和修改标志(该页是否修改过)。这样,在实验中页表格式如图2.7所示。

页表用数组模拟,在实验中页表数据结构定义为:

define n 32 //实验中假定的页表长度,页表的长度实际上是由系统按照作业长度决定的

struct

{int lnumber; //页号

int flag; //表示该页是否在主存,“1”表示在主存,“0”表示不在主存

int pnumber; //该页所在主存块的块号

int write; //该页是否被修改过,“1”表示修改过,“0”表示没有修改过

int dnumber; //该页存放在磁盘上的位置,即磁盘块号

}page[n]; //页表定义

图2.7 模拟地址转换的流程图

缺页处理过程简单阐述如下:

①根据当前执行指令中逻辑地址中的页号查页表,判断该页是否在主存储器中,若该页标志为“0”,形成缺页中断。中断装置通过交换PSW让操作系统的中断处理程序占用处理器;

②操作系统处理缺页中断的方法就是查主存分配表,找一个空闲主存块;若无空闲块,查页表,选择一个已在主存的页面,把它暂时调出主存。若在执行过程中该页被修改过,则需将该页信息写回磁盘,否则不必写回;

③找出该页的磁盘位置,启动磁盘读出该页信息,把磁盘上读出的信息装入第2步找到的主存块,修改页表中该页的标志为“1”;

④由于产生缺页中断的那条指令没有执行完,所以页面装入后应重新执行被中断的指令。当重新执行该指令时,由于要访问的页面已在主存中,所以可正常执行。

关于第②步的查找装入新页面的主存块的处理方式,不同系统采用的策略可能有所不同,这里采用局部置换算法,就是每个作业分得一定的主存块,只能在分得的主存块内查找空闲块,若无空闲主存块,则从该作业中选择一个页面淘汰出主存。实验中使用局部置换算法。

使用局部置换算法时,存在这样一个问题:就是在分配给作业主存空间时,装入哪些页?有的系统采取不装入任何一页,当执行过程中需要时才将其调入。有的系统采用页面预置的方法,就是估计可能某些页面会先用到,在分配主存块后将这些页面装入。实验中,采用第二种方法,分配主存空间时将前几页调入主存,假定系统中每个作业分得主存块m(m=4)块,则将第0~m-1页装入主存。

因为是模拟硬件工作,所以实验中如果访问的页不在主存时,则输出该页页号,表示硬件产生缺页中断,然后直接转去缺页中断处理;由于采用页面预置方法,在给定的主存块中一定无空闲块,只能淘汰已在主存的一页;没有启动磁盘的工作,淘汰的页需要写回磁盘时,用输出页号表示,调入新的一页时,将该页在页表中的存在标志置为“1”,输出页号表示将该页调入主存。

图2.8 采用先进先出页面置换算法的缺页中断流程图

主存中无空闲块时,为装入一个页面,必须按某种算法从已在主存的页中选择一页,将它暂时调出主存,让出主存空间,用来存放需装入的页面,这个工作称为“页面调度”。如何选择调出的页是很重要的,常用的页面调度算法有先进先出算法、最近最少用算法和最近最不常用算法。实验中使用先进先出调度算法。先进先出调度算法总是选择驻留在主存时间最长的一页调出。先进先出算法简单,易实现。可以把在主存储器的页的页号按进入主存的先后次序排成队列,每次总是调出队首的页,当装入一个新页后,把新页的页号排入队尾。实验中,用一个数组存放页号的队列。假定分配给作业的主存块数为m,数组可由m个元素组成,p[0],p[1]……p[m-1];队首指针head;采用页面预置的方法,页号队列的长度总是m,tail等于(head+1)%m。因此可以使用一个指针,只用head即可。在装入一个新的页时,装入页和淘汰页同时执行,当装入一个新的页时,将其页号存入数组:淘汰页的页号=p[head];

p[head]=新装入页的页号;

head=(head+1)%m;

实验中,采用先进先出页面置换算法的缺页中断流程图如图2.8所示。

图2.9 一条指令执行的模拟流程图

实验执行一条指令时,不模拟指令的执行,只是考虑指令执行是否修改页面,若修改页面,则将该页的页表中修改标志为置“1”,然后输出转换后的物理地址,并输出物理地址来表示一条指令执行完成;如果访问的页不在主存时,则产生缺页中断,然后直接转去缺页中断处理,最后模拟中断返回,就是返回重新进行地址转换。一条指令执行的模拟流程图如图

2.9所示。

因为没有实际主存,所以在模拟程序中首先手工输入页表信息,创建该作业的页表;然后循环执行假定的指令,观察地址转换情况。

5.课外题

采用LRU页面调度算法编程实现上述虚拟页式存储管理的地址转换。

存储管理实验报告

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

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

段式虚拟存储管理

学号: 课程设计 题目段页式虚拟存储管理 学院计算机科学与技术 专业 班级 姓名 指导教师吴利军 2013 年 1 月16 日

课程设计任务书 学生姓名: 指导教师:吴利军工作单位:计算机科学与技术学院题目: 模拟设计段页式虚拟存储管理中地址转换 初始条件: 1.预备内容:阅读操作系统的内存管理章节内容,理解段页式存储管理的思想及相应的分配主存的过程。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1.实现段页式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形: ⑴能指定内存的大小,内存块的大小,进程的个数,每个进程的段数及段内 页的个数; ⑵能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。 2.设计报告内容应说明: ⑴需求分析; ⑵功能设计(数据结构及模块说明); ⑶开发平台及源程序的主要部分; ⑷测试用例,运行结果与运行情况分析; ⑸自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他方法(如果有,简要说明该方法); 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。 (注意事项:严禁抄袭,一旦发现,一律按0分记) 指导教师签名:年月日 系主任(或责任教师)签名:年月日

一、需求分析: 页式管理基本原理: 各个进程的虚拟空间被划分成若干个长度相等的页。页长的划分和内存与外存之间的数据传输速度及内存大小等有关。一般每个页长大约为1----4K,经过页划分之后,进程的虚拟地址变为页号p与页内地址w所组成。 除了将进程的虚拟空间划分为大小相等的页之外,页式管理还把内存空间也按页的大小划分为片或者页面。这些页面为系统中的任一进程所共享。从而与分区管理不一样,分页管理时,用户进程在内存空间内除了在每个页面内地址连续之外,每个页面之间不再连续。第一是实现了内存中碎片的减少,因为任意碎片都会小于一个页面。第二是实现了由连续存储到非连续存储的这个飞跃,为在内存中局部地、动态地存储那些反复执行或即将执行的程序和数据段打下了基础。 怎样由页式虚拟地址转变为内存页面物理地址?页式管理把页式虚拟地址与内存页面物理地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。 静态页面管理: 静态页面管理方法是在作业或进程开始执行之前,把该作业或进程的程序段和数据全部装入内存的各个页面,并通过页表和硬件地址变换机构实现虚拟地址到内存物理地址的地址映射。 1、内存页面的分配与回收 静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统依靠存储页面表、请求页面表以及页表来完成内存的分配。 (1)页表 最简单的页表由页号与页面号组成,页表在内存中占有一块固定的存储区。页表的大小有进程或作业的长度决定。 每个进程至少要拥有一个页表。 (2)请求表 用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置。系统必须知道每个作业或进程的页表起始地址和长度,以进行内存的分配和地址变换,另外请求表中还应包括每个作业或进程所要求的页面数。 (3)存储页面 存储页面表也是整个系统一张,存储页面表指出内存各个页面是否已被分配出去,以及未被分配页面总数。存储页面表也有两种构成方法,一种是在内存中划分一块固定区域,每个单元的每个比特代表一个页面,如果该页面已被分配,则对应比特位置置1,否则置0。 另一种方法空闲页面链,不占内存空间。 2、分配算法 3、地址变换 在程序执行过程中,执行的是虚拟空间中的代码,代码中的指令是相对于虚拟空间的,需要到内存的实际空间中寻找对应的要执行的指令。 静态页式管理的缺陷: 虽然解决了分区管理时的碎片问题,但是由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,改作业或进程只好等待。而且,作业或进程的大小仍受内存可用空间的限制。

操作系统-页式虚拟存储管理程序模拟

操作系统-页式虚拟存储管理程序模拟

FIFO页面置换算法 1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。 2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。 3以后如果再有新页面需要调入,则都按2的规则进行。 算法特点:所使用的内存页面构成一个队列。LRU页面置换算法 1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。 算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。 结果分析

#include #include using namespace std; const int MaxNum=320;//指令数 const int M=5;//内存容量 int PageOrder[MaxNum];//页面请求 int Simulate[MaxNum][M];//页面访问过程 int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数 float PageRate;//命中率 int PageCount1[32]; bool IsExit(int i)//FIFO算法中判断新的页面请求是否在内存中 { bool f=false; for(int j=0;j

四川大学 操作系统上机实验 实验五 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加入工程,编译,执行。 是否能编译成功?是 请描述运行结果:

实验五动态页式存储管理实现过程的模拟

实验五动态页式存储管理实现过程的模拟 一、实验目的与要求 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存储器。通过本实验帮助学生理解在分页式存储管理中怎样实现虚拟存储器;掌握物理内存和虚拟内存的基本概念;掌握重定位的基本概念及其要点,理解逻辑地址与绝对地址;掌握动态页式存储管理的基本原理、地址变换和缺页中断、主存空间的分配及分配算法;掌握常用淘汰算法。 二、实验环境 VC++6.0集成开发环境或java程序开发环境。 三、实验内容 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 四、实验原理 1、地址转换 (1)分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存,页表的格式如图10所示: 图10 页表格式 其中,标志----用来表示对应页是否已经装入主存,标志位=1,则表示该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号----用来表示已经装入主存的页所占的块号。

在磁盘上的位置----用来指出作业副本的每一页被存放在磁盘上的位置。 (2)作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式: 绝对地址=块号×块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。 (3)设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。当访问的页不在主存时,则输出“* 该页页号”,表示产生了一次缺页中断。该模拟程序的算法如图11。 图11 地址转换模拟算法 2、用先进先出(FIFO)页面调度算法处理缺页中断。

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

淮海工学院计算机工程学院实验报告书 课程名:《操作系统原理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算法中“最近最久未用”页面的确定

存储管理实验报告.doc

存储管理实验报告

北方工业大学 《计算机操作系统》实验报告 实验名称存储管理实验序号 2 实验日期2013.11.27实验人 一、实验目的和要求 1.请求页式存储管理是一种常用的虚拟存储管理技术。本实验目的 是通过请求页式存储管理中页面置换算法的模拟设计,了解虚拟存储 技术的特点,掌握请求页式存储管理的页面置换算法。 二、相关背景知识 1.随机数产生办法 关于随机数产生办法, Linux 或 UNIX 系统提供函数 srand() 和 rand() ,分 别进行初始化和产生随机数。 三、实验内容 (1).通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: 1.50% 的指令是顺序执行的; 2.25% 的指令是均匀分布在前地址部分; 3.25% 的指令是均匀分布在后地址部 分;具体的实施方法是: 1.在[0, 319]的指令地址之间随机选取一起点 m; 2.顺序执行一条指令,即执行地址为 m+1 的指令; 3.在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; 4.顺序执行一条指令,其地址为 m’+1; 5.在后地址 [m ’+2, 319]中随机选取一条指令并执行; 6.重复上述步骤 1~5,直到执行 320 次指令。 (2)将指令序列变换成页地址流,设 1.页面大小为 1K ; 2.用户内存容量为 4 页到 32 页; 3.用户虚存容量为 32K 。 在用户虚存中,按每 K 存放 10 条指令排列虚存地址,即 320 条指令在虚存 中存放的方式为: 第 0 条至第 9 条指令为第 0 页(对应虚存地址为 [0, 9]); 第 10 条至第 19 条指令为第 1 页(对应虚存地址为 [10, 19]); 第 310 条至第 319 条指令为第 31 页(对应虚存地址为 [310,319]); 按以上方式,用户指令可以组成 32 页。 (3)计算并输出下述各种算法在不同内存容量下的命中率。

段页式虚拟存储管理

课程设计 题目段页式虚拟存储管理 学院计算机科学与技术 专业 班级 姓名 指导教师吴利军 2013年1月16日 课程设计任务书 学生姓名:

指导教师:吴利军工作单位:计算机科学与技术学院题目: 模拟设计段页式虚拟存储管理中地址转换 初始条件: 1.预备内容:阅读操作系统的内存管理章节内容,理解段页式存储管理的思想及相应的分配主存的过程。 2.实践准备:掌握一种计算机高级语言的使用。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1.实现段页式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形: ⑴能指定内存的大小,内存块的大小,进程的个数,每个进程的段数及段内页 的个数; ⑵能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。 2.设计报告内容应说明: ⑴需求分析; ⑵功能设计(数据结构及模块说明); ⑶开发平台及源程序的主要部分; ⑷测试用例,运行结果与运行情况分析; ⑸自我评价与总结: i)你认为你完成的设计哪些地方做得比较好或比较出色; ii)什么地方做得不太好,以后如何改正; iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训); iv)完成本题是否有其他方法(如果有,简要说明该方法); 时间安排: 设计安排一周:周1、周2:完成程序分析及设计。 周2、周3:完成程序调试及测试。 周4、周5:验收、撰写课程设计报告。 (注意事项:严禁抄袭,一旦发现,一律按0分记) 指导教师签名:年月日 系主任(或责任教师)签名:年月日 一、需求分析: 页式管理基本原理:

各个进程的虚拟空间被划分成若干个长度相等的页。页长的划分和内存与外存之间的数据传输速度及内存大小等有关。一般每个页长大约为1----4K,经过页划分之后,进程的虚拟地址变为页号p与页内地址w所组成。 除了将进程的虚拟空间划分为大小相等的页之外,页式管理还把内存空间也按页的大小划分为片或者页面。这些页面为系统中的任一进程所共享。从而与分区管理不一样,分页管理时,用户进程在内存空间内除了在每个页面内地址连续之外,每个页面之间不再连续。第一是实现了内存中碎片的减少,因为任意碎片都会小于一个页面。第二是实现了由连续存储到非连续存储的这个飞跃,为在内存中局部地、动态地存储那些反复执行或即将执行的程序和数据段打下了基础。 怎样由页式虚拟地址转变为内存页面物理地址页式管理把页式虚拟地址与内存页面物理地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。 静态页面管理: 静态页面管理方法是在作业或进程开始执行之前,把该作业或进程的程序段和数据全部装入内存的各个页面,并通过页表和硬件地址变换机构实现虚拟地址到内存物理地址的地址映射。 1、内存页面的分配与回收 静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统依靠存储页面表、请求页面表以及页表来完成内存的分配。 (1)页表 最简单的页表由页号与页面号组成,页表在内存中占有一块固定的存储区。页表的大小有进程或作业的长度决定。 每个进程至少要拥有一个页表。 (2)请求表 用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置。系统必须知道每个作业或进程的页表起始地址和长度,以进行内存的分配和地址变换,另外请求表中还应包括每个作业或进程所要求的页面数。 (3)存储页面 存储页面表也是整个系统一张,存储页面表指出内存各个页面是否已被分配出去,以及未被分配页面总数。存储页面表也有两种构成方法,一种是在内存中划分一块固定区域,每个单元的每个比特代表一个页面,如果该页面已被分配,则对应比特位置置1,否则置0。 另一种方法空闲页面链,不占内存空间。 2、分配算法 3、地址变换 在程序执行过程中,执行的是虚拟空间中的代码,代码中的指令是相对于虚拟空间的,需要到内存的实际空间中寻找对应的要执行的指令。 静态页式管理的缺陷: 虽然解决了分区管理时的碎片问题,但是由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,改作业或进程只好等待。而且,作业或进程的大小仍受内存可用空间的限制。 动态页式管理: 动态页式管理是在静态页式管理的基础上发展起来的。它分为请求页式管理和与调入页式管理(调入方式上)。

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

实验三虚拟存储管理 实验性质:验证 建议学时: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,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

网络存储实验报告

湖北文理学院《网络存储》 实验报告 专业班级:计科1211 姓名:*** 学号:*** 任课教师:李学峰 2014年11月16日

实验01 Windows 2003的磁盘阵列技术 一、实验目的 1.掌握在Windows 2003环境下做磁盘阵列的条件和方法。 2.掌握在Windows 2003环境下实现RAID0的方法。 3. 掌握在Windows 2003环境下实现RAID1的方法。 4. 掌握在Windows 2003环境下实现RAID5的方法。 5. 掌握在Windows 2003环境下实现恢复磁盘阵列数据的方法。 二、实验要求 1.在Windows 2003环境下实现RAID0 2.在Windows 2003环境下实现RAID1 3.在Windows 2003环境下实现RAID5 4.在Windows 2003环境下实现恢复磁盘阵列数据 三、实验原理 (一)磁盘阵列RAID技术的概述 RAID是一种磁盘容错技术,由两块以上的硬盘构成冗余,当某一块硬盘出现物理损坏时,换一块同型号的硬盘即可自行恢复数据。RAID有RAID0、RAID1、RAID5等。RAID 技术是要有硬件来支持的,即常说的RAID卡,如果没RAID卡或RAID芯片,还想做RAID,那就要使用软件RAID技术,微软Windows系统只有服务器版本才支持软件RAID技术,如Windows Server 2003等。 (二)带区卷(RAID0) 带区卷是将多个(2-32个)物理磁盘上的容量相同的空余空间组合成一个卷。需要注意的是,带区卷中的所有成员,其容量必须相同,而且是来自不同的物理磁盘。带区卷是Windows 2003所有磁盘管理功能中,运行速度最快的卷,但带区卷不具有扩展容量的功能。它在保存数据时将所有的数据按照64KB分成一块,这些大小为64KB的数据块被分散存放于组成带区卷的各个硬盘中。 (三)镜像卷(RAID1) 镜像卷是单一卷的两份相同的拷贝,每一份在一个硬盘上。它提供容错能力,又称为RAID1技术。 RAID1的原理是在两个硬盘之间建立完全的镜像,即所有数据会被同时存放到两个物理硬盘上,当一个磁盘出现故障时,系统仍然可以使用另一个磁盘内的数据,因此,它具备容错的功能。但它的磁盘利用率不高,只有50%。 四、实验设备 1.一台装有Windows Server 2003系统的虚拟机。 2.虚拟网卡一块,类型为“网桥模式”。 3.虚拟硬盘五块。 五、实验步骤 (一)组建RAID实验的环境 (二)初始化新添加的硬盘 (三)带区卷(RAID0的实现)

页式虚拟存储管理中地址转换和缺页中断实验参考2

页式虚拟存储管理中地址转换和缺页中断 一.实验目的 (1)深入了解存储管理如何实现地址转换。 (2)进一步认识页式虚拟存储管理中如何处理缺页中断。 二.实验内容 编写程序完成页式虚拟存储管理中地址转换过程和模拟缺页中断的处理。 三.实验原理 页式存储管理把内存分割成大小相等位置固定的若干区域,叫内存页面,内存的分配以“页”为单位,一个程序可以占用不连续的页面,逻辑页面的大小和内存页面的大小相同,内外存的交换也以页为单位进行,页面交换时,先查询快表,若快表中找不到所需页面再去查询页表,若页表中仍未找到说明发生了缺页中断,需先将所需页面调入内存再进行存取。 四.实验部分源程序 #define size 1024//定义块的大小,本次模拟设为1024个字节。 #include "stdio.h" #include "string.h" #include struct plist { int number; //页号 int flag; //标志,如为1表示该页已调入主存,如为0则还没调入。 int block; //主存块号,表示该页在主存中的位置。 int modify; //修改标志,如在主存中修改过该页的内容则设为1,反之设为0 int location; //在磁盘上的位置 }; //模拟之前初始化一个页表。 struct plist p1[7]={{0,1,5,0,010},{1,1,8,0,012},{2,1,9,0,013},{3,1,1,0,021},{4,0,-1,0,022},{5,0,-1,0,023},{6, 0,-1,0,125}}; //命令结构,包括操作符,页号,页内偏移地址。 struct ilist { char operation[10]; int pagenumber; int address; }; //在模拟之前初始化一个命令表,通过程序可以让其顺序执行。 struct ilist p2[12]={{"+",0,72},{"5+",1,50},{"*",2,15},{"save",3,26},

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

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

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

实验报告实验二存储管理

实验二存储管理 一.实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二.实验内容 (1)通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。 页面失效次数为每次访问相应指令时,该指令所对应的页不在内存页面失效次数 命中率?1?页地址流长度中的次数。,用户内存,用户虚存容量为 32k 在本实验中,假定页面大小为1k 32页。容量为4页到320条指令。produce_addstream通过随机数产生一个指令序列,共(2)指令的地址按下述原则生成:A、 的指令是顺序执行的)150% 的指令是均匀分布在前地址部分2)25% 的指令是均匀分布在后地址部分3)25% 体的实施方法是:、具B ;319]的指令地址之间随机选取一起点m)在[0,1 的指令;顺序执行一条指令,即执行地址为m+1)2 该指令的地址为中随机选取一条指令并执行,,m+1]3)在前地址[0 ;m' 的指令'+1)顺序执行一条指令,地址为m4 319]中随机选取一条指令并执行;[m在后地址'+2,5) 320次指令)~5),直到执行6)重复上述步骤1 将指令序列变换称为页地址流C、 条指令条指令排列虚存地址,即320k存放10在用户虚存中,按每在虚存中的存放方式为:;,9])第9条指令为第0页(对应虚存地址为[0第0条~ ;19])条指令为第1页(对应虚存地址为[10,第10条~第19 。。。。。。;,319])[310条~第319条指令为第31页(对应虚存地址为310第页。按以上方式,用户指令可组成32 计算并输出下属算法在不同内存容量下的命中率。)(3 );)先进先出的算法(FIFO1 ;最近最少使用算法(LRU)2) ;OPT)最佳淘汰算法()3 ;)LFR最少访问页面算法()4. 其中3)和4)为选择内容 三.系统框图

页式虚拟存储管理FIFO、LRU和OPT页面置换算法

目录 1 需求分析 (2) 1.1 目的和要求 (2) 1.2 研究内容 (2) 2 概要设计 (2) 2.1 FIFO算法 (3) 2.2 LRU算法 (3) 2.3 OPT算法 (3) 2.4 输入新的页面引用串 (3) 3 详细设计 (4) 3.1 FIFO(先进先出)页面置换算法: (4) 3.2 LRU(最近最久未使用)置换算法: (4) 3.3 OPT(最优页)置换算法 (4) 4 测试 (5) 5 运行结果 (5) 6 课程设计总结 (10) 7 参考文献 (10) 8 附录:源程序清单 (11)

1 需求分析 1.1 目的和要求 在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。 1.2 研究内容 模拟实现页式虚拟存储管理的三种页面置换算法(FIFO(先进先出)、LRU(最近最久未使用)和OPT(最长时间不使用)),并通过比较性能得出结论。 前提: (1)页面分配采用固定分配局部置换。 (2)作业的页面走向和分得的物理块数预先指定。可以从键盘输入也可以从文件读入。 (3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。 2 概要设计 本程序主要划分为4个功能模块,分别是应用FIFO算法、应用LRU算法、应用OPT算法和页面引用串的插入。

1.1各模块之间的结构图 2.1 FIFO 算法 该模块的主要功能是对相应页面引用串进行处理,输出经过FIFO 算法处理之后的结果。 2.2 LRU 算法 该模块的主要功功能是对相应的页面引用串进行处理,输出经过LRU 算法处理之后的结果。 2.3 OPT 算法 该模块的主要功功能是对相应的页面引用串进行处理,输出经过OPT 算法处理之后的结果。 2.4 输入新的页面引用串 该模块的主要功能是用户自己输入新的页面引用串,系统默认的字符串是0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,用户可以自定义全新的20个数字页面引用串。 主界面 FIFO 算法 LRU 算法 OPT 算法 新的页面引用 串

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

实验操作系统存储管理实验报告

实验四操作系统存储管理实验报告 一、实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 二、实验内容 (1)通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影响。 页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。 在本实验中,假定页面大小为1k,用户虚存容量为32k,用户内存容量为4页到32页。 (2)produce_addstream通过随机数产生一个指令序列,共320条指令。 A、指令的地址按下述原则生成: 1)50%的指令是顺序执行的 2)25%的指令是均匀分布在前地址部分 3)25%的指令是均匀分布在后地址部分 B、具体的实施方法是: 1)在[0,319]的指令地址之间随机选取一起点m; 2)顺序执行一条指令,即执行地址为m+1的指令; 3)在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; 4)顺序执行一条指令,地址为m’+1的指令 5)在后地址[m’+2,319]中随机选取一条指令并执行; 6)重复上述步骤1)~5),直到执行320次指令 C、将指令序列变换称为页地址流

在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中 的存放方式为: 第0条~第9条指令为第0页<对应虚存地址为[0,9]); 第10条~第19条指令为第1页<对应虚存地址为[10,19]); 。。。。。。 第310条~第319条指令为第31页<对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。 (3)计算并输出下属算法在不同内存容量下的命中率。 1)先进先出的算法

存储管理实验报告

综合性实验报告 一、实验目的 通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式管理的页面置换算法。 页面置换算法是虚拟存储管理实现的关键,通过本次实验理解内存页面调度的机制,在模拟实现FIFO、LRU、OPT、LFU、NUR几种经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。 二、总体设计 1、编写函数计算并输出下述各种算法的命中率 ①OPT页面置换算法 OPT所选择被淘汰的页面是已调入内存,且在以后永不使用的,或是在最长时间内不再被访问的页面。因此如何找出这样的页面是该算法 的关键。可为每个页面设置一个步长变量,其初值为一足够大的数,对 于不在内存的页面,将其值重置为零,对于位于内存的页面,其值重置 为当前访问页面与之后首次出现该页面时两者之间的距离,因此该值越 大表示该页是在最长时间内不再被访问的页面,可以选择其作为换出页 面。 ②FIFO页面置换算法 FIFO总是选择最先进入内存的页面予以淘汰,因此可设置一个先进先出的忙页帧队列,新调入内存的页面挂在该队列的尾部,而当无空闲 页帧时,可从该队列首部取下一个页帧作为空闲页帧,进而调入所需页 面。 ③LRU页面置换算法 LRU是根据页面调入内存后的使用情况进行决策的,它利用“最近的过去”作为“最近的将来”的近似,选择最近最久未使用的页面予以 淘汰。该算法主要借助于页面结构中的访问时间time来实现,time记

录了一个页面上次的访问时间,因此,当须淘汰一个页面时,选择处于 内存的页面中其time值最小的页面,即最近最久未使用的页面予以淘 汰。 ④LFU页面置换算法 LFU要求为每个页面配置一个计数器(即页面结构中的counter),一旦某页被访问,则将其计数器的值加1,在需要选择一页置换时,则 将选择其计数器值最小的页面,即内存中访问次数最少的页面进行淘 汰。 ⑤NUR页面置换算法 NUR要求为每个页面设置一位访问位(该访问位仍可使用页面结构中的counter表示),当某页被访问时,其访问位counter置为1。需要 进行页面置换时,置换算法从替换指针开始(初始时指向第一个页面) 顺序检查处于内存中的各个页面,如果其访问位为0,就选择该页换出, 否则替换指针下移继续向下查找。如果内存中的所有页面扫描完毕未找 到访问位为0的页面,则将替换指针重新指向第一个页面,同时将内存 中所有页面的访问位置0,当开始下一轮扫描时,便一定能找到counter 为0的页面。 2、在主函数中生成要求的指令序列,并将其转换成页地址流;在不同 的内存容量下调用上述函数使其计算并输出相应的命中率。 三、实验步骤(包括主要步骤、代码分析等) 主要步骤: 、通过随机数产生一个指令序列,共320条指令。其地址按下述原则生成: ①50%的指令是顺序执行的; ②25%的指令是均匀分布在前地址部分; ③25%的指令是均匀分布在后地址部分; 具体的实施方法是: A.在[0,319]的指令地址之间随机选区一起点M; B.顺序执行一条指令,即执行地址为M+1的指令; C.在前地址[0,M+1]中随机选取一条指令并执行,该指令的地址为M’; D.顺序执行一条指令,其地址为M’+1; E.在后地址[M’+2,319]中随机选取一条指令并执行;

相关文档
最新文档