虚拟存储器管理
国开期末考试《操作系统》机考满分试题(第8套)

国开期末考试《操作系统》机考满分试题(第8套)第一部分:选择题(每题5分,共计25分)1. 以下哪个不属于操作系统的五大功能?A. 处理器管理B. 存储器管理C. 设备管理D. 网络管理E. 文件管理2. 在操作系统中,进程可以被定义为____。
A. 程序的一次执行过程B. 程序的静态表示C. 计算机系统中运行的程序D. 计算机系统中所有程序的总和E. 以上都不是3. 关于操作系统的描述,以下哪项是正确的?A. 操作系统的主要任务是为用户提供方便的编程环境B. 操作系统的主要任务是为用户提供方便的运行环境C. 操作系统的主要任务是为程序提供方便的编程环境D. 操作系统的主要任务是为程序提供方便的运行环境E. 以上都不是4. 下列哪种方式不是进程调度算法?A. 先来先服务(FCFS)B. 最短作业优先(SJF)C. 优先级调度D. 时间片轮转(Round Robin)E. 最高响应比优先(HRRN)5. 在虚拟存储器管理中,页面置换算法中____算法是最简单的一种。
A. 先进先出(FIFO)B. 最短剩余时间(SRT)C. 最短作业优先(SJF)D. 最高响应比优先(HRRN)E. 最近最少使用(LRU)第二部分:填空题(每题5分,共计25分)6. 在操作系统中,进程可以被定义为程序在某个数据集合上的运行过程,它对应了进程的静态描述,我们称之为____。
7. 操作系统的____功能主要是管理计算机中的硬件和软件资源,合理地组织计算机的工作流程,并为用户提供一个使用方便、可扩展的工作环境。
8. 在____调度算法中,每当处理机空闲时,系统就选取处于就绪队列的第一个进程投入运行。
9. 虚拟存储器管理中,页面置换算法中____算法是试图根据页面调入后再次被访问的远近选择淘汰的页面。
10. 在操作系统中,文件的逻辑结构有多种形式,其中最常用的是____结构。
第三部分:简答题(每题10分,共计30分)11. 简述进程和线程的区别。
计算机组成原理课件 虚拟存储器

4.2 虚拟存储器
例1:一个程序共有5个页面组成,分别为P1~P5。程序执行过程中的页地 址流(即程序执行中依次用到的页面)如下:P1,P2,P1,P5,P4,P1, P3,P4,P2,P4,假设分配给这个程序的主存储器共有3个页面。图中, 用"*"号标记下次将要被替换掉的页面。
4.2 虚拟存储器
内部地址变换:多用户虚拟地址Av变换成贮存实地址A 多用户虚拟地址中的页内偏移量D直接作为主存实地址中的页内偏移d 主存实页号p与它的页内偏移d直接拼接就得到主存是地址A
4.2 虚拟存储器
一个用户程序要访问虚拟存储器时,必须给出多用户虚拟地址Av。在操作系统和 有关硬件的共同管理下,首先进行内部地址变换。 如果变换成功(命中),得到主存实页号p。把主存实页号p与它的页内偏移d直 接拼接起来就得到主存实地址A,访问主存储器。 如果内部地址变换失败(未命中),表示要访问数据不在主存储器中,必须访问 磁盘存储器。这时,进行外部地址变换。 外部地址变换主要用软件实现,首先查外页表得到与虚页号P相对应的磁盘存储 器的实地址,然后再查内页表(主存实页表),看主存储器中是否有空页。如果主 存储器中还有空页,只要找到空页号。把磁盘存储器的实地址和主存储器的实页号 送入输入输出处理机(输入输出通道)等,在输入输出处理机的控制下,把要访问 数据所在的一整页都从磁盘存储器调入到主存储器。 如果主存储器中已经没有空页,则要采用某种页面替换算法,先把主存中暂时不 用的一页写回到磁盘存储器中原来的位置上,以便腾出空位置来存放新的页。 在进行外部地址变换时,如果没有命中,则表示所需要的页还不在磁盘存储器中。 这时,要在操作系统控制下,启动磁带机、光盘存储器等海量存储器,先把与所需 要数据相关的文件从海量存储器中调入磁盘存储器。
虚拟存储器附答案

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

7
0
采用最佳置换算法,只发生了6次页面 置换,发生了9次缺页中断。缺页率=9/21
17
2、先进先出页面置换算法(FIFO) 这是最早出现的置换算法,这种算 法总是淘汰最先进入内存的页面,选 择在内存中驻留时间最久的页面予以淘 汰。
18
采用FIFO算法进行页面置换时的情况。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 1 7 0 1 7 7 0 7 2× 2 2 4× 4 4 0× 0 0 7× 7 7 0 0 3× 3 3 2× 2 2 1× 1 1 0× 0 1 1 1 0× 0 0 3× 3 3 2× 2 2 1× 3 4 5 6 7 8 9 10 11-13 14 15-18 19 20 21
次数减少;不同的计算机系统,有不同页面大小;
11
(3)程序的编制方法
例:程序要把128×128的数组初值置“0”,数组 中每一个元素为一个字,假定页面大小为128个字, 数组中的每一行元素存放一页,能供该程序使用 的主存块只有1块。初始时第一页在内存; 程序编制方法1: 程序编制方法2: For j:=1 to 128 For i:=1 to 128 For i:=1 to 128 For j:=1 to 128 A[i][j]:=0; A[i][j]:=0; 按列:缺页中断次数: 按行:缺页中断次数 128-1 128×128-1
21
D A D A C D B C + +
B B A D +
E E B A +
A B C D E E E C D D B B E C C A A B E E + +
计算机虚拟存储器思维导图

改进型——增加对修改位M思维判断
lo 置换算法(对访问位A的判断)
空闲页面链表
页面缓冲算法( A,pa
n
修改页面链表
lg i )
页面置换算法
格式:页号+物理块号+状态位P+访问字段A+修 改位M+外存地址
请求页表机制 缺页中断机构
硬件
地址变换机构(过程图很关键)
即能保证进程正常运行所需的最小物理块数
离散性
指在内存分配时采用离散的分配方式,它是虚拟 存储器的实现的基础
多次性
指一个作业被分成多次调入内存运行,即在作业 运行时没有必要将其全部装入,只须将当前要运 行的那部分程序和数据装入内存即可。多次性是 虚拟存储器最重要的特征
对换性 虚ቤተ መጻሕፍቲ ባይዱ性
指允许在作业的运行过程中在内存和外存的对换 区之间换进、换出。
即刚被换出的页很快又要被访问,需要将它重新 调入,此时又需要再选一页调出
抖动的概念
最佳置换算法(需要预知后面进程,所以不能实 现)
选择在内存中驻留时间最久的页面予以淘汰
先进先出页面置换算法( I O)
寄存器支持 特殊的栈结构
最近最久未使用置换算法(L U)Re n
最少使用置换算法(L U)F e n
系统应该从何处调入这些页面
页面调入策略
页面调入过程
缺页率(出计算题)
请求分段的段表机构
缺段中断机构
硬件
请求分段系统
地址变换机构
虚拟存储器的实现方式
第五章:虚拟存储器
常规存储管理方式的特征
一次性 驻留性
局部性原理
请求页式存贮管理

请求页式存贮管理
1 虚拟存储器
前面的存贮管理的特点是作业运行时, 整个作业的地址空间必须全部装入主存。而 当作业的地址空间大于主存可用空间时,该 作业就无法运行。这种存贮管理技术叫实存 管理技术。
与实存管理技术相对应的是虚拟存贮技 术。现在许多功能较强的计算机,无论是微 型、小型、中大型机,均采用了虚拟存贮技 术。
请求页式存贮管理
4 缺页中断
如果内存中有空闲块,则分配一页, 将新调入页装入内存,并修改页表中相应 页表项目的驻留位及相应的内存块号。
若此时内存中没有空闲块,则要淘汰 某页,若该页在内存期间被修改过,则要 将其写回外存。
4 缺页中断
缺页次数F
由图可知,
10000
当主存容量增加
9000
时,缺页中断次
请求页式存贮管理
2 页式虚拟存储管理实现原理
为了有效选择被淘汰的页,通常页表中再 增加两个标志位:访问位和修改位。
访问位指示该页最近是否被访问过。“1” 表示访问,“0”表示没有被访问。
修改位指示该页调入主存后是否被修改过。 “1”表示修改过,0表示未修改过。
选择一页淘汰时,要选择访问位为0、修 改位也为0的页。若这样的页没有找到,则选 择访问位为0修改位为1的页淘汰。当淘汰这 样一页时,要将被淘汰的页写回到辅存上去, 以保证信息的一致性。
页2 3 3 3 4 4 4 4 4 2 2 2
页3
2223333311
xxxxxxxvvxxv
共缺页中断9次 命中率=3/12*100%=25%
先进先出页面淘汰算法(FIFO)
FIFO算法虽然易于实现,但出现抖动外,还 会有一种异常现象。Belady在1969年发现,采用 FIFO算法时,为作业分配的主存块越多,反而缺 页中断次数越多。这种奇怪的现象就叫做Belady 异常。下面举例说明这一异常。某作业有5个页 面,执行时引用的页序列为:
存储管理

第五章存储管理1存储管理的主要功能是什么?【解答】①主存的分配和回收存储管理的一个主要功能就是实现主存的分配和回收。
多个进程同时进入主存,怎样合理分配主存空间,哪些区域是已分配的,哪些区域未分配,按什么策略和算法进行分配使得主存空间得到充分利用。
当一个作业撤离或执行完后,系统必须收回它所占用的主存空间②地址变换用户在程序中使用的是逻辑地址,而处理器执行程序时是按物理地址访问主存,要把逻辑地址变换为物理地址,存储管理软件必须配合硬件进行地址转换工作,把逻辑地址转换成物理地址,以保证处理器的正确访问。
③存储共享内存共享的原因有两个:一是为了更有效地使用内存空间;二是为了实现两个协同工作的进程所共享的内存缓冲区。
使多个进程能动态地共享内存,以及多个进程可以共同使用同一软件,如编译程序,存放编译软件的内存即为共享内存区。
④“扩充”主存容量它借助于提供虚拟存贮器或其他自动覆盖技术,来达到“扩充”主存容量的目的。
即为用户提供比主存的存储空间还大的地址空间。
⑤存储保护保证各道作业都在自己所属的存储区内操作,必须保证它们之间不能相互干扰、相互冲突和相互破坏,特别要防止破坏系统程序。
为此,一般由硬件提供保护功能,软件配合实现。
2什么是地址重定位?动态重定位如何实现?【解答】为了保证作业的正确执行,必须根据分配给作业的主存区域对作业中指令和数据的存放地址进行重定位,即要把逻辑地址转换成绝对地址。
把逻辑地址转换成绝对地址的工作称“重定位”或“地址转换”。
重定位的方式可以有“静态重定位”和“动态重定位”两种。
动态重定位由软件和硬件相互配合来实现。
硬件要有一个地址转换机构,该机构可由一个基址寄存器和一个地址转换线路组成。
存储管理为作业分配主存区域后,装入程序把作业直接装到所分配的区域中并把该主存区域的起始地址存入相应作业进程的进程控制块中。
当作业进程被调度去占用处理器时,随同现场信息的恢复,作业所占的主存区域的起始地址也被存放到“基址寄存器”中。
简述实现虚拟存储器的基本原理

简述实现虚拟存储器的基本原理虚拟存储器是计算机系统中一种技术,可以将物理内存和磁盘空间组合使用,使得计算机系统可以处理大型程序和数据集。
它的基本原理是将物理内存中未使用或频繁不用的部分换出到磁盘中,以增加可用物理内存空间。
当程序需要这些数据时,虚拟存储器会将其换入物理内存。
下面将介绍实现虚拟存储器的基本原理。
一、分段和分页实现虚拟存储器的首要任务是对物理内存和磁盘空间进行分割,以便于管理。
分段和分页是两种基本的内存管理技术。
分页将物理内存空间划分为固定大小的块,称为页面,而分段则将内存空间分为不同段,每个段具有不同的长度和属性。
虚拟存储器的实现通常采用分页技术,因为它可以更好地利用内存空间。
二、页面交换在虚拟存储器中,磁盘空间被称为页面文件,操作系统会将物理内存中的页面换出到页面文件中,以空出空间。
当程序需要访问这些页面时,操作系统会将页面从磁盘中换入到物理内存中。
这个过程被称为页面交换。
页面交换的首要目的是增加可用的物理内存空间。
每个程序使用的内存不能超过物理内存的大小,因此,操作系统必须决定哪些页面需要换出,以便于后续的访问。
三、页面置换算法在虚拟存储器中,操作系统必须确定哪些页面需要换出,并决定哪些页面需要换入,这个过程是页面置换算法。
页面置换算法的目的是将频繁不用或未使用的页面换出到磁盘中,以便于释放物理内存空间。
常见的页面置换算法有FIFO、LRU和钟表算法,它们各自有不同的实现细节和效率。
FIFO算法通过维护一个页面队列来确定需要换出的页面,LRU算法则使用页面访问时间来确定页面的访问频率。
钟表算法可以更好地处理循环访问问题。
四、页面保护机制虚拟存储器还需要有页面保护机制,以确保程序之间的内存不受到互相干扰。
页面保护机制需要暴露页面是否可以被访问的信息,以及访问权限是否正确。
当程序访问一个页面时,操作系统会检查该页面是否被保护,以及访问权限是否正确。
如果访问权限不正确,操作系统会产生一个异常,以防止程序继续访问这个页面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮海工学院计算机工程学院 实验报告书
课程名: 《 操作系统原理 》 题 目: 虚拟存储器管理 班 级: 学 号: 姓 名:
评语:
成绩: 指导教师: 批阅时间: 年 月 日 《 计算机操作系统 》实验报告 - 1 - 一、目的与要求 请求页式虚存管理是常用的虚拟存储管理方案之一。通过请求页式虚存管理中对页面置换算法的模拟,有助于理解虚拟存储技术的特点,并加深对请求页式虚存管理的页面调度算法的理解。 二.实验环境 Turbo C 2.0/3.0或VC++6.0 三.实验学时 4学时,必做实验。 四.实验内容 本实验要求使用C语言编程模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时分别使用FIFO和LRU算法进行页面置换的情形。其中虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以事先保存在文件中。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。程序应允许通过为该进程分配不同的实页数,来比较两种置换算法的稳定性。 五、实验说明
1.设计中虚页和实页的表示 本设计利用C语言的结构体来描述虚页和实页的结构。
pn pfn time 虚页结构 实页结构 在虚页结构中,pn代表虚页号,因为共10个虚页,所以pn的取值范围是0—9。pfn代表实页号,当一虚页未装入实页时,此项值为-1;当该虚页已装入某一实页时,此项值为所装入的实页的实页号pfn。time项在FIFO算法中不使用,在LRU中用来存放对该虚页的最近访问时间。
在实页结构中中,pn代表虚页号,表示pn所代表的虚页目前正放在此实页中。pfn代表实页号,取值范围(0—n-1)由动态指派的实页数n所决定。next是一个指向实页结构体的指针,用于多个实页以链表形式组织起来,关于实页链表的组织详见下面第4点。
pn pfn next 《 计算机操作系统 》实验报告 - 2 - 2.关于缺页次数的统计
为计算命中率,需要统计在20次的虚页访问中命中的次数。为此,程序应设置一个计数器count,来统计虚页命中发生的次数。每当所访问的虚页的pfn项值不为-1,表示此虚页已被装入某实页内,此虚页被命中,count加1。最终命中率=count/20*100%。 3.LRU算法中“最近最久未用”页面的确定
为了能找到“最近最久未用”的虚页面,程序中可引入一个时间计数器countime,每当要访问一个虚页面时,countime的值加1,然后将所要访问的虚页的time项值设置为增值后的当前countime值,表示该虚页的最后一次被访问时间。当LRU算法需要置换时,从所有已分配实页的虚页中找出time值为最小的虚页就是“最近最久未用”的虚页面,应该将它置换出去。 4.算法中实页的组织
因为能分配的实页数n是在程序运行时由用户动态指派的,所以应使用链表组织动态产生的多个实页。为了调度算法实现的方便,可以考虑引入free和busy两个链表:free链表用于组织未分配出去的实页,首指针为free_head,初始时n个实页都处于free链表中;busy链表用于组织已分配出去的实页,首指针为busy_head,尾指针为busy_tail,初始值都为null。当所要访问的一个虚页不在实页中时,将产生缺页中断。此时若free链表不为空,就取下链表首指针所指的实页,并分配给该虚页。若free链表为空,则说明n个实页已全部分配出去,此时应进行页面置换:对于FIFO算法要将busy_head 所指的实页从busy链表中取下,分配给该虚页,然后再将该实页插入到busy链表尾部;对于LRU算法则要从所有已分配实页的虚页中找出time值为最小的虚页,将该虚页从装载它的那个实页中置换出去,并在该实页中装入当前正要访问的虚页。
实验步骤 1.复习C语言中关于文件操作的相关函数的用法。 2.根据程序的功能要求,画出相应的程序流程图。 3.按照程序流程图,用C语言编程并实现。 实验说明 本实验如未选做,建议教师上课时演示一下运行效果;如被选做,建议学生们利用课余时间完成基本的编程工作,以提高实验课教师指导的效率。 分析与思考 1.C语言中文件操作的关键是什么? 2.C语言中操作文件的库函数与操作系统中文件子系统提供的系统调用的关系如何? 《 计算机操作系统 》实验报告 - 3 -
六 、测试数据与实验结果(可以抓图粘贴)
图一(LRU) 《 计算机操作系统 》实验报告 - 4 - 图二(FIFO)
图三(FIFO) 图四(FIFO) 《 计算机操作系统 》实验报告 - 5 - 图五(FIFO) 七、源程序 1、LRU源程序: #include #include #define M 4 #define N 17 #define Myprintf printf("|>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>|\n") /*表格控制*/ typedef struct page { int num; /*记录页面号*/ int time; /*记录调入内存时间*/ }Page; /* 页面逻辑结构,结构为方便算法实现设计*/ Page b[M]; /*内存单元数*/ int c[M][N]; /*暂保存内存当前的状态:缓冲区*/ int queue[100]; /*记录调入队列*/ int K; /*调入队列计数变量*/ /*初始化内存单元、缓冲区*/ void Init(Page *b,int c[M][N]) { int i,j; for(i=0;i{ b[i].num=-1;+ b[i].time=N-i-1; 《 计算机操作系统 》实验报告 - 6 - } for(i=0;ifor(j=0;jc[i][j]=-1; } /*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/ int GetMax(Page *b) { int i; int max=-1; int tag=0; for(i=0;i{ if(b[i].time>max) { max=b[i].time; tag=i; } } return tag; } /*判断页面是否已在内存中*/ int Equation(int fold,Page *b) { int i; for(i=0;i{ if (fold==b[i].num) return i; } return -1; } /*LRU核心部分*/ void Lru(int fold,Page *b) { int i; int val; val=Equation(fold,b); if (val>=0) { b[val].time=0; for(i=0;iif (i!=val) b[i].time++; } else { 《 计算机操作系统 》实验报告 - 7 - queue[++K]=fold;/*记录调入页面*/ val=GetMax(b); b[val].num=fold; b[val].time=0; for(i=0;iif (i!=val) b[i].time++; } } /*主程序*/ void main() { int a[N]={4,3,2,1,4,3,5,4,3,2,1,4,3,2,1,5,2}; int i,j; start: K=-1; Init(b, c); for(i=0;i{ Lru(a[i],b); c[0][i]=a[i]; /*记录当前的内存单元中的页面*/ for(j=0;jc[j][i]=b[j].num; } /*结果输出*/ printf(" LRU页面置换算法:\n内存状态为:\n"); Myprintf; for(j=0;jprintf("|%2d ",a[j]); printf("|\n"); Myprintf; for(i=0;i{ for(j=0;j{ if(c[i][j]==-1) printf("|%2c ",32); else printf("|%2d ",c[i][j]); } printf("|\n"); } Myprintf; printf("\n调入队列为:"); for(i=0;iprintf("%3d",queue[i]); printf("\n缺页次数为:%6d\n缺页率:%16.6f",K+1,(float)(K+1)/N); printf("\nAre you continuing!\ty?"); if(getche()=='y') goto start;}