请求页式存储管理

合集下载

请求页式存储管理中页表的组成

请求页式存储管理中页表的组成

请求页式存储管理中页表的组成
页式存储管理中,页表是管理页面和物理页面之间映射关系的数据结构,用于记录页面的虚拟地址和物理地址之间的对应关系。

页表的组成主要包括以下几个部分:
1. 页表项(Page Table Entry,PTE):每个页表项记录了虚拟
页面的页号和对应的物理页面的帧号,以及一些控制位和标志位,如有效位(valid bit)用于指示该页是否已经分配。

2. 页表:页表是一个由页表项组成的数组,数组的索引即是虚拟页面的页号,每个页表项对应一个虚拟页面。

3. 页目录(Page Directory):如果系统的虚拟地址空间较大,页表可能会非常大,而且维护和查找页表项也会比较费时。

为了简化管理和提高效率,可以引入多级页表机制,即使用页目录来管理页表。

页目录是一个由页目录项组成的数组,每个页目录项指向一个页表,实现了虚拟地址到页表的映射关系。

4. 页目录项(Page Directory Entry,PDE):每个页目录项记
录了一个页表的物理地址和一些控制位和标志位,如有效位用于指示该页表是否已经分配。

以上是页式存储管理中页表的基本组成部分,具体的实现可能因系统架构和算法的不同而有所差异。

16存储管理5请求页式管理请求段式管理2

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 + +

请求页式存储管理中页表的组成

请求页式存储管理中页表的组成

请求页式存储管理中页表的组成在计算机系统中,页式存储管理是一种常见的存储管理方式。

它将主存储器划分为固定大小的页框,将程序和数据分割成相同大小的页面,并将页面映射到页框中。

而页表则是页式存储管理中非常重要的组成部分。

页表是一种数据结构,用于记录页面和页框之间的映射关系。

它的主要作用是将逻辑地址转换为物理地址,实现虚拟内存到物理内存的映射。

在请求页式存储管理中,页表通常由两个部分组成:页目录和页表。

页目录是页表的第一级索引,用于将逻辑地址的高位映射到页表。

它的作用是将逻辑地址的高位转换为页表的物理地址,从而找到对应的页表。

页目录中的每个目录项都对应一个页表,每个目录项的大小通常为4字节。

页目录的大小取决于系统的虚拟地址空间大小和页框大小。

页表是页表的第二级索引,用于将逻辑地址的低位映射到页框。

它的作用是将逻辑地址的低位转换为页框的物理地址,从而找到对应的页框。

页表中的每个表项都对应一个页框,每个表项的大小通常为4字节。

页表的大小取决于系统的虚拟地址空间大小和页框大小。

在请求页式存储管理中,页表的组成可以根据系统的需求进行灵活的设计。

一种常见的设计是多级页表。

多级页表将页表分为多个级别,每个级别的页表都有自己的页目录和页表。

这种设计可以有效地减小页表的大小,提高地址转换的速度。

另一种常见的设计是倒排页表。

倒排页表将页表的索引和数据分开存储,通过索引表来查找页表的数据。

这种设计可以减小页表的大小,提高地址转换的速度。

但是倒排页表需要额外的索引表,增加了存储开销。

除了页目录和页表,页表还可以包含其他的信息,如访问权限、脏位、有效位等。

这些信息可以用于实现更加复杂的存储管理策略,如页面置换算法、页面共享等。

总之,请求页式存储管理中的页表是实现虚拟内存到物理内存映射的重要组成部分。

它由页目录和页表组成,可以根据系统的需求进行灵活的设计。

页表的组成和设计对于系统的性能和效率有着重要的影响,需要根据具体的应用场景进行选择和优化。

请求页式存贮管理

请求页式存贮管理
操作系统
请求页式存贮管理
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个页 面,执行时引用的页序列为:

4.3请求页式存储管理

4.3请求页式存储管理
每个页面设一计数器,每访问一次计数器加一,缺页时选择计数最 小的页面先淘汰,每隔某个时间内对计数器清零。缺点是代价较高。
5、最近没有使用页面先淘汰(NUR)
利用在页表中设置一个访问位即可实现,当某页被访问时,访问位置 “1”,否则访问位置“0”当需要淘汰一页时,从那些访问位为“0” 的页中选一页进行淘汰。系统周期性地对所有访问位清零。
4.3请求页式存储管理

3.3页式存储管理的优点
1、优点:
a、虛存量大,适合多道程序运行,用户不必担心内存不够的调度操作 b、内存利用率高,不常用的页面尽量不留在内存 c、不要求作业连续存放,有效地解决了“碎片”问题。与分区式比, 不需移动作业;与多重分区比,无零星碎片产生。 2、缺点:
a、要处理页面中断、缺页中断处理等,系统开销较大 b、有可能产生“抖动” c、地址变換机构复杂,为提高速度采用硬件实现,增加了机器成本
2、循环检测法
让循环多的页面留在内在。适合循环多的大程序,时空开销大, 系统要判断每个页面的驻留时间。
4.3请求页式存储管理

3.2请求淘汰换页算法3、最近最少使用Fra bibliotekLRU)页面先淘汰
截取一段最近的绝对时间,选择离当前时间最近一段时间内最久没 有使用过的页面先淘汰。
4、最不经常使用(LFU)的页面先淘汰
4.3请求页式存储管理

3.2请求淘汰换页算法
6、最优淘汰算法(OPT)
它是一种理想的淘汰算法,系统预测作业今后要访问的页面,淘汰页 是将来不被访问的页面或者最长时间后才能被访问的页面。淘汰该页 不会造成刚淘汰出去又立即要把它调入的现象。
7、随机数淘汰页面算法
在系统设计人员无法确定那些页的访问概率较低时,随机地选择某个 用户的页面进行淘汰也是一种方法。

第16讲 存储器管理之请求分页存储管理方式

第16讲 存储器管理之请求分页存储管理方式

第十六讲存储器管理之请求分页存储管理方式1 基本概述请求分页管理是建立在基本分页基础上的,为了能支持虚拟存储器而增加了请求调页功能和页面置换功能。

基本原理:地址空间的划分同页式;装入页时,可装入作业的一部分(运行所需)页即可运行。

2 请求分页的硬件支持为实现请求分页,需要一定的硬件支持,包括:页表机制、缺页中断机构、地址变换机构。

2.1 页表机制作用:将用户地址空间的逻辑地址转换为内存空间的物理地址。

因为请求分页的特殊性,即程序的一部分调入内存,一部分仍在外存,因此页表结构有所不同。

如图:说明:(1)状态位P:指示该页是否已调入内存。

(2)访问字段A:记录本页在一段时间内被访问的次数或最近未被访问的时间。

(3)修改位M:表示该页在调入内存后是否被修改过。

若修改过,则换出时需重写至外存。

(4)外存地址:指出该页在外存上的地址。

2.2 缺页中断机构在请求分页系统中,每当所要访问的页面不在内存时,便产生缺页中断,请求OS将所缺的页调入内存。

缺页中断与一般中断的区别:(1)在指令执行期间产生和处理中断信号(2)一条指令在执行期间,可能产生多次缺页中断2.3 地址变换机构请求分页系统的地址变换机构。

是在分页系统地址变换机构的基础上,又增加了一些功能。

例:某虚拟存储器的用户空间共有32个页面,每页1KB,主存16KB。

假定某时刻系统为用户的第0、1、2、3页分别分配的物理块号为5、10、4、7,试将虚拟地址0A5C和093C 变换为物理地址。

解:虚拟地址为:页号(2^5=32)5位页内位移(1K =2^10=1024)10位物理地址为物理块号(2^4=16)4位因为页内是10 位,块内位移(1K =2^10=1024)10位虚拟地址OA5C对应的二进制为:00010 1001011100即虚拟地址OA5C的页号为2,页内位移为1001011100,由题意知对应的物理地址为:0100 1001011100即125C同理求093C。

操作系统复习题

操作系统复习题

一、判断题并说明理由1、操作系统的基本思想是多道。

X 管理和控制系统资源2、分时系统的主要特点之一是交互性。

V3、高可靠性是实时系统的主要特点之一。

V4、请求页式存储管理是一种静态分区存储技术。

X 虚拟存储5、用户进程中使用的是从0开始编址的逻辑地址。

V1、作业的完成由相应的进程运行来实现。

2、联机控制方式用于终端型作业。

3、作业控制块由用户建立并保存于内存89。

V4、请求页式存储管理是一种交换技术。

X 虚拟存储5、在段页式存储管理中,段的长度由用户确定。

V1、“把某进程的状态变为运行”的指令是系统中的特权指令。

2、所谓“恢复现场”是指将现在信息恢复至CPU各相应的寄存器中。

3、在Windows系统中,使用的存储管理技术为请求页式。

X分区目录和文件目录的形式来存储的4、请求页式存储管理是一种静态分区存储技术。

X5、请求页式存储管理是一种虚拟存储技术。

V二、填空题(10分,每空1分)1. 从管理的角度看,外部设备的种类有输入设备和输出设备。

2. 缓冲区的组织形式主要有单缓冲、多缓冲、缓冲池。

3. 分区存储管理方法可分为单用户连续分区分区和固态分区。

4. 虚拟存储器的容量是由计算机系统的地址和结构确定的。

1. 现代操作系统的主要特征并发、共享、虚拟和异步。

2. 操作系统为用户提供两种类型的使用接口,即命令方式和系统调用和图形用户界面。

3. 用户的作业一般可分为批量型作业和终端型作业。

4. 作业控制方式分为两种,即脱机命令接口和联机命令接口。

5.“作业控制块”的英文缩写是JCB。

1. 外部设备的控制方式主要有4种程序直接控制方式、中断控制方式、DMA方式、通道方式。

其中第一种现在已基本不再采用。

2. 对磁盘上的一个物理块信息的访问时间包括寻道、读取、传输三部分。

3. 在资源分配图中,用圆圈代表一个继承,用方框代表每类资源,而方框中圆点则代表各类资源实例。

1. 产生死锁的四个必要条件是互斥条件和 CA:请求和阻塞条件; B:请求和释放条件;C:请求和保持条件; D:释放和阻塞条件;2. 在 A 中,要求空闲分区按空闲区地址递增顺序链接成空闲分区链;在 C_中是按空闲区大小递增顺序形成空闲分区链;在B 中,是按空闲区大小递减的顺序形成空闲分区链。

存储管理实验报告_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算法。

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

软件学院操作系统实验报告专业:软件工程班级: RB软工互152学号: 201560160226 学生姓名:王泽华指导教师:韩新超实验四:请求页式存储管理一.实验目的深入理解请求页式存储管理的原理,重点认识其中的地址变换、缺页中断、置换算法等实现思想。

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

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

本实验要求完成如下任务:(1)建立相关的数据结构:存储块表、页表等;(2)实现基本分页存储管理,如分配、回收、地址变换;(3)在基本分页的基础上实现请求分页存储管理;(4)给定一批作业/进程,选择一个分配或回收模拟;(5)将整个过程可视化显示出来。

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

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

五、实验提示1、本实验虽然不以前面实验为基础,但建议在其界面中继续增加请求页式存储管理功能。

2、数据结构:内存分配表、页表空间(用数组实现),修改PCB结构增加页表指针、页表长度。

3、存储管理:编写内存分配、内存回收算法、页面置换算法。

4、主界面设计:在界面上增加一个请求分页内存分配按钮、请求分页内存回收按钮、装入指定进程的指定页按钮。

触发请求分页内存分配按钮,弹出作业大小输入框,输入后调用内存分配函数,在内存分配表和页表中看到分配的存储块。

触发请求分页内存回收按钮,弹出进程ID输入框,输入后调用内存回收函数,在内存分配表中看到回收后的状态改变。

5、功能测试:从显示出的内存分配表和页表,可查看操作的正确与否。

六、实验步骤(1)任务分析:1.最佳页面置换算法(OPT ):其所选择的被淘汰页面,将是以后永不使用的或许是在最长(未来)时间内不再被访问的页面。

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

2.最近最久未使用(LRU )算法:当需要置换一页时,选择在最近一段时间里最久没有使用过的页面予以置换。

(2) 程序设计:程序功能模块图如下:(1在:所有线程都具有相同的地址空间(进程的地址空间)。

此外我们应该还要用控制语句,控制线程的同步执行。

2. 这个实验是要求我们采用算法模拟分页存储管理技术的FIFO 和LRU 算法。

所以我们应该先生成地址序列,有了地址序列,我们要找到它所在的虚页,然后通过查找实页,再判断下一步动作。

假如要访问的虚页不在内存中,不命中,我们要替换实页内容。

根据FIFO 算法,直接替换最早进入内存中的那一页就可以了。

所以可以设立一个循环指针,记录那个最早进入内存中的那页。

而对于LRU 算法,我们要替换是到现在为止最长时间没被访问的页,在这里我们可以用一个队列来表示内存。

把最久没使用的页放在队头,然后替换进去的页放在队尾就可以了。

假如要访问的虚页在内存中,明显是命中。

对于FIFO 算法,不处理,而对于LRU 算法,我们还要把他的权值置0。

(2)系统功能流程图:Y YN N(31.先进先出 定义一个队列存放页面,头指针记录最先进入队列的页面的位置,每次替换头指针指向的页面。

2.最近最少使用 定义一个二维数组,一维用来记录页面号,一维用来记录该页面被使用的次数,每次替换最近最少使用的页面(3)程序结果:在运行界面选择某个算法,运行结果,如图1,图2所示:图1新页进入计算过程数组第一 位,其余为一次下移 找到了吗? 计算命中率 结束 找到了吗?比较现有页面计数项的大小,新页面替换最大项页面计算命中率结束图2(3)调试与测试:1.第一道涉及线程的题编译时总是发生错误,原来编译这类程序在原有的编译语言后要加上-pthread.2.第二个分页算法我们在系统结构课已经做过这个实验,所以有了一定的了解,加上一点修改就能够使用了。

所以没太花功夫。

七、实验总结通过实现请求页式存储管理的几种基本页面置换算法,了解了虚拟存储技术的特点。

通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解,也知道了几种算法的效率,也验证了LRU算法的命中率平均的比FIFO算法要高。

通过本次实验,我收获了很多。

我了解到编写程序不是首要任务,而是一种实现手段。

我们最重要的是如何做好需求分析和理清思路,做出正确、简介的流程设计,这样可以达到事半功倍的效果。

八、附录//# include <windows.h>//# include <iostream>#include"stdio.h"#include<conio.h>#include <malloc.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();}.专业.整理.。

相关文档
最新文档