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

操作系统实验实验报告虚拟内存一、实验目的本次操作系统实验的目的是深入理解虚拟内存的概念、原理和实现机制,通过实际操作和观察,掌握虚拟内存的相关技术,包括页面置换算法、内存分配策略等,并分析其对系统性能的影响。
二、实验环境操作系统:Windows 10 专业版开发工具:Visual Studio 2019编程语言:C++三、实验原理1、虚拟内存的概念虚拟内存是一种计算机系统内存管理技术,它使得应用程序认为自己拥有连续的可用内存(一个连续完整的地址空间),而实际上,这些内存可能是被分散存储在物理内存和外部存储设备(如硬盘)中的。
虚拟内存通过将程序使用的内存地址映射到物理内存地址,实现了内存的按需分配和管理。
2、页面置换算法当物理内存不足时,操作系统需要选择一些页面(内存中的固定大小的块)换出到外部存储设备,以腾出空间给新的页面。
常见的页面置换算法有先进先出(FIFO)算法、最近最少使用(LRU)算法、时钟(Clock)算法等。
3、内存分配策略操作系统在分配内存时,需要考虑如何有效地利用有限的物理内存资源。
常见的内存分配策略有连续分配、分页分配和分段分配等。
四、实验内容与步骤1、实现简单的虚拟内存系统使用 C++编写一个简单的虚拟内存模拟程序,包括内存页面的管理、地址映射、页面置换等功能。
2、测试不同的页面置换算法在虚拟内存系统中,分别实现 FIFO、LRU 和 Clock 算法,并对相同的访问序列进行测试,比较它们的页面置换次数和缺页率。
3、分析内存分配策略的影响分别采用连续分配、分页分配和分段分配策略,对不同大小和类型的程序进行内存分配,观察系统的性能(如内存利用率、执行时间等)。
具体步骤如下:(1)定义内存页面的结构,包括页面号、标志位(是否在内存中、是否被修改等)等。
(2)实现地址映射函数,将虚拟地址转换为物理地址。
(3)编写页面置换算法的函数,根据不同的算法选择要置换的页面。
(4)创建测试用例,生成随机的访问序列,对不同的算法和分配策略进行测试。
操作系统实验报告6

操作系统实验报告6一、实验目的本次操作系统实验的主要目的是深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关技术,通过实际操作和观察,增强对操作系统工作原理的理解,并提高解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,实验工具包括 Visual Studio 2019 等。
三、实验内容(一)进程管理实验1、创建多个进程,并观察它们的运行状态和资源占用情况。
通过编写简单的C++程序,使用Windows API 函数创建多个进程。
在程序中,设置不同的进程优先级和执行时间,观察操作系统如何调度这些进程,以及它们对 CPU 使用率和内存的影响。
2、进程间通信实现了进程间的管道通信和消息传递。
通过创建管道,让两个进程能够相互交换数据。
同时,还使用了 Windows 的消息机制,使进程之间能够发送和接收特定的消息。
(二)内存管理实验1、内存分配与释放使用 C++的动态内存分配函数(如`malloc` 和`free`),在程序运行时动态申请和释放内存。
观察内存使用情况,了解内存碎片的产生和处理。
2、虚拟内存管理研究了 Windows 操作系统的虚拟内存机制,通过查看系统的性能监视器,观察虚拟内存的使用情况,包括页面文件的大小和读写次数。
(三)文件系统实验1、文件操作进行了文件的创建、读取、写入、删除等基本操作。
通过编写程序,对不同类型的文件(如文本文件、二进制文件)进行处理,了解文件系统的工作原理。
2、目录操作实现了目录的创建、删除、遍历等功能。
了解了目录结构在文件系统中的组织方式和管理方法。
四、实验步骤(一)进程管理实验步骤1、打开 Visual Studio 2019,创建一个新的 C++控制台项目。
2、在项目中编写代码,使用`CreateProcess` 函数创建多个进程,并设置它们的优先级和执行时间。
3、编译并运行程序,通过任务管理器观察进程的运行状态和资源占用情况。
虚拟存储器管理实验报告书

淮海工学院计算机科学系实验报告书课程名:《操作系统》题目:虚拟存储器管理页面置换算法模拟实验班级:学号:姓名:一、实验目的与要求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%。
操作系统实验六-虚拟存储器实验报告

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

《操作系统》存储管理实验报告操作系统是计算机系统中最基础、最核心的软件之一,负责管理计算机硬件资源和提供资源的分配与调度。
而存储管理是操作系统中的重要组成部分,它负责管理计算机的内存,包括内存的分配、回收、保护等操作。
本文将针对存储管理进行实验,并撰写实验报告。
本次实验主要涉及以下内容:内存的分配与回收、内存的保护。
实验过程中,我首先根据操作系统的要求,设计了相应的算法用于内存的分配与回收。
并通过编写程序,验证了算法的正确性。
随后,我进一步研究了内存的保护机制,通过设置访问权限位和访问控制表,实现了对内存的合理保护。
在内存的分配与回收方面,我设计了一种简单的算法,首次适应算法。
具体实现如下:首先,将内存分为若干个块,每个块的大小为固定值。
当需要分配内存时,首先遍历内存块列表,找到第一个大小合适的块,将其分配给进程。
当进程终止时,将其占用的内存块回收,以便后续进程使用。
通过编写程序进行测试,结果表明该算法能够正确地进行内存的分配与回收。
在内存的保护方面,我采用了访问权限位和访问控制表的方式进行。
具体实现如下:首先,为每个进程分配一组访问权限位,记录了该进程能够访问的内存区域。
同时,设置一个访问控制表,记录了每个内存块的权限。
当进程访问一些内存块时,首先检查该进程的访问权限位,再与访问控制表中的权限进行比较,以确定该进程是否有权限访问该内存块。
通过编写程序进行测试,证明了该机制能够有效地保护内存。
总结来说,本次实验主要涉及了操作系统中的存储管理部分,包括内存的分配与回收、内存的保护。
通过设计算法和编写程序,我成功地实现了这些功能,并验证了其正确性。
通过本次实验,我进一步加深了对操作系统存储管理的理解,提高了编程和设计的能力。
操作系统管理_-_虚拟存储器_实验报告_代码

淮海工学院计算机工程学院实验报告书课程名:《操作系统原理》题目:虚拟存储器班级:学号:姓名:评语:成绩:指导教师:批阅时间:年月日一、目的与要求(一)目的由于超大规模集成电器电路(VLSI)技术的发展,使存贮器的容量不断扩大,价格大幅度下降。
但从应用角度看,存贮器的容量和成本总会受到一定的限制。
所以,提高存贮器的使用效率始终是操作系统研究的重要课题之一,虚拟存贮器技术是用来扩大主存容量的一种重要的方法。
本实习要求学生独立地用高级语言编写几个常用的存贮器分配算法,并能设计一个存贮管理的模拟程序,能对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。
(二)要求为了比较真实地模拟存贮器管理,可预先生成一个大致符合实际情况的指令地址流。
然后,通过模拟这样一种指令序列的执行来计算和分析比较各种算法的访问命中率。
二、示例1.题目本示例给出采用页式分配存贮器管理方案,并通过分析、计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣,另外也考虑改变页面尺寸大小和实际存贮器容量对计算结果的影响,从而可为选择好的算法、合适的页面尺寸和存贮器实际容量提供依据。
本程序是按下述原则生成指令序列的:(1)50%的指令是顺序执行的。
(2)25%的指令是均匀分布在前地址部分。
(3)25%的指令是均匀分布在后地址部分。
示例中选用最佳淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。
公式为:页面失败次数命中率=1-───────页地址流长度假定虚拟存贮容量为32K,页面尺寸从1K到8K,实存容量从4页到32页。
2.算法与框图(1)最佳淘汰算法(OPT)。
这是一种理想的算法,可用来作为衡量其他算法优劣的依据,在实际系统中是难以实现的,因为它必须先知道指令的全部地址流。
由于本示例中已生成了全部地址流,故可计算最佳命中率。
该算法的准则是淘汰已满页表中以后不再访问或是最迟访问的页。
这就要求将页表中的页逐个与后继指令访问的所有页比较,如后继指令不再访问此页,则把此页淘汰,不然得找出后继指令中最迟访问的页面予以淘汰。
操作系统管理-虚拟存储器-实验报告-代码7页

操作系统管理-虚拟存储器-实验报告-代码7页一、实验目的学习操作系统中虚拟存储器的概念,掌握虚拟存储器的实现思路和方式。
二、实验要求在C语言环境下,实现基于分页机制的虚拟存储和页表管理。
三、实验内容1.实现一个虚拟存储器,其中分页大小为4KB,虚拟地址空间大小为4GB(每个进程可以使用的虚拟地址空间)。
物理内存大小为512MB,即实际内存中有128个物理页面。
2.实现页表管理,将虚拟地址映射到物理地址。
3.实现页面替换算法,当物理内存不足时,需要将某些页面从内存中置换出来。
4.实现程序的运行,能够根据页面缺失率输出性能参数。
四、实验步骤1.确定程序设计思路和数据结构。
2.实现虚拟存储器和页表管理。
3.实现页面替换算法。
五、实验代码及解析对于程序设计思路,首先需要确定虚拟存储器和物理内存的大小,以及页面大小。
虚拟存储器大小默认为4GB,物理内存大小为512MB,页面大小为4KB。
其次,需要设计页表数据结构。
页表可以使用一个二维数组表示,其中第一维表示页表项,第二维表示页内地址。
页表项有四个字段,分别为标志位(是否在内存中)、页框号(页面所在的物理页框号)、保护(页面的读写权限)、计数(页面使用情况的计数器)。
第三,需要设计页面替换算法。
本程序采用最近最少使用算法(LRU)作为页面替换算法,当物理内存不足时,选择使用最近最少使用的页面进行替换。
#define PAGE_SIZE 4096 // 页面大小#define VIRTUAL_MEM_SIZE 4 * 1024 * 1024 * 1024 // 虚拟存储器大小#define PHYSICAL_MEM_SIZE 512 * 1024 * 1024 // 物理内存大小#define PAGE_NUM (VIRTUAL_MEM_SIZE / PAGE_SIZE) // 页面总数#define PHYSICAL_PAGE_NUM (PHYSICAL_MEM_SIZE / PAGE_SIZE) // 物理页面数struct page_table_entry {int present; // 是否在内存中(1为在,0为不在)int page_frame; // 页面所在的物理页框号int protect; // 页面的读写权限int count; // 页面使用情况的计数器}struct page_table_entry page_table[PAGE_NUM][PAGE_SIZE]; // 页表虚拟存储器和页表管理需要掌握的是页表的相关数据结构,还有一个重要的点,就是如何将虚拟地址映射到物理地址。
虚拟存储管理实验总结

虚拟存储管理实验总结虚拟存储是一种计算机操作系统的存储管理技术。
通过虚拟存储技术,操作系统能够把正在运行的程序看成是存储在主存储器中的一部分。
当程序需要的数据暂时不存在于主存储器时,操作系统会自动把暂时不用的程序或数据存放在磁盘上,并在需要时再自动调入主存储器中,从而以较小的主存储器容量来运行大程序。
在本次虚拟存储管理实验中,我们学习了虚拟存储管理技术的实现原理以及相关算法。
通过该实验,我们深入理解了进程运行时的存储管理过程,并通过实际操作和调试,进一步巩固了对操作系统的理论知识和实践应用的掌握。
一、实验环境本次实验主要在Linux操作系统上进行。
Linux内核由于其源代码公开、开放平台、代码规范等优点,成为了广大计算机科学爱好者学习操作系统的首选。
我们还需要安装实验所需的MAM分配器和SSTF调度器等辅助工具。
二、实验过程实验的主要步骤包括:1.分配器的实现。
我们需要实现MAM分配器,该分配器要求能够自动将进程使用的内存块分配出去,且在进程退出时自动释放所使用的内存块。
2.虚拟地址转换实现。
实验中,我们需要使用页表来管理虚拟地址。
通过页表,可以将虚拟地址转换为物理地址,从而操作系统可以向硬盘中读写数据。
3.页面置换算法实现。
当内存不足时,虚拟存储会通过一些页面置换算法将部分进程在内存中的页面清除,以留下新的内存页面。
我们需要实现SSTF算法,即使用磁盘上最近访问时间最短的页面作为置换页面。
4.进程初始化和各种信号灯的设置。
进程初始化时,需要使用fork函数创建子进程并将进程挂入等待队列中,以等待分配内存同步完成。
信号灯的设置则是为了保证操作的原子性和同步性。
实验中,我们首先实现了MAM分配器,通过实现内存块分配和释放函数,它可以很好地帮助我们管理分配出去的内存块。
接着,我们着手实现虚拟地址转换功能,需要对物理内存和虚拟内存进行管理。
由于高速缓存可以从磁盘中不用重复读取数据,所以我们还需要实现页面管理算法,以保证内存的有效利用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、实验题目
本实验有三道题目,其中第一题必做,第二,三题中可任选一个。 第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。 [提示] (1) 分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当 作业被选中时,可把作业的开始几页先装入主存且启动执 行。为此,在为作业建立页表时,应说明哪些页已在主存, 哪些页尚未装入主存,页表的格式为: 页号 标志 主存块 在磁盘上的位置 号
页号来代替一次调出和装入的过程。 三、设计思想(本程序中的用到的所有数据类型 的定义,主 程序的流程图及各程序模块之间的调用关 系) 1.程序流程图
以下为FIFO 算法流程:
2 .逻辑设计 使用线性表保存页表。每个节点信息包括调 入主存的标志,主 存块号,在磁盘上的位置,修改标志等。使用线 性表保存FIFO 算法 使用的对应关系数组P,用数组模拟实现调度的 队列。该队列需支持 查找,插入和删除操作(即替换操作)。 3、物理设计 全局定义如下: struct info//页表 { bool flag; //标志 long block;//块号
(3) 编制一个LRU页面调度程序,为了提高系统效率,如果应淘汰的
页在执行中没有修改过,则可不必把该页调出。参看第二题中提 示(3)。模拟调度算法不实际启动输出一页和装入一页的程序, 而用输出调出的页号和装入的页号来代替。把第一题中的程序稍 作 改动,与本题集合起来,LRU页面调度模拟算法如图6-3。 (4) 按第一题中提示(4)的要求,建立一张初始页表,表中为每一页 增加“修改标志”位(参考第二题中提示(4))。然后按依次执行 的指令序列,运行你所设计的程序,显示或打印每次调出和装入 的页号,以及执行了最后一条指令后的数组中的值。 (5) 为了检查程序的正确性,可再任意确定一组指令序列,运行设计 的程序,核对执行的结果。
(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 再由装入程序把要访问的一页信息装入到主存中。重新启动刚才 那条指令执行。 (3) 编制一个FIFO页面调度程序,为了提高系统效率,如果应 淘汰的页在执行中没有修改过,则可不必把该页调出(因在 磁盘上已有副本)而直接装入一个新页将其覆盖。因此在页 表中增加是否修改过的标志,为“1”表示修改过,为“0”表示 未修改过,格式为:
页号 标志 主存块号 修改标志 在磁盘上的位置Leabharlann 0 1 2 3 4 5 6
1 1 1 1 0 0 0
5 8 9 1
0 0 0 0 0 0 0
011 012 013 021 022 023 121
按依次执行的指令序列,运行你所设计的程序,显示或打印每次 调出和装入的页号,以及执行了最后一条指令后的数组P的值。 (5) 为了检查程序的正确性,可再任意确定一组指令序列,运行 设计的程序,核对执行的结果。
输出“in L” 调整数组,j退出数组,L→数组第一个元素中
修改页表 图6-3 LRU页面调度算法
四、实验报告
(1) (第一题必做,第二题和第三题任选其一)。 (2) 程序中使用的数据结构及符号说明。 (3) 打印初始页表,每次调出(要调出一页时)和装入的页 号,执行最后一条指令后在主存中的页面号(即数组的 值)。 思考题 如果你有兴趣的话,可把两种页面调度算法都做一下,比较两种调 度算法的效率(哪种调度算法产生缺页中断的次数少);分析在什麽情 况下采用哪种调度算法更有利?
开始 取一条指令 取指令中访问的页号
查页表 否 是 该页标志=1? 形成绝对地址 输出“*”页号表 示发生缺页中断 输出绝对地址 有后继指令? 取下一条指令 结束 图6-1 地址转换模拟算法
(4) 假定主存的每块长度为128个字节;现有一个共七页的作 业,其中第0页至第3页已经装入主存,其余三页尚未装入主 存;该作业的页表为:
其中,标志----用来表示对应页是否已经装入主存,标志位=1,则表示 该页已经在主存,标志位=0,则表示该页尚未装入主存。 主存块号----用来表示已经装入主存的页所占的块号。 在磁盘上的位置----用来指出作业副本的每一页被存放在磁盘上的 位置。 (2) 作业执行时,指令中的逻辑地址指出了参加运算的操作存放
开始 取一条指令 取指令中访问的页号→L
查页表 否(产生缺页中断)
是
该页标志=1? 形成绝对地址 是 是存指令? 否 置L页修改标志为“1” 输出绝对地址 否 有后继指令?
是
结束 模拟硬件 地址转换 取下一条指令 模拟LRU 页面调度 j:=被淘汰的页号
(接下页) (接上页)
输出“out j” j页修改标志为1
0 1 2 3 4 5 6
1 1 1 1 0 0 0
5 8 9 1
011 012 013 021 022 023 121 操作 移位 + 存 取 + 存 页号 4 5 1 2 4 6 单元 号 053 023 037 078 001 084
如果作业依次执行的指令序列为: 操作 页号 单元 号 + + × 存 取 - 0 1 2 3 0 6 70 50 15 21 56 40
指令。设计一个“地 址转换”程序来模拟硬件的地址转换工作。当访问 的页在主存时,则 形成绝对地址,但不去模拟指令的执行,而用输 出转换后的地址来代 替一条指令的执行。当访问的页不在主存时,则 输出“* 该页页号”, 表示产生了一次缺页中断。 第二题:用先进先出(FIFO)页面调度算法 处理缺页中断。 在分页式虚拟存储系统中,当硬件发出“缺页 中断”后,引出操 作系统来处理这个中断事件。如果主存中已经没 有空闲块,则可用 FIFO 页面调度算法把该作业中最先进入主存的 一页调出,存放到磁 盘上,然后再把当前要访问的页装入该块。调出 和装入后都要修改页 表页表中对应页的标志。 FIFO 页面调度算法总是淘汰该作业中最先 进入主存的那一页, 因此可以用一个数组来表示该作业已在主存的页 面。假定作业被选中 时,把开始的m 个页面装入主存,则数组的元素 可定为m 个。 编制一个FIFO 页面调度程序,为了提高系 统效率,如果应淘汰 的页在执行中没有修改过,则可不必把该页调出 (因在磁盘上已有副 本)而直接装入一个新页将其覆盖。由于是模拟 调度算法,所以,不 实际启动输出一页和装入一页的程序,而用输出 调出的页号和装入的
页号 标志 主存块号 修改标志 在磁盘上的位置
由于是模拟调度算法,所以,不实际启动输出一页和装入一页的 程序,而用输出调出的页号和装入的页号来代替一次调出和装入 的过程。 把第一题中程序稍作修改,与本题结合起来,FIFO页面调度模拟 算法如图6-2。
(4) 磁盘上,在磁盘上的存放地址以及已装入主存的页和作业依 次执行的指令序列都同第一题中(4)所示。于是增加了“修 改标志”后的初始页表为:
long disk;//在磁盘上的位置 bool dirty;//修改标志 }pagelist[SizeOfPage]; long po;//队列标记 long P[M]; 使用函数init()进行初始化,使用循环结构读入各 条指令。 四、测试结果 实际运行的结果如下: 请选择题号(1/2):1 请输入指令的页号和单元号: 0 70 绝对地址=710 请输入指令的页号和单元号: 4 053 *4 请输入指令的页号和单元号: 1 50 绝对地址=1074 请输入指令的页号和单元号: 5 023 *5 请输入指令的页号和单元号: 2 15 绝对地址=1167 请输入指令的页号和单元号: 1 037 绝对地址=1061 请输入指令的页号和单元号: exit 请选择题号(1/2):2 请输入指令的页号、单元号,以及是否为存指 令:
的页号和单元号,硬件的地址转换机构按页号查页表,若该 页对应标志为“1”,则表示该页已在主存,这时根据关系 式: 绝对地址=块号×块长+单元号 计算出欲访问的主存单元地址。如果块长为2的幂次,则可把块号 作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对 地址。若访问的页对应标志为“0”,则表示该页不在主存,这时硬 件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该 页信息从磁盘读出装入主存后再重新执行这条指令。 (3) 设计一个“地址转换”程序来模拟硬件的地址转换工作。当访 问的页在主存时,则形成绝对地址,但不去模拟指令的执 行,而用输出转换后的地址来代替一条指令的执行。当访 问的页不在主存时,则输出“* 该页页号”,表示产生了一次 缺页中断。该模拟程序的算法如图6-1。
实验六 虚拟存储器
一、实验内容
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择 页面调度算法处理缺页中断。
二、实验目的
在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁 盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和 可以超出主存的绝对地址空间。用这种办法扩充的主存储器称为虚拟存 储器。通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储 器。