操作系统页式存储管理_第1页
操作系统页式存储管理_第2页
操作系统页式存储管理_第3页
操作系统页式存储管理_第4页
操作系统页式存储管理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.4 页式存储管理6.4.1 基本原理6.4.2 管理6.4.3 硬件支持6.4.4 静态页式管理6.4.5 请求页式管理6.4.6 页式管理的优缺点6.4.1 基本思想(工作原理)用户程序划分 把用户程序按逻辑页划分成大小相等的部分,称为页。从0开始编制页号,页内地址是相对于0编址逻辑地址页号页号 页内地址页内地址 内存空间 按页的大小划分为大小相等的区域,称为内存块(物理页面) 内存分配 以页为单位进行分配,并按作业的页数多少来分配。逻辑上相邻的页,物理上不一定相邻.01234560123456作业的作业的地址空间地址空间页框页框(物理块)(物理块)页号页号页表页表主存中页框主存中页框(

2、物理块)(物理块).6.4.2 管理 页表:系统为每个进程建立一个页表,页表给出逻辑页号和具体内存块号相应的关系。页号页面号0213286.4.3 硬件支持p页表页表地址越界地址越界 l比较P=l b+页号p 页内地址dPd物理地址物理地址页表地址寄存器页表地址寄存器页表长度寄存器页表长度寄存器逻辑地址逻辑地址地址映射机制二次访问内存第一次取地址第二次存取数据效率较低p页表页表地址越界地址越界 l比较P=lpp. . .快表快表 b+页号p 页内地址dPd物理地址物理地址页表地址寄存器页表地址寄存器页表长度寄存器页表长度寄存器逻辑地址逻辑地址地址映射机制高速缓存6.4.4 静态页式管理 将程序

3、的逻辑地址空间和物理内存划分为固定大小的页或页面(page or page frame),程序加载时,分配其所需的所有页,这些页不必连续。FrameNumber0123456789101112131401234567891011121314A.0A.1A.2A.301234567891011121314 A.0 A.1 A.2 A.3B.0B.1B.201234567891011121314 A.0 A.1 A.2 A.3B.0B.1B.2 C.0 C.1 C.2 C.301234567891011121314A.0A.1A.2A.3C.0C.1C.2C.3012345678910111213

4、14 A.0 A.1 A.2 A.3 C.0 C.1 C.2 C.3D.0D.1D.2D.3D.41. 简单页式管理的数据结构 页表:每个进程有一个页表,描述该进程占用的物理页面及逻辑排列顺序; 逻辑页号(本进程的地址空间)物理页面号(实际内存空间); 存储页面表:整个系统有一个存储页面表,描述物理内存空间的分配使用状况。 数据结构:位示图,空闲页面链表; 请求表:整个系统有一个请求表,描述系统内各个进程页表的位置和大小,用于地址转换,也可以结合到各进程的PCB里;2. 分配算法请求n个页面存储页面表中有n个空闲页面吗无法分配返回设置请求表,将页表始址,页表长度置入请求表中,置状态已分配搜索存

5、储页面表,分配n个页面,并将页面号填入页表中3. 简单页式管理的地址变换 指令所给出地址分为两部分:逻辑页号,页内偏移地址查进程页表,得物理页号物理地址 为缩短查找时间,引入快表,按内容查找(associative mapping),即逻辑页号物理页号ProgramPagingMain MemoryVirtual AddressRegisterPage TablePageFrameOffsetP#Frame #Page Table PtrPage #OffsetFrame #Offset+页号页面号021328 设每个页面长度为1k,指令LOAD 1,2500 的虚地址为100,依据左图进行地

6、址变换。 首先,需要有一个页表地址寄存器和页表长度寄存器。系统把所调度执行的进程页表始址和长度从请求表中取出置入寄存器 然后,找到页表。由虚地址100可知,指令在第0页的第100单元中,对应内存地址为1024*2+100=2148 当CPU执行到第2148单元时,需要从虚地址2500中取数据,地址变换机构首先将2500的页号和页内位移求出:2;452 由页表可知,对应内存8号,内存地址为1024*8+452=8644 以上由硬件地址变换机构自动完成。 优点: 没有外碎片,每个内碎片不超过页大小。 一个程序不必连续存放。 便于改变程序占用空间的大小。即随着程序运行而动态生成的数据增多,地址空间可

7、相应增长。 缺点:程序全部装入内存,受到内存可用页面数的限制。6.4.5 动态(请求)页式管理 在进程开始运行之前,不是装入全部页面,而是装入部分页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。 请求页式的地址变换与静态页式的相同。 但是,由于只让部分页面驻留内存,如何发现那些不在内存的虚页以及如何处理是请求页式必须处理的问题。 第一个问题可以通过扩充页表的方法解决;第二个问题当内存没有空闲页面时即是页面置换算法的问题。 页表表项 页号、驻留位、内存块号、外存始址、访问位、修改位 驻留位(中断位):表示该页是

8、在内存还是在外存 访问位:根据访问位来决定淘汰哪页(由不同的算法决定) 修改位:查看此页是否在内存中被修改过页号页号中断位中断位 内存块号内存块号外存始址外存始址访问位访问位 修改位修改位 缺页中断处理在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,将该页调入内存,使作业继续运行下去如果内存中有空闲块,则分配一页,将新调入页装入内存,并修改页表中相应表项若此时内存中没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存查快表有登记无登记查页表登记入快表发缺页中断在主存在辅存形成绝对地址

9、继续执行指令重新执行被中断指令恢复现场调整页表和主存分配表装入所需页面主存有空闲块保护现场有选择调出页面未修改已修改把该页写回辅存相应位置硬件完成逻辑地址无该页修改过? 页面置换算法 随机置换算法 先进先出算法(FIFO) 最近最久未使用算法(LRU, Least Recently Used) 时钟页面替换算法(Clock Policy) 最佳置换算法(OPT, optimal)1. 先进先出算法(FIFO) 选择建立最早的页面被置换。可以通过链表来表示各页的建立时间先后。性能较差。较早调入的页往往是经常被访问的页,这些页在FIFO算法下被反复调入和调出。并且有Belady现象。 Belady

10、现象:采用FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多,缺页率反而提高的异常现象。 Belady现象的描述:一个进程P要访问M个页,OS分配N个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(S,N)。当N增大时,PE(S, N)时而增大,时而减小。 Belady现象的原因:FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的。Belady现象的例子进程P有5页程序访问页的顺序为:1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5;如果在内存中分配3个页面,则缺页情况如下:12次访问中有缺页

11、9次;123412512345111444555555222111113333332222244如果在内存中分配4个页面,则缺页情况如下:12次访问中有缺页10次;1234125123451111115555442222221111533333322224444443332.最近最久未使用算法(LRU) 该算法淘汰的页面是在最近一段时间里较久未被访问的那一页。它是根据程序执行时所具有的局部性来考虑的,即那些刚被使用过的页面,可能马上还要被使用,而那些在较长时间里未被使用的页面,一般说可能不会马上使用到。 给某作业分配了三块主存,该作业依次访问的页号为:4,3,0,4,1,1,2,3,2。于是当

12、访问这些页时,页面淘汰序列的变化情况如下: 4304112324444444333331111100002224304112324304112324304412343004113.时钟页面替换算法(Clock Policy) 一个页面首次装入主存时,其”引用位”置0。 在主存中的任何一个页面被访问时, 其”引用位”置1。 淘汰页面时,存储管理从指针当前指向的页面开始扫描循环队列,把所迁到的”引用位”是1的页面的”引用位”清成0,并跳过这个页面; 把所迁到的”引用位”是0的页面淘汰掉,指针推进一步。 它是LRU(最近最久未使用算法)和FIFO的折衷。P a g e 9 use=1Page19Us

13、e=1Page1Use=0Page45Use=1Page191Use=1Page556Use=0Page13Use=0Page67Use=1Page33Use=1Page222Use=0下一个帧指针n012345678(a)一个页替换前的缓冲区状态P a g e 9 use=1Page19Use=1Page1Use=0Page45Use=0Page191Use=0Page727Use=1Page13Use=0Page67Use=1Page33Use=1Page222Use=0n012345678(b)下一页替换后的缓冲区状态1第1页框当发生缺页中断时,将要进入主存的页面是page727,指针指

14、向的是page45(在页框2中)。Clock页面替换算法执行如下:page45的”引用位”是1,故它不能被淘汰掉,仅把其”引用位”清0,指针推进。同样道理,page191(在页框3中)也不能被替换, 把其”引用位”清0,指针继续推进。在下一页即page556(在页框4中),它的”引用位”是0,于是,page556被page727替换,并把page727的”引用位”置1,指针前进到下一页page13(在页框5中)。算法执行到此结束。4. 最佳算法(OPT, optimal)选择“未来不再使用的”或“在离当前最远位置上出现的”页面被置换。这是一种理想情况,是实际执行中无法预知的,因而不能实现。可用

15、作性能评价的依据。430411232444411222333333330000000(1) 分配给进程的物理页面数(2) 页面本身的大小(3) 程序的编制方法(4) 页面淘汰算法 影响缺页次数的因素例子3:内存分配一页,初始时第一页在内存;页面大小为128个整数;矩阵A128X128按行存放程序编制方法1: For j:=1 to 128 For i:=1 to 128 Ai,j:=0;程序编制方法2: For i:=1 to 128 For j:=1 to 128 Ai,j:=0;6.4.6 页式管理的优缺点 相对于分区管理而言,静态页式有效的解决了外部碎片的问题(当然有少量的内部碎片);

16、但是,静态页式要求全部装入,不支持虚拟存储,因而有了请求页式,允许部分装入; 显然地,请求页式更能有效利用有限的内存页面,不过,这种方式需要有效解决缺页率的问题,尤其是页面置换的问题; 不论是静态还是请求方式,更多地是从物理页面的角度考虑和解决问题,有的时候,需要从逻辑角度考虑问题,比如共享,这就引入了段式管理方法。 习题:某程序在内存中分配三个页面,初始为空,页面走向为4,3,2,1,4,3,5,4,3,2,1,5,计算采用FIFO , LRU , OPT进行页面置换时相应的缺页次数。432143543215444111555555333444442222223333311 FIFO:缺页9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论