第四章 存储管理
1、存储管理的基本概念
1)逻辑地址与物理地址
在具有地址变换机构的计算机中,允许程序中编排的地址和信息实际存放在内存中的地址有所不同。前者叫逻辑(相对)地址,后者叫物理(绝对)地址。
2)重定位:将逻辑地址转换为物理地址。
3)三级存储器结构
辅存<-->主存<-->高速缓存为三级存储器结构,从辅存到高速缓存,存储器容量减小,存取时间减少,速度增加,但每位存储器成本增加了。
4)虚拟存储管理
虚存是由操作系统调度,采用内外存的交换技术,各道程序在必需使用时调入内存,不用的调出内存,这样好像内存容量不受限制。
虚存的特点:
(1)虚存容量不是无限的,极端情况受内存和外存可利用的总容量限制;
(2)虚存容量还受计算机总线地址结构限制;
(3)速度和容量的“时空”矛盾,虚存量的“扩大”是以牺牲CPU工作时间以及内外存交换时间为代价的。
5)存储管理的任务和功能
任务是方便用户,提高内存资源的利用率,实现主存共享。
功能主要有主存的分配和回收、地址映射、主存扩充、内存的共享和保护技术
2、分区分配存储管理
分为固定分区、可变分区、可重定位分区、多重分区。
内存“扩充”技术:
1)交换:由操作系统做,用户不知道。
2)覆盖:由用户控制,操作系统提供覆盖机制。
内存保护技术:保护系统工作区和用户作业区,特别是如何防止系统区被破坏。方法有存储保护键、界限寄存器
3、请求页式存储管理
1)页式存储管理实现原理
基于程序在运行时不需要一开始都装入内存(局部性原理),更不应该把最近较长一段时间内不用的程序装入内存。
2)页表的作用是将逻辑页号转换为物理块号。
3)页面淘汰算法
先进先出算法(FIFO)、循环检测法、最近最少使用页面先淘汰(LRU)、最不经常使用的页面先淘汰(LFU)、最近没有使用页面先淘汰(NUR)、最优淘汰算法(OPT)等。
4)页式存储管理的优、缺点
优点:
(1)虚存量大,适合多道程序运行,用户不必担心内存不够的调度操作;
(2)内存利用率高,不常用的页面尽量不留在内存;
(3)不要求作业连续存放,有效地解决了“碎片”问题。与分区式相比,不需移动作业;与多重分区比,无零星碎片产生。
缺点:
(1)要处理页面中断、缺页中断处理等,系统开销较大;
(2)有可能产生“抖动”;
(3)地址变换机构复杂,为提高速度采用硬件实现,增加了机器成本。
4、段式、段页式存储管理
分页式存储管理系统和分段式存储管理系统的主要区别:
分页和分段有许多相似之处,比如两者都不要求作业连续存放。但在概念上两者完全不同,主要表现在以下几个方面:
1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要。
2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的。而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分。
3)分页的作业地址空间是一维的。分段的地址空间是二维的。
段式、页式存储管理的对比表参考教材117页。
段页式存储管理特点:
1)每一段分若干页,再按页式管理,页之间不要求连续;
2)用分段方法分配管理作业,用分页方法分配管理内存;
3)兼有段式和页式管理的优点,系统复杂和开销增大,一般在大型机器上才使用。
5、例题解析
例1 采用可变分区管理存储空间时,若主存中按地址顺序依次有五个空闲区,大小分别为15K、28K、10K、226K、110K。现有五个作业J1到J5,它们所需的主存空间依次是10K、15K、102K、26K、180K。问如果采用首次适应分配算法,能否把这五个作业按J1到J5的次序全部装入主存。使用哪种分配算法装入这五个作业,可使主存的利用率最高?
解:按首次适应分配算法,不能把这五个作业全部依次装入主存。这时J1、J2装入第1、2个空闲区,J3、J4装入第4、5个空闲区,J5有180K,无法装入仅有的10K空闲区。
能使主存利用率最高的是采用最佳适应分配算法。这时,这五个空闲块分别装入作业J2、J4、J1、J5、J3。
例2 考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:
(1)逻辑地址需要多少二进制位表示?
(2)物理地址需要多少二进制位表示?
【分析】 在分页存储管理中,逻辑地址结构如下图所示。
它由两个部分组成:前一部分表示该地址所在页面的页号p;后一部分表示页内地址(页内位移)d。页号的地址位数决定了页的多少,假设页号有20位,则地址空间中最多可容纳的页面数为2^20,即1MB个页面。页内地址位数确定了每页的大小,若页内地址为12位,则每页大小为2^12,即2KB。
同理,物理地址中块号的地址位数决定了块的数量。由于页式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。
解:因为页面数为8=2^3,故需要3位二进制数表示。每页有1024个字节,1024=2^10,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=2^5)。
(1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。
(2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。
例3 若在一分页存储管理系统中,某作业的页表如下所示。已知页面大小为1024字节,试将逻辑地址1011,2148,4000,5012转化为相应的物理地址。
页号 物理块号
0 2
1 3
2 1
3 6
【分析】 页式存储管理的地址结构是一维的,即逻辑地址(或物理地址)只用一个数值即可表示。若给定逻辑地址A,页面的大小为L,则页号p和页内地址d可按照下式求得:
p=int [A/L] d=A mod L
其中,int是取整函数(取数值的整数部分),mod是取余函数(取数值的余数部分)。
下图显示了页式管理系统的地址转换机构。
页表的作用是实现从页号到物理块号的地址映射。以逻辑地址的页号检索页表,得到该页的物理块号;同时将页内地址d直接送入物理地址寄存器的块内地址字段中。这样物理块号和块内地址拼接成了实际访问内存的地址,从而完成了从逻辑地址到物理地址的转换。
所以物理地址的计算公式为:
物理地址=块的大小(即页的大小L)*块号f+页内地址d
解:本题中,为了描述方便,设页号为p,页内位移为d,则:
1)对于逻辑地址1011,p=int(1011/1024)=0,d=1011 mod 1024=1011。查页表第0页在第2块,所以物理地址为1024*2+1011=3059。
2)对于逻辑地址2148,p=int(2148/1024)=2,d=2148 mod 1024=100。查页表第2页在第1块,所以物理地址为1024+100=1124。
3)对于逻辑地址4000,p=int(4000/1024)=3,d=4000 mod 1024=928。查页表第3页在第6块,所以物理地址为1024*6+928=7072。
4)对于逻辑地址5012,p=int(5012/1024)=4,d=5012 mod 1024=916。因页号超过页表长度,该逻辑地址非法。
例4 某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面的页号和物理块号的对照表如下:
页号 物理块号
0 5
1 10
2 4
3 7
请计算逻辑地址0A5C(H)所对应的绝对地址。
【分析】在分页存储管理方式中,逻辑地址结构为:
如果给定的逻辑地址是A,页面大小为L,则页号p和页内地址d可按下式求得:
p=int [A/L] d=[A] mod L 其中,int表示取结果的整数部分,mod表示取结果的余数部分。页号的位数表示地址空间中最多可容纳的页面个数,页内地址的位数表示每页的大小,页表的作用是实现从页号到物理块号的地址映射。在页式存储管理中,逻辑空间页的大小与主存地址空间中块的大小相同。
解:页式存储管理的逻辑地址分为两部分:页号和页内地址。由已知条件“用户编程空间共32个页面”,可知页号部分占5位;由“每页为1KB”,1K=2^10,可知内页地址占10位。由“内存为16KB”,可知有16块,块号为4位。
逻辑地址0A5C(H)所对应的二进制表示形式是:000 1010 0101 1100 ,根据上面的分析,下划线部分为页内地址,编码 “000 10” 为页号,表示该逻辑地址对应的页号为2。查页表,得到物理块号是4(十进制),即物理块地址为:01 00 ,拼接块内地址10 0101 1100,得01 0010 0101 1100,即125C(H)。
例5 某采用页式存储管理的系统,接收了一个共7页的作业,作业执行时依次访问的页为:1、2、3、4、2、1、5、6、2、1、2、3、7。当内存块数量为4时,请分别用先进先出(FIFO)调度算法和最近最少使用(LRU)调度算法,计算作业执行过程中会产生多少次缺页中断?写出依次产生缺页中断后应淘汰的页。(所有内存开始时都是空的,凡第一次用到的页面都产生一次缺页中断。要求写出计算过程)
解:(1)采用先进先出(FIFO)调度算法,页面调度过程如下:
页面次序 |
1 |
2 |
3 |
4 |
2 |
1 |
5 |
6 |
2 |
1 |
2 |
3 |
7 |
主存 页面 情况 |
1 |
1 |
1 |
1 |
|
|
5 |
5 |
5 |
5 |
|
3 |
3 |
|
2 |
2 |
2 |
|
|
2 |
6 |
6 |
6 |
|
6 |
7 |
|
|
|
3 |
3 |
|
|
3 |
3 |
2 |
2 |
|
2 |
2 |
|
|
|
|
4 |
|
|
4 |
4 |
4 |
1 |
|
1 |
1 |
【分析】使用FIFO置换算法时,淘汰最先进入内存的页面。例如,当加灰页面5要换入内存时,此时内存中的页面情况是1、2、3和4(加灰的部分),其中页面4是最近新换入的,页面3比页面2换入的时间晚(参考加框部分的演示),所以按照该置换算法,需淘汰最早进入内存的页面1,换入页面5。
所以,共产生10次缺页中断,依次淘汰的页是1、2、3、4、5、6。
(2)采用最近最少使用(LRU)调度算法,页面调度过程如下:
页面次序 1 2 3 4 2 1 5 6 2 1 2 3 7 主存
页面
情况 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 5 5 3 3 4 4 6 6 7 【分析】 使用LRU置换算法时,淘汰最近最少使用的页面。例如,当加灰页面5要换入内存时,此时内存中的页面情况是1、2、3和4(加灰的部分),我们考查加灰页面5之前的页面序列,分别是1,2,4,3 ……(参考加框部分的演示),可见在内存中的页面3是最近用得最少的,所以按照该置换算法,需淘汰页面3,换入页面5。
因此,共产生8次缺页中断,依次淘汰的页是3、4、5、6。
CSDN博文地址:http://blog.csdn.net/lwlliang/archive/2011/02/28/6212262.aspx
官方博文地址:http://www.17core.com/blog/html/201102/196.html