330 likes | 509 Views
第 5 章 存储管理. 5.1 存储管理的功能 5.2分区存储管理 5.3 覆盖与交换技术 5.4页式管理 5.5 段式与段页式管理 5.6 局部性原理和抖动问题. 5.3 覆盖与交换技术. 覆盖与交换技术是多到环境下扩充内存的两种方法 覆盖原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。 覆盖缺点要求程序员提供一个清晰的覆盖结构.
E N D
第5章 存储管理 • 5.1存储管理的功能 • 5.2分区存储管理 • 5.3覆盖与交换技术 • 5.4页式管理 • 5.5段式与段页式管理 • 5.6局部性原理和抖动问题
5.3覆盖与交换技术 • 覆盖与交换技术是多到环境下扩充内存的两种方法 • 覆盖原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。 • 覆盖缺点要求程序员提供一个清晰的覆盖结构
5.3覆盖与交换技术 • 交换技术原理:内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据,调入内存。对换是提高内存利用率的有效措施 • 交换技术优点:增加并发运行的程序数目,并且给用户提供适当的响应时间;编写程序时不影响程序结构 • 交换技术缺点:对换入和换出的控制增加处理机开销;程序整个地址空间都进行传送,没有考虑执行过程中地址访问的统计特性
5.4页式管理 • 连续分配方式会形成许多碎片,虽然通过“紧凑”可以拼接,但是必须付出很多开销。因此产生了离散分配方式,如果离散分配基本单位是页,则称为分页存储管理方式;如果离散分配基本单位是段,则称为分段存储管理方式 • 分页原理:分页存储管理,是将一个进程的逻辑地址空间分成若干个大小相等的片,称为页面或页,并为各页加以编号。相应地,也把内存空间分成与页面相同大小的若干个存储块,称为(物理)块或页框(frame),在为进程分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。由于进程的最后一页经常装不满一块而形成了不可利用的碎片,称之为“页内碎片”。
5.4页式管理 • 基本概念 • 分页:把用户程序按逻辑页划分成大小相等的部分,称为页或虚页。从0开始编制页号,页内地址是相对于0编址。 • 块:内存按页的大小划分为大小相等的区域,称为内存块(物理页面,页框) • 页面大小: 页面的大小应选择得适中,且页面大小应是2的幂,通常为512 B~8 KB • 内存分配:以页为单位进行分配,并按作业的页数多少来分配。逻辑上相邻的页,物理上不一定相邻,通过页表把作业的各个页面与页框对应起来。需要CPU的硬件支持。 • 分页管理可以解决碎片问题
5.4页式管理-地址变换机构 • 为了实现从逻辑地址空间到物理存储空间的地址变化,在应上必须提供一套地址变换机构 • 指令所给出地址分为两部分:逻辑页号,页内偏移地址->查进程页表,得物理页号->物理地址 • 为缩短查找时间,可以将页表从内存装入到快表( TLB, Translation Lookaside Buffer, 关联存储器),按内容查找(associative mapping),即逻辑页号->物理页号
5.4页式管理-地址变换机构 页式地址变换
5.4页式管理-地址变换机构 页式地址变换举例
5.4页式管理-地址变换机构 • 高速页面寄存器:为了实现地址空间的变换,可以采用硬件的高速寄存器来实现地址的变换
5.4页式管理-请求分页存储管理 • 请求式分页也称虚拟页式存储管理 • 原理:与纯分页存储管理不同,请求式分页管理系统在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面.
5.4页式管理-请求分页存储管理 • 系统需要解决下面三个问题: • 系统如何获知进程当前所需页面不在主存。 • 当发现缺页时,如何把所缺页面调入主存。 • 当主存中没有空闲的页框时,为了要接受一个新页,需要把老的一页淘汰出去,根据什么策略选择欲淘汰的页面 • 置换算法:当要放一页面到全满的主存块时,系统需淘汰一页。用来选取淘汰哪一页的规则,叫置换算法。 • 最佳置换算法 • 先进先出置换算法 • 最近最久未用置换算法 • 近似的LRU算法(NRU算法)
1.先进先出算法(FIFO算法) • 这种算法的基本思想是:总是先淘汰那些驻留在内存时间最长的页面,即先进入内存的页面先被置换掉。理由是:最先进入内存的页面不再被访问的可能性最大。
2.最久未使用置换算法(LRU算法) • 这种算法的基本思想是,如果某一页被访问了,那么它很可能马上又被访问;反之,如果某一页很长时间没有被访问,那么最近也不太可能会被访问。这种算法考虑了程序设计的局部性原理。其实质是,当需要置换一页时,选择在最近一段时间最久未使用的页面予以淘汰。 • 实现这种算法可通过周期性地对“引用位”进行检查,并利用它来记录一页面自上次被访问以来所经历的时间t,淘汰时选择t最大的页面。
3.LRU近似算法 • 这种算法,只要在存储分块表(或页表)中设一个“引用位”,当存储分块表中的某一页被访问时,该位由硬件自动置1,并由页面管理软件周期性把所有引用位置0。这样,在一个时间周期T内,某些被访问过的页面其引用位为1,而未被访问过的页面其引用位为0。因此,可根据引用位的状态来判别各页面最近的使用情况。当需要置换一页面时,选择其引用位为0的页,
4.最优算法(OPT算法) • 最理想的页面置换算法是:从内存中移出以后不再使用的页面;如无这样的页面,则选择以后最长时间内不需要访问的页。这就是最优算法的思想。 • 这种算法本身不是一种实际的方法,因为页面访问的顺序是很难预知的。但是,可把它作为一种评价标准,比较其他实用方法的优劣,所以,最优算法只具有理论上的意义。
例 • 【例1】主存块数m=3,置换算法采用FIFO算法,缺页中断次数及缺页率如图所示。 • 在图中,P行表示页面走向,M行表示在主存中的页面号,其中带有+的表示新调入页面,在M行的各列按调入的顺序排列,带有圆圈的数字表示下一时刻将被淘汰页面,F行表示是否引起缺页中断,带√号的表示引起缺页中断。从图可以看出,缺页中断页数为9次,缺页率f=9/12=75%。
【例2】设m=4,仍采用FIFO算法,缺页中断次数及缺页率如图6.14所示。可以算出,在分配给该作业的内存块数增加到4时,缺页中断由图6.13的9次反而增加到了10次,缺页率由75%增加到10/12=83%,这就是FIFO算法的一种异常现象。随着分配的主存块数的增加,缺页中断次数不但没有降低,反而增加了。这与该算法定全不考虑程序的动态特征有关。【例2】设m=4,仍采用FIFO算法,缺页中断次数及缺页率如图6.14所示。可以算出,在分配给该作业的内存块数增加到4时,缺页中断由图6.13的9次反而增加到了10次,缺页率由75%增加到10/12=83%,这就是FIFO算法的一种异常现象。随着分配的主存块数的增加,缺页中断次数不但没有降低,反而增加了。这与该算法定全不考虑程序的动态特征有关。
【例3】设m=3,采用LRU算法,缺页中断次数及缺页率如图所示。【例3】设m=3,采用LRU算法,缺页中断次数及缺页率如图所示。 LRU算法性能分析(m=3)
【例4】设m=4,其余同例3,则缺页中断次数及缺页率如图所示。 LRU算法性能分析(m=4)
5.5段式与段页式管理5.5.1段式管理的基本思想-基本原理5.5段式与段页式管理5.5.1段式管理的基本思想-基本原理 • 在段式存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。 • 它以段为单位分配主存,每段分配一个连续的主存空间,但各段之间不要求连续。 • 供用户使用的逻辑地址为段号+段内地址。在装入作业时,用一张段表记录每个分段在主存中的起始地址和长度。若装入作业的某段信息找不到足够大的空闲区,可采用移动技术,合并分散的空闲区。 • 主存的分配与回收类似于动态分区分配,采用动态重定位。
逻辑段号 长度 段地址 操作系统 0 0 M 1000 K 3200 0 K P P 1500 1 0 1 X L 6000 2 3200 P N 8000 3 K 0 S 5000 4 2 Y 5000 L S 0 6000 3 A L N 0 8000 4 N B S 作业 的地址空间 主存
段的共享 • 分段易于实现段的共享,即允许若干个进程共享一个或多个分段 • 段的共享,是通过不同作业段表中的项指向同一个段基址来实现。(如下图) • 几道作业共享的例行程序就可放在一个段中,只要让各道作业的共享部分有相同的基址/限长值。 • 对共享段的信息必须进行保护
进程1 段表 80 240 280 380 420 进程2 分段系统中共享editor段的示意图
5.5.2段式管理的实现原理-基本原理 • 段页式存储管理方式的基本原理是段式和页式系统工作原理的组合。 • 即先把用户程序分成若干个段,并为每个段赋予一个段名,每段可以独立从“0”编址。再把每个段划分成大小相等的若干个页,把主存分成与页大小相同的块。 • 每段分配与其页数相同的主存块,主存块可以连续,也可以不连续。
地址转换 • 在进行地址转换时,首先利用段号,将它与段表寄存器中的段长进行比较,若大于段长则产生越界中断。否则,利用段表始址和段号在段表中找到相应页表的始址。 • 再利用逻辑地址中的页号,与段表中的页长比较,若页号大于该页表长度,产生越界中断,否则,在页表中找出其对应的块号,再与逻辑地址中的页内地址一起组成物理地址。 • 地址转换如下图。
地址结构: 联想存储器 段号(S) 段内页号(P) 页内地址(W) 段表地址寄存器 虚拟地址 s p p’ 段表长度 起始地址 s p d 段表 S段的页表 … 页表长页表基址 块号 … p’ P’+d 物理地址 … … • 段页式地址变换机构
段表地址寄存器 段表长度 起始地址 …