1、第三章 存储器管理,3.1 存储管理的功能,3.1.1 计算机系统的多级存储结构 目前许多计算机把存储器分为三级:外部存储器、主存储器和高速缓冲存储器。 本章主要介绍主存储器空间的管理原理和实现技术。,3.1.1计算机系统的多级存储结构,大多数计算机把存储器分为三级: 1、外部存储器(外存或辅存)2、主存储器(主存或内存)3、高速缓冲存储器,用来存放不立即使用的程序和数据,当用户的程序运行需要它们时,再从外存把它们读入到主存储器。,程序的运行总是存放在主存中,以便处理器的访问。,处理机取指令和存取数据就在高速缓冲存储器中进 行。,速度越来越快, 容量越来越小, 价格越来越昂贵。,多级存储之间的
2、关系,3.1.2 存储管理的任务和功能,存储管理的主要任务如下: (1)为多道程序的并发执行提供良好的环境。 (2)提高存储器利用率,尽量减少空闲及不可利用的主存储器区域。 (3)逻辑上扩充主存空间,使大程序能在小主存中运行。 (4)方便用户使用存储器,用户无需考虑存储器的分配、回收和保护等工作,这些工作完全由操作系统进行管理。,存储管理的功能:,1.存储空间的分配和回收 1)记住每个存储区域的状态 2)实施分配 3)接收系统或用户释放的存储区域,并相应地修改主存分配记录表 2. 地址映射和重定位:程序地址空间中的逻辑地址转换为主存空间中对应的物理地址 3. 存储共享与保护存储共享两种含义:1
3、)共同使用存储空间,各自使用不同的存储区域;2)共同使用主存中的某些程序和数据区共享区。 保护各存储区中的信息不被破坏和偷窃 及共享区信息的完整性和一致性 。 4. 主存扩充:主存单元逻辑上的扩充 。,3.2 存储分配的几种形式与重定位,3.2.1 存储分配的几种形式 :1. 直接存储分配方式2. 静态存储分配方式3. 动态存储分配方式,程序员在编写程序或编译程序对源程序编译时采用内存物理地址。,在将作业装入内存时才确定它们在内存中的位置。运行中固定不变。,不是一次性将程序全部装入主存,而是根据执行需要动态装入和回收,也可动态申请存储空间。 常采用覆盖与交换技术实现。,3.2.2 重定位,3.
4、2.2.1 地址空间和存储空间 相对地址 :编译系统总是从零号地址单元开始,为目标程序指令顺序分配地址。这些地址被称为相对地址。 逻辑地址空间 :相对地址的集合。 存储空间:主存中一系列存储信息的物理单元的集合。 物理(绝对)地址:物理单元的编号。 3.2.2.2 重定位的概念 重定位:相对地址转化为存储空间中的绝对地址的地址变换过程,称为地址重定位,也称地址映射。 地址重定位的方式:静态地址重定位和动态地址重定位,静态地址重定位:装配程序一次完成,0 0 1K1124 LOAD 1,1524100 LOAD 1,5001524 12345500 123452K1K程序主存 图3-2 程序由地
5、址空间装入存储空间,动态地址重定位:执行中,硬件地址转换机构完成,MA(BR)(VR),1. 静态地址重定位的缺点: 1)用户程序必须分配一个连续的存储空间。 2)难以实现程序和数据的共享。 2.动态地址重定位的优点是: 1)有利于提高主存的利用率和存储空间使用的灵 活性。 2)有利于程序段的共享实现。 3)为实现虚拟存储管理提供了基础。 3.动态地址重定位的缺点是: 1)实现存储器管理的软件比较复杂。 2)需要附加的硬件支持。,3.2.3 覆盖与交换,1. 覆盖技术 把程序划分为若干个功能相互独立的程序段,让那些不会同时被CPU执行的程序段共享同一个主存区。通常,这些程序段被保存在外存中,当
6、CPU要求某一程序段执行时,才将该程序段装入主存中覆盖以前的某一的程序段。对于用户看来,主存好像扩大了,这便是覆盖技术。,覆盖与交换是从逻辑上扩充主存的两种方法,解决在较小主存空间中如何执行大程序的问题。,例:main( )10kB(30k) A(40k)C(30k) D(30k) E(40k)利用覆盖技术总共只需 10+40+40=90k内存即可,2. 交换技术 交换技术指将系统暂时不用的程序或数据部分或全部从主存中调出,以腾出更大的存储空间,同时将系统要求使用的程序和数据调入主存中,并将控制权转交给它,让其在系统上运行。,交换技术与覆盖技术的区别: 交换不要求给出覆盖结构,主要是在进程或作
7、业之间进行,而覆盖则主要是在同一个进程或作业之间进行。交换可以在较小的存储空间中运行较多的作业或进程,覆盖可以在较小的存储空间中运行比其容量大的作业或进程。,3.3 单道环境下的存储管理,单道环境下的存储管理: 任一时刻主存只有一个用户程序,且该程序占有的用户区域是连续的。如果系统资源能够满足用户程序要求,则系统分配主存资源给该用户程序,否则系统无法执行该程序,同时给出相应的提示信息。 单道环境下,一般采用单一连续存储管理。单一连续存储管理方式是静态存储分配方式。,系统区用户区剩余空闲区图3-5 单一连续区管理主存分配,单一连续存储管理的算法:,入口挑选一个作业 N作业大小=用户可用空间? Y
8、装入该作业执行结束,优点:管理简单,只需很少的软硬件支持。 缺点: (1)系统的存储空间浪费较大。(2) 当正在执行的程序因出现等待,处理器就处于空闲状态。(3)主存中的程序和数据不能被共享。 (4) 系统的外围设备也只有一个程序使用,因此外部设备利用率低。,3.4 分区存储管理,3.4.1 固定分区法 固定分区是指系统在初始化时,将主存空间划分为若干个固定大小的区域。用户程序在执行过程中,不允许改变划分区域的大小,只能够根据各自的要求,由系统分配一个存储区域。 下图表示在某一时刻,进程A和B分别被分配到2和3两个分区中,第1和4分区尚未分配。,分区说明表: 分区号 大小 起始 状态 1 16
9、KB 20KB 未分配 2 64KB 36KB 已分配 3 80KB 100KB 已分配 4 128B 180KB 未分配固定分区的存储分配存储空间分配情况:0KB 操作系统 20KB 第1分区 36KB 进程A(10KB) 第2分区 100KB 进程B(28KB) 第3分区 180KB 第4分区,0KB 操作系统 20KB 第1分区36KB 进程A(10KB) 第2分区100KB 进程B(28KB) 第3分区180KB 第4分区图3-7 固定分区的存储分配存储空间分配情况,作业zy请求dk内存:,I=0I=I+1查看第I个分区Y N占用标志是否为0 N N长度=d k? 是否为最后一个分区Y
10、 Y装入作业 暂时无法装入,固定分区的优缺点:,优点:简单。 缺点:虽然可以使多个作业在同一时刻共享存储区,但它不能充分利用存储器资源。 “碎片”或“内零头”:在已分配的分区中,通常都有一部分未被进程占用而浪费的主存空间,这一部分空间称作为存储器的“碎片”或“内零头”。,3.4.2 动态分区法,1. 动态分区的基本概念 动态分区分配方式,在系统初启时,除了操作系统常驻主存部分以外,只存在一个空闲分区。随后,分配程序将该区依次划分给调度程序选中的进程,并且分配的大小可随用户进程对主存的要求而改变,这种分配方式不会产生“碎片”现象,从而大大提高了主存的利用率。,A(10KB) B(8KB) C(1
11、6KB) D(64KB) 进程队列 操作系统 操作系统 操作系统 操作系统 主存变化进程A 进程A 进程A 进程A 进程B 进程B 进程B 进程C 进程C 进程D 图3-8 主存分配情况,采用数据结构,可用分区表 区号 分区长度 起始地址自由链表请求表 作业(进程)号 请求长度,2. 动态分区的分配方式,(1)最先适应法 :将作业分配到主存的第一个足够装入它的可用空闲区中。这种算法的缺点是可能将大的空闲区分割成一个小区,不利于大作业的装入与运行。 (2)最佳适应法:将作业分配到主存中与它所需大小最接近的一个可用空闲区中。,优点:可保证不会去分割一个更大的空闲区,便于今后大作业的装入运行。缺点:
12、由于空闲区通常不可能正好和作业所要求的大小相等,往往分割后剩下的空闲区非常小,以至几乎无法使用。造成了主存空间的浪费。 (3)最坏适应法:把一个作业分配到主存中最大的空闲区中。优点:在大空闲区中装入作业后,剩下的空闲区常常也很大,于是也能满足以后较大的作业的要求。该算法对中、小作业的运行是很有利的。,3. 动态分区的回收,分区的回收有四种情况: (1)释放区与上下两个空闲区相邻。 (2)释放区与上空闲区相邻。 (3)释放区与下空闲区相邻。 (4)释放区与上下两个空闲区都不相邻。,操作系统 操作系统 操作系统 操作系统 A(10KB)作业B完成 A(10KB) A(10KB) A(10KB)B(
13、8KB) C(16KB)释放存储空间 C(16KB)作业D完成 C(16KB) C(16KB)D(64KB) D(64KB) 释放存储空间 合并 图3-10 动态分区方式中存储区的释放和回收,4. 地址转换与存储保护,限长寄存器 基址寄存器 作业 主存OS逻辑地址 逻辑地址 + 绝对地址 限长? 是地址错 基址寄存器存放分配给作业使用的分区的最小绝对地址值;限长寄存器存放作业占用的连续存储空间的长度。 基址寄存器、限长寄存器内容属于保护的现场。,5. 分区的共享,1)系统提供多对基址/限长寄存器 2)规定某些对基址/限长寄存器指定的区为共享区 3)规定对共享区的信息只执行或读,不能写,6. 移
14、动技术,当存储分配程序找不到一个足够大的空闲区来装入作业时,可以采用移动技术改变主存中的作业存放区域,同时修改它们的基址/限长值,从而使分散的小空闲区汇集成一个大的空闲区,有利于作业的装入。,图3-12 移动分配示例,移动技术的优缺点,优点: 可使分散的“碎片”或小空闲区汇集成大的空闲区; 为作业执行过程中扩充主存提供了方便。 缺点: 增加了系统的开销; 不是随时可移动; 作业动态申请主存会出现“死锁”。解决的办法:撤出部分死锁作业,让一些作业获得主存运行,后归还主存,再将送出的作业调回运行。,7. 分区存储管理的优缺点,(1) 主要优点 实现了多道程序设计,从而提高了系统资源的利用率。 系统
15、要求的硬件支持少,管理简单。(2) 主要缺点 作业在装入时的连续性使主存的利用率不高。 主存的扩充只能采用覆盖与交换技术,无法真正实现虚拟存储。,3.5 页式存储管理,3.5.1概述 一、引入: 分区管理的一系列问题: (1) 当连续空闲区不能满足进程的要求时,即使系统中所有空闲区之和大于进程对主存的要求,但仍然不能装入进程。 (2) 存储区中仍然存在“碎片”的现象,使主存利用率不高,采用移动技术将分散的“碎片”合并成一个较大的可用区域,但“碎片”的合并需要占用CPU的时间,并且合并也不是随时都能进行的。 (3) 分区管理方式无法有效地实现虚拟存储技术,即:使进程的逻辑地址空间大于实际的主存物
16、理空间,从而使有限的主存运行较大、较多的程序。,二、分页管理的基本思想: 将作业分配在不连续的大小相同存储区域中(见缝插针分配),同时又要保证作业的连续执行。每个区称为一块(页框),与此对应,编制程序的逻辑地址也分为页(页面),页的大小与块的大小相等 ,通常页的大小总是2的整数次幂。 分配的考虑:将进程的页分配到主存的块中。 三、分页存储器的逻辑地址格式:页号 单元号,三、优越性 1、实现了连续存储到非连续存储的飞跃,为实现虚拟存储打下了基础; 2、解决了主存中的“碎片”问题,任意一个“内碎片”或“内零头”都不会大于整个页框的大小,从而提高了主存的利用率。 四、分类 根据作业装入主存的时机不同
17、,一般分为: 1,静态分页管理 2,虚拟分页管理。,3.5.2 静态分页管理,1、基本思想 用户作业在开始执行以前,将该作业的程序和数据全部装入到主存中,然后,操作系统通过页表和硬件地址变换机构实现逻辑地址到物理地址的转换,从而执行用户程序的。,1主存页框的分配与回收 为要求主存的作业或进程分配足够的页框。这就需要系统建立存储页框表、请求表和页表等数据结构,依据这些数据结构完成主存的分配和回收工作。,(1)页表 动态重定位 : 在执行每条指令时,将程序中的逻辑地址变换为物理地址 。 页表 : 在页式管理系统中实现地址变换的数据结构称为页面映像表,简称页表。 在主存的固定区域中。每进程一张。 页
18、表中的信息: 一、页号。 二、页面对应的页框,记录着该进程的每个页面分配到主存的哪些页框中。,(2)请求表,请求表: 用来确定作业或进程的虚拟地址空间的各页表在主存中的实际对应位置。,(3)存储页框表,存储页框表: 指出主存各页框是否已被分配,以及未被分配的页框总数。 形式 : 1、位示图:在主存中划分出一个固定的区域,该区域中每个单元的每个位表示一个页框的分配或空闲状况,若该位为1,代表所对应的页框已分配,若该位为0,代表所对应的页框空闲。 2、空闲页框链:在空闲页框链中,队首页框的第一单元和第二单元分别存放空闲页框的总数和指向下一个空闲页框的指针,其它页框的第一单元则分别存放指向下一个空闲
19、页框的指针。,(4)页框分配与回收算法,-、分配: 1、从请求表中查出作业或进程所要求的页框数。 2、由存储页框表检查是否足够有空闲页框(块),若没有,则本次无法分配。如果有,则分配并设置页表,并填写请求表中的相应表项(页表始址、页表长度和状态)。 3、再按一定的查找算法,搜索出所要求的空闲页框(块),并将对应的页框(块)号填入页表中。 二、回收: 当进程执行完毕时,根据进程页表中登记的页框(块)号,将这些页框(块)插入到存储页框表中,使之成为空闲页框(块)。最后,拆除该进程所对应的页表即可。,2. 页式地址变换,首先用户作业提出存储分配的要求,此时操作系统根据主存页框的大小(1KB)将进程要
20、求的存储空间分成相应的页面。 (1) 根据主存的实际情况,将进程的每个页面分配到主存空闲页框中,同时,系统分配并设置页表的内容(通常一个进程具备一个页表)。此时,系统完成用户进程的存储器分配。 (2) 当用户进程开始执行时,系统首先设置控制寄存器的内容,控制寄存器包括页表长度和页表起始地址两项。 (3) 为了对逻辑地址进行变换,由硬件组成的地址变换机构必须将其分成两部分:页号和页内偏移(即2和452)。 (4) 根据逻辑地址中提供的页号在页表中找到相对应的页框号(2 8)。 (5) 将页表中的页框号和逻辑地址中的页内偏移分别写入绝对地址中的相应位置上(即8和452)。 然后根据绝对地址提供的页
21、框号和页内偏移计算出存储空间的物理地址(1KB=1024,810244528644)。此时,用户进程便可以访问主存中的绝对地址,取出数据或取出指令执行。,3、快表,一、引入: 执行一条访问主存的指令都要访问主存两次 ,为了尽量减少访问主存的次数,提高地址变换的速度,可在地址变换机构中增设一个具有并行查寻能力的特殊高速缓冲存储器,用来存放页表的一部分。 二、概念: 快表:存放在高速缓冲存储器中的页表 相联存储器(Association Memory):高速缓冲存储器,图3-18 快表实现地址变换,三、 快表的组织与管理,1 填写:慢地址翻译找空项填写 2 淘汰:无空项时,淘汰一旧项。 方法: F
22、IFO, LRU等。 3 快表的大小:64-256个页表项。 保持命中率90% 4 进程切换时的快表管理: 1)用特定指令将相联存储器有效位清0; 2)在相联存储器增加一个进程标识符域,CPU增加一个寄存器存当前进程标识符,查快表时也进行标识符核对。增加硬件开销,但可提高命中率,省去上下文切换。,4. 页的共享与保护,页的共享:提高主存空间的利用率。 共享的实现 (1)实现数据共享 作业对共享数据页可使用不同的页号,只要相应页表项指到同一主存块即可。 (2)实现程序共享 对共享程序必须规定一个统一的页号。,共享信息的保护: (1)页表中增加一个保护权限域 指出该页的信息为:可读/写、只读、只执
23、行和不可访问等,指令执行时进行操作权限核对 。 (2)保护键法 系统为每道作业设置一个保护键,为作业分配主存时,根据它的保护键在相应的页表中建立键标志。程序执行时将程序状态字中的键和访问页的保护键进行核对,相符时才可访问该页框。,绝对地址=块号*块长+单元号 例:假设一块为0.5k,作业为4.1k ,一页为0.5k,逻辑地址为1568,求绝对地址。,页表为: 页号 块号 0 3 1 2 2 5 3 4 4 1 5 10 解:1568/512=3 所以该页处在第4块所求=1024*0.5*4 + (1568%512)=2080,3.5.3 虚拟页式存储管理,3.5.2.1 虚拟存储的基本思想 1
24、. 常规存储管理方式的特征 1) 整体特性 整体性是指用户作业在运行以前,必须将全部的内容一次装到主存中,这必然会导致主存容量不够;而且在大多数情况下,系统运行时并不要求使用用户作业的全部程序,因而造成了主存空间的浪费。 2) 驻留特性 用户作业在装入主存运行过程中,将一直占据着主存的部分空间,即使是等待资源分配(例如因为IO而长期等待),或有些程序只运行一次,但它并不会释放所占据的主存空间,一直要等到用户作业运行结束。,时间局部性表现在如果程序中某一条指令一旦执行,则在不久以后还可能被继续执行;同样,若某一个数据被访问后不久,还可能被继续访问。其典型的情况是程序中存在着大量的循环。 空间局部
25、性表现在如果程序访问了某一个存储单元,其附近的存储单元则在不久也会被访问。即程序在一段时间内访问的地址,可能集中在一定的范围内。其典型的情况是程序顺序执行。,2. 局部性原理,概念: 在一较短的时间里,程序的执行仅局限在某个部分,相应地,它访问的存储空间也局限在某个区域。 理由: (1) 程序在执行时,除了少部分的转移和过程调用指令外,在大多数情况下仍是顺序执行的。 (2) 过程调用将会使程序的执行轨迹由一部分区域转至另一部分区域,但是经研究可看出,过程调用的深度在大多数情况下并不是很远。这就是说,程序将会在一段时间内都局限于某一范围内运行。 (3) 程序中存在许多循环结构,它们虽由少数指令构
26、成,但多次执行。 (4) 程序中还包括许多对数据结构的处理,如对数组进行操作,它们都往往局限于很小范围内。,时间局部性和空间局部性,局部性又表现为时间局部性和空间局部性 时间局部性: 如果程序中某一条指令一旦执行,则在不久以后还可能被继续执行;同样,若某一个数据被访问后不久,还可能被继续访问。其典型的情况是程序中存在着大量的循环。 空间局部性 如果程序访问了某一个存储单元,其附近的存储单元则在不久也会被访问。即程序在一段时间内访问的地址,可能集中在一定的范围内。其典型的情况是程序顺序执行。,3. 虚拟存储器的基本思想,当用户作业要求的存储空间很大,不能被装入主存时,基于局部性原理,系统可以把当
27、前要用的程序和数据装入主存中启动程序运行,而暂时不用的程序和数据驻留在外存中。在执行中需要用到不在主存中的信息时,可将暂时不用的程序和数据调出主存,腾出主存空间让系统调入要用的程序和数据。从用户角度上看,系统具备了比实际主存容量大得多的存储器,人们把这样的存储器称为虚拟存储器。,4虚拟存储器的特征,1)多次性 用户程序在运行前,并不是一次将全部内容装入到主存中,而是在程序的运行过程中,系统不断地对程序和数据部分地调入、调出,完成程序的多次装入工作。 2)对换性 程序在运行期间,允许将暂时不用的程序和数据调出主存(换出),放入外存的对换区中,待以后需要时再将它调入主存中(换入),这便是虚拟存储器
28、的换入、换出操作,即对换性。 虚拟存储的多次性和对换性必须建立在离散分配的基础上。,3.5.3.2 用分页技术实现虚拟存储器,1. 数据结构 (1) 状态位 用于指示该页是否已调入主存,如用1表示在主存,0表示不在主存。 (2) 访问字段 用于记录本页在一段时间内被访问的情况,提供给置换机构参考。 (3) 修改位 表示该页在调入主存后是否被修改过,由于主存中的每一页都在外存上保留一份副本,因此,若未被修改,在置换该页时就不需将该页写回到外存上;若已被修改,则必须将该页重写到外存上,以保证外存中所保留的始终是最新副本。 (4) 保护权限:说明该页允许什么类型的访问。它指出了该页的信息可能为:可读
29、/写、只读、只执行和不可访问等(5) 外存地址:指出该页在外存上的地址,供调入该页时使用。,二级页表的地址变换,三次访问主存: 一次访问页目录,一次访问页表,最后才访问数据所在的物理地址。,反向页表,概念: 页表的第i个表项记录着当前占用页框i的页面信息,表中的表项号与物理主存的页框号相等,而与虚存的页号无关,该页表称为反向页表(inverted page table)。 重定位: 当进程给出虚地址后,存储管理单元(MMU)通过一个哈希函数转换为一个哈希值,以该值为索引指向反向页表中的一个表目,若表目中的内容与该进程的虚页号相一致,即形成绝对地址,否则再到链指针中查找。,2. 分页式虚拟存储管
30、理工作流程,硬件环境 : (1) 具有一定容量主存,用于存放一个操作系统,以及每个进程的部分程序、数据和相应的页表表项。 (2) 相当容量外存,用于存放每个进程未装入主存的部分、后备作业以及大量的文件。 (3) 地址变换机构,用于将用户程序地址空间中的逻辑地址变换为主存的物理地址。 (4) 缺页中断机构,当发现所要访问的页不在主存时,应立即发出缺页中断信号,以请求操作系统将所缺之页调入主存。,缺页中断,缺页中断与一般中断的区别 在指令执行期间产生和处理中断信号。通常CPU都是在一条指令执行完后检查是否有中断请求到达,若有,便去响应,否则继续执行下一条指令。然而缺页中断是在指令执行期间发现所要访
31、问的指令或数据不在主存时产生和处理的。 一条指令在执行期间,可能产生多次缺页中断。如采用多级页表时,页表也是作为动态调入的,地址翻译过程就可能出现访问页表的缺页中断,最后才产生所要访问的页的缺页中断。,分页式虚拟存储管理工作流程:,按逻辑地址查快表N 该页在快表中 Y有登记吗?查页表 形成绝对地址 N Y该页在主存? 继续执行指令发缺页中断 形成绝对地址 (下页) 将该页登记入快表,分页式虚拟存储管理工作流程(续):,缺页中断处理,保护CPU现场,从外存中找到缺页,主存满否?,从外存调入所缺的页,N,修改页表和存储页框表,恢复现场,Y,选择一页调出,该页被修改否?,将该页写回外存,Y,N,3.
32、5.3.3页面置换,1调页策略 1)预调页策略 该策略应以预测为基础,只将那些预计不久后便会被访问的程序或数据所在的页面预先调入主存。2)请求调页策略 当进程运行中需要访问某部分程序和数据,而其所在页面又不在主存时,立即提出请求,由系统将其所需页面调入主存。,2分配策略,1)固定分配策略 概念: 每个进程分配一固定页数的主存空间,在整个运行期间不再改变。 缺点:应为每个进程分配多少个页框的主存难于确定。 2)可变分配策略 概念: 为每个进程分配一定数量的主存空间,如果该进程在运行过程中频繁地发生缺页中断,则系统再为该进程分配若干附加的物理页框,直至进程减到适当的缺页率为止;反之,若一个进程在运
33、行过程中的缺页率特别低,则此时可适当减少分配给该进程的物理页框。,3. 页面置换算法,概念: 主存已满,又需装入新页时,将主存中的某些页调出去。这一工作称为页面调度或页面置换。页面调度实质上是决定淘汰那一页。 不合适的调度算法: 若刚被淘汰的页面又立即要用到,因此又要把它调入而调入不久再被淘汰,淘汰不久又再被调入。如此反复,使得整个系统的页面置换非常频繁,以至于大部分时间都花费再来回调度上。这种现象称作“抖动”或“颠簸”。 缺页中断率为:f=F/(S+F),页面调度算法:,1)优化算法(OPT) 这是一种理论化的算法,其所选择的被淘汰的页将是永不使用的页,或者是在最长时间内不再访问的页。 2)
34、先进先出算法(FIFO)该算法总是淘汰最先进入主存的页面,认为最先调入的页访问可能性最大。,缺页率=缺页次数/总的访问次数*100%,用FIFO算法求缺页率: 1 2 3 4 1 2 5 1 2 3 4 5 1 2 3 4 1 2 5 5 5 3 4 51 2 3 4 1 2 2 2 5 3 31 2 3 4 1 1 1 2 5 5 T T T T T T T F F T T F 缺页率=9/12*100%=75%,Belady现象,3)最近最少用置换算法(LRU),该算法要求淘汰的页面是在最近一段时间里较久未被访问的那一页。根据是程序执行时所具有的局部性。 为了比较准确地淘汰最近最少使用的页
35、面,可以采用堆栈的方法来实现。栈中存放当前主存中的页号,每当访问一页时就调整一次栈。于是,发生缺页中断时总是淘汰栈底所指示的页。,例:用LRU算法求缺页率:,4 3 0 4 1 1 2 3 24 3 0 4 1 1 2 3 24 3 0 4 4 1 2 34 3 0 0 4 1 1T T T F T F T T F 缺页率=6/9*100%=64.4%,4)最近未用置换算法(NRU) 概念: 该算法要求页表中有一个访问位和一个修改位。当某页被访问时,访问位被自动置1,若执行的指令是写指令,则修改位也被置1。系统周期性地将所有访问位置0。在选择一页淘汰时,总是选择其访问位为0且修改位也为0的页。
36、若无修改位为0的页,就选访问位为0且页号最小的页淘汰。 评价: 该算法不但希望淘汰的页是最近未使用的页,而且还希望被淘汰的页是在主存驻留期间其页面内容未被修改过。 系统对访问位清0的间隔时间T的确定是很关键的。如果间隔时间T太大,可能所有页的访问位均已成为1,无法选择淘汰的页面。如果间隔时间T太小,则可能很多页的访问位均是为0,5)最少使用置换算法(Least Frequently UsedLFU),概念: 要求为每一页表项配置一个一定位数的计数器作为访问字段,开始时所有的计数器均为0。一旦某页被访问时,其页表项中的计数器值加1。系统每过一段时间T就将所有的页表项计数器清0。 在需要选择一页置
37、换时,便比较各计数器的值,总是选择其计数值最小的页面淘汰。 评价: 该算法实现也较容易,但代价较高,而且合适的间隔时间T的选择也是难题。,3.5.3.4 分页式虚拟存储系统的性能分析,影响缺页率的因素: 1)程序的局部化 2)页面的大小 页面越大,缺页率越低。 3)程序快数 同时运行的程序越多,缺页率越高。 4)内存大小 内存越大,缺页率越低。 5)调度算法,3.5.3 分页存储管理优缺点,优点: 1)解决主存的零头问题,能有效地利用主存。 2)方便多道程序设计,并且程序运行的道数增加了。 3)可提供大容量的虚拟存储器,作业的地址空间不再受实际主存大小的限制。 4)更加方便了用户,特别是大作业
38、的用户。当某作业地址空间超过主存空间时,用户也无需考虑覆盖结构。,缺点: 1)要有相应的硬件支持,如需要动态地址变换机构、缺页中断处理机构等。 2)必须提供相应的数据结构来管理存储器,它们不仅占用了部分主存空间,同时还要花费CPU时间。 3)在分页系统中页内的零头问题仍然存在。 4)在请求分页管理中,需要进行缺页中断处理,还有可能出现抖动现象,增加了系统开销,降低系统效率。,3.6 段式及段页式存储管理,3.6.1 段式存储管理 1.段式存储管理概述 分页式 缺点: 1)程序的逻辑地址空间是连续的 ,装配好的程序段和数据块的存储空间是确定的,在执行中是无法动态增长和收缩。 2)无法做到页与逻辑
39、意义完整的子程序或数据段的唯一对应,增大了其信息共享实现的难度。 3)从连接的角度上看,分区管理和分页管理只能采用静态连接 ,不仅花费了大量的CPU时间,而且也浪费了许多主存空间 。,2 段式存储管理实现,1)段式存储管理思想:把程序按逻辑含义或过程(函数)关系分成段,每段都有段名。每段逻辑地址均是以0开始进行顺序编址。用户作业或进程的地址空间就形成了一个二维线性地址空间。以段为单位分配主存。执行时通过地址转换机构把段式逻辑地址转换成主存物理地址。 2) 逻辑地址格式:段号 单元号如:某系统段地址结构为32位,其中段号占12位,段内地址占20位,则在该系统中一个作业最多可有4K个段,每段的长度
40、可达1MB。,一个作业各段在主存中的分配情况,地址转换过程,段式管理,快表的应用: 段式管理的一次访问也必须经过两次以上访问主存的操作。为了提高访问速度,也需要将高速相联存储器引入,把部分段表存入其中,形成段式快表。地址转换时,先查快表,若快表命中,则立即形成绝对地址,否则再通过段表进行慢地址翻译,并将该段信息填入快表中。 分段与分页比较: 分段是信息的逻辑单位,是用户可见的,段的大小是用户程序决定。而分页是信息的物理单位,分页对用户来说是不可见的,页的大小是事先固定的。,段式管理信息共享和保护,共享: 如果用户作业需要共享主存中的某段程序或数据时,只要用户使用相同的共享段名,系统在建立段表时
41、,只须在相应的段表栏目上填入已在主存的段的始址和长度,即可实现段的共享,从而提高系统主存的利用率。 保护: (1)在段表中增设一个存取权限域。存取权限可分为:只执行(共享程序段)、只读(共享数据段)和可读/写(私人段)。访问段时,通过存取权限核对,即可实现存取保护。 (2)通过段表中的长度信息,在地址转换时,将长度与段内地址比较,就可进行地址越界保护。,3.6.2 段式虚拟存储管理,1. 段式虚拟存储管理实现原理 基本思想 : 把作业的所有分段的副本都存放在外存上,当作业被调度投入运行时,首先把当前需要用的一段或几段装入主存,在执行过程中,访问到不在主存的段时,再通过缺段中断机构把它从外存上调
42、入。,段表,特征位可用两位表示相应的段是否在主存,是否可共享; 存取权限用两位表示相应段只执行、只读或可读/写的权限; 标志位用两位表示相应段是否已被修改过和能否移动; 扩充位用一位表示相应段是固定长还是可扩充; 访问位用来表示段的活动状况,作为淘汰段时参考; 外存始址登记该段在外存中副本的起始地址。,段式虚拟存储管理工作流程:,访问S段B单元Y NS段在主存吗?N B=S段长度? Y 发缺段中断 发越界中断 N 符合存取权限?Y发保护中断 形成绝对地址继续执行命令,可能需移动合并或淘汰在调入,2. 段的动态连接,概念: 动态连接装配是指在程序运行中对它所用到的子程序段或数据段进行连接装配,节
43、省连接装配时间和程序所占的空间。 实现: 增加两个功能:间接编址和连接障碍指示。间接编址是指指令中的地址单元的内容仍作为地址。 间接字的格式为:L 直接地址,段式管理优缺点:,优点: 严格按程序的逻辑结构分配连续存储空间,方便程序和数据的共享与保护,同时也便于程序及数据段的扩充和动态连接。 缺点: 一个段的长度不能大于实际的主存容量,而且为了解决碎片问题,提高主存的利用率,必须采用移动技术,移动主存信息需要较大的系统开销。,3.6.3 段页式虚拟存储管理,基本思想: 每个作业按逻辑分段,然后对每一段又分成若干页。这样,每一段不必占用连续的主存空间,而是按页存放在不一定连续的主存页框中,并且当主
44、存页框不够时只将一段的部分页面放在主存,用到不在主存中的页面时再将之调入。 段页式的逻辑地址格式:段号 页号 单元号,段页式虚拟存储管理系统的地址结构:,段页式存储管理系统地址转换,要存取一次信息,必须经历三次访问主存操作,一次访问段表,一次访问页表,最后才能按绝对地址存取信息,这样就降低了指令执行的速度。为了加快地址转换,也采用相联存储器来存放快表,快表中应指出段号、页号和主存页框号。 硬件在执行指令和进行地址转换时,可能会引起缺段中断、越界中断、保护中断、缺页中断和连接中断等情形。,段页式虚拟存储管理系统中的中断,处理思想如下: (1) 缺段中断:为该段建立一张页表,填写该段页表始址和长度及其它必要的信息。 (2) 越界中断:当该段可扩充时,应增加页表表目,修改段表中的页表长度。当该段不可扩充时,报出错信息,停止用户程序执行。 (3) 保护中断:报告存取违法并停止程序执行。 (4) 缺页中断:找出一个主存的空闲页框或调出一页,装入所需的页面,修改相应表格(如页表、存储页框表等)。 (5) 连接中断:为该段分配一个段号,若该段已连接过,则根据该段的状况填写这个段表表项,否则可按缺段中断一样进行处理,最后,根据段号、页号与页内偏移形成无障碍指示的一般间接地址。 除了越界中断和保护中断外,其它这些中断在处理后,均应重新启动被中断的指令执行。,