1、1,第十二讲 段/段页式存储管理与虚存目的与要求:了解段/段页式管理,掌握虚存管理.重点与难点:虚存管理系统内存访问过程,2,5.2.2 段式管理,页式管理:对用户而言不自然,3,段式管理的特点:按作业的自然段将其逻辑空间分成若干段,作业以段为单位分配内存。一、空间安排用户作业逻辑空间为二维空间,由若干自然段组成。逻辑地址:段号.段内偏移,记作S,d。编译及装配时把所有地址记成(s,d)的形式。物理内存空间管理:与多道可变划分法一样,系统以段为单位分配物理内存。,4,主程序,子程序1,子程序2,栈,数据,逻辑空间,子程序2,主程序,栈,数据,OS,子程序1,物理空间,5,二、动态地址转换,保护
2、码,段长,本段内存始地,段表:由如下格式的段表项组成,作业每段由一个段表项表示.,段表放于系统空间,进程PCB表中存有段表始地址、段表长度。段表始地址寄存器、段表长度寄存器,6,段表的作用,7,地址变换,为实现从逻辑地址到物理地址的转换,在系统中设置了段表寄存器,用于存放段表始址和段表长度。 为了提高内存的访问速度,也可以使用快表。,8,地址变换过程,进行地扯变换时,系统将逻辑地址中的段号S与段表长度进行比较,若段号超过了段表长度则产生越界中断; 否则根据段表始址和段号计算出该段对应段表项的位置,从中读出该段在内存的起始地址, 然后再检查段内地址是否超过该段的段长,若超过则同样发出越界中断信号
3、; 若未越界,则将该段的起始地址与段内位移相加,从而得到了要访问的物理地址。,9,地址变换机构图,段表寄存器,段表始址 段表长度,越界中断,逻辑地址,段号(2)段内位移(100),段号 段长 始址,1K 6K800 4K600 8K,012,物理地址,段表,8292,10,分段地址变换例,设作业分为3段,0、1、2段长度分别为1K、800、600,分别存放在内存6K、4K、8K开始的内存区域。 逻辑地址(2,100)的段号为2,段内位移为100。 查段表可知第2段在内存的起始地址8K。 将起始地址与段内位移相加,8K1008292,物理地址为8292。,11,段号,保护码,段长,段内存始址,.
4、,.,.,.,保护码,段长,段内存始址,.,.,.,S,d,段表始址,段表长度,+,+,PA,越界,地址转换过程,LA,联想存储器,12,三、共享与保护,若共享的段引用自身的某个地址,则各进程必须用同一段号来共享这一段。,(1) SQRT(A,Y) (2) IF X0 THEN GOTO (SQRT,L) (3) (4) (5) (SQRT,L): (6) ,GOTO (SQRT,L),GOTO (段号,L),13,段的共享与保护,分段是信息的逻辑单位,因而实现共享比分页系统方便。 在分页存储管理系统中,信息的共享是通过使多个进程页表项指向同一个物理块来实现的。,14,分页系统中信息共享示意图
5、,0 2160 6170 7180,ed1ed40data1data10,进程1,ed1ed40data1data10,进程2,21606170,页表,21607180,页表,ed1ed40data1data10data1data10,主存,15,分段系统中的信息共享,在分段存储管理系统中,信息的共享是通过使多个进程的段表项指向同一内存区域实现的。,16,分段系统中共享信息示意图,进程1,段表,段长 基址160 8040 380,eddata2,80240280380 420,eddata1,段长 基址160 8040 240,eddata1data2,主存,进程2,段表,17,可重入代码,可
6、重入代码又称为纯代码,是允许多个进程同时访问的代码。可重入代码在执行中不能修改。,18,分段保护,分段保护方法有: 地址越界保护:段号与段表长度的比较,段内位移与段长的比较 存取控制保护:设置存取权限,访问段时判断访问类型与存取权限是否相符,分段系统的内存管理采用什么方法?,19,分段与分页的主要区别,分页管理与分段管理有许多相似之处,但两者在概念上也有很多区别,主要表现在: 页是信息的物理单位,是为了减少内存碎片及提高内存利用率,是系统管理的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地满足用户的需要。 页的大小固定且由系统决定,由硬件把逻辑地址划分为页号和页
7、内地址两部分。段的长度不固定且由用户所编写的程序决定,通常由编译系统在对源程序进行编译时根据信息的性质来划分。 分页系统中作业的地址空间是一维的,分段系统中作业的地址空间是二维的。,20,5.2.3 段页式存储管理,分页系统能有效地提高内存利用率,而分段系统能很好地反映用户要求。如果将这两种存储管理方式结合起来,就形成了段页式存储管理系统。,21,段页式存储管理的基本思想,在段页式存储管理系统中,作业的地址空间首先被分成若干个逻辑分段,然后再将每一段分成若干个大小固定的页面。 将主存空间分成若干个和页面大小相同的物理块,对主存的分配以物理块为单位。,22,对于用户而言,段页式管理与段式相同,用
8、户逻辑地址只涉及段号与段内位移。对于物理内存管理而言,它与页式系统相同。系统内的逻辑地址:段号 段内位移 段号页号页内位移。记作:S,P,d.,段页式管理,特点:将作业分成若干段,每段用页式管理实现内存分配。,一、空间安排,23,作业空间的内部表示,主程序子程序数据,保护码 长度 页表始地,OS,段表,页表,主存,作业,段表+页表,24,作业的逻辑地址结构,作业的逻辑地址结构:为了实现地址变换,系统中需要设立段表及页表。 此外,为了便于实现地址变换,还需配置一个段表寄存器,其中存放作业的段表起始地址和段表长度。,25,段表、页表及段表寄存器,段表寄存器,段号 页表大小 页表始址,段表大小 段表
9、始址,主存,0 12,段表,页号 块号,0 12,页号 块号,0 12,页表,26,地址变换过程,在进行地址变换时,首先将段号S与段表寄存器中的段表长度进行比较,若小于段表长度则表示未越界, 利用段表始址和段号求出该段对应段表项的位置,从中得到该段的页表始址, 再利用逻辑地址中的段内页号P获得对应页表项的位置,从中读出该页所在的物理块号,再与页内地址拼接成物理地址。,27,段页式系统中的地址变换机构,0 1 2 3,段表寄存器,段表始址 段表长度,越界中断,逻辑地址,段号S 页号P 页内位移,段表,0 1 2 3,块号 块内地址,物理地址,页表长度,页表,页表始址,28,使用快表提高内存访问速
10、度,在段页式系统中,要想存取访问信息,需要三次访问内存: 第一次访问段表 第二次访问页表 第三次访问信息 为了提高访问主存的速度,应考虑使用联想寄存器。,29,二、动态地址转换,30,三、保护与共享保护与段式管理相同。 共享则可以以页为单位,也可以共享页表。,等效访问时间:设访存时间为750ns,搜索联想存储器的时间为50ns,命中率为95%,则 95% *(750+50) + 5% * (50+750+750+750))= 875ns,31,段表,主程序子程序数据,作业1,主程序子程序数据,作业2,段表,页表,OS,主存,32,“放”连续存放单道连续划分多道连续固定划分多道连续可变划分不连续
11、存放页式存储段式存储段页式存储,33,5.7.1虚存的基本思想,5.3 虚存,目的:提供用户进程一个巨大的虚拟存储空间.,手段:利用外存(磁盘)实现此虚空间.,系统为进程提供一个比物理内存大得多的虚拟存储空间,逻辑空间大小不受物理内存大小的限制。逻辑空间的容量由系统的有效地址长度决定。假设地址长度为32,按字节寻址,则逻辑空间(虚存空间)大小为232个字节。,34,虚拟存储器概述,常规存储器管理方式要求作业运行前全部装入内存,作业装入内存后一直驻留内存直至运行结束。 这种存储管理方式限制了大作业的运行。而物理扩充内存会增加成本,故应从逻辑上扩充内存。,35,虚拟存储器的基本原理,在程序运行之前
12、,将程序的一部分放入内存后就启动程序执行。 在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。 另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。 从效果上看,这样的计算机系统好像为用户提供了一个存储容量比实际内存大得多的存储器,将这个存储器称为虚拟存储器。,36,虚拟存储器的本质,虚拟存储器的本质是将程序的访问地址和内存的可用地址分离,为用户提供一个大于实际主存的虚拟存储器。 虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。,37,2.虚拟存储器的理论基础,虚拟存储器的
13、理论基础是程序执行时的局部性原理。 局部性原理是指程序在执行过程中一个较短时间内,程序所执行的指令地址和操作数地址分别局限于一定区域内。 例如: 除转移和过程调用外,程序主要是顺序执行。 过程调用使程序从一部分区域转至另一部分区域 循环结构,38,局部性的体现,局部性体现为: 时间局部性:一条指令的一次执行和下次执行,一个数据的一次访问和下次访问,都集中在一个较短时间内。 空间局部性:当前执行的指令和将要执行的指令,当前访问的数据和将要访问的数据,都集中在一个较小范围内。,39,实现虚拟存储技术的物质基础,相当数量的外存:足以存放多个用户的程序。 一定容量的内存:在处理机上运行的程序必须有一部
14、分信息存放在内存中。 地址变换机构:动态实现逻辑地址到物理地址的变换。,40,虚拟存储器的实现方法,虚拟存储器的实现基于离散分配。常用的虚拟存储技术有: 请求分页存储管理 请求分段存储管理,41,实现该虚空间的基本方法是:在页式(段式、段页式)管理的基础上,仅将进程的一部分页(段)放于主存。页(段)表项中注明该页(或段)是否在主存。程序执行时,如果访问的页(段)不存主存,根据页(段)表项的指示,将其从外存调入主存,如果此时无可用的内存空间,则先淘汰若干页帧(段)。,42,请求分页存储管理,请求分页存储管理方法是在分页存储管理的基础上增加了请求调页和页面置换功能。 实现思想:在作业运行之前只装入
15、当前需要的一部分页面便启动作业运行。在作业运行过程中,若发现所要访问的页面不在内存,便由硬件产生缺页中断,请求OS将缺页调入内存。若内存无空闲存储空间,则根据某种置换算法淘汰已在内存的某个页面,以腾出内存空间装入缺页。,43,请求分页系统中的支持机构,请求分页中的支持机构有: 页表 缺页中断机构 地址变换机构 请求调页和页面置换软件,44,内存 进程虚存(进程页表),外存交换区,外存执行文件,页式虚存示意,45,交换区(SWAP):进程刚建立时,页面在辅存即程序文件所在的辅存位置。但程序文件中一般包含有程序的二进制目标码及数据初始值并说明了初值为0的工作区。数据页以及在程序执行过程中动态申请的
16、空间页在内存被剥夺要回写时不能写入程序文件,因此引入了交换区,在需要让其让出内存时将写入交换区中。,46,一、页表项结构:,合法位:置上表示该页在内存. 修改位:置上表示该页被修改过,在释放或淘汰时应写回外存。 页类型:零页:表示该页在分配物理页帧时应清0页帧空间;回写swap区页:表示回写swap区。 保护码:R、W、E保护说明。 外存块号:该页所在外存的块号。 页 帧 号:当合法位置上时代表该页所在内存的页帧号。,5.7.2 页式虚存管理,47,二、页表建立,分配pid给子进程,分配PCB空间;初始化PCB(进程标识,调度信息);分配子进程页表空间;拷贝父进程的程序区页表项,使程序共享;,
17、部分复制父进程页表 (如UNIX的fork(),初始化页表方法:,在进程创建时建立页表,页表项在初始时,合法位、修改位及页帧号都未置上.,48,申请空闲页帧,复制父进程的数据区和栈区,复制数据区和栈区页表项内容后,修改页帧号; 继承父进程对其他资源的访问现场; 用父进程PCB中现场区初始化子进程的现场区,且保证子进程恢复现场运行后返回值为零; 将子进程挂到就绪队列; 把子进程pid作为返回值.,49,为执行程序页面建页表项,保护码为可执行,外存块号即该页所在的文件的外存块号。(不必回写) 为所有初始数据页建页表项,保护码为可读写,页类型说明成回写swap页,外存块号即该页所在文件的物理块号,待
18、该页回写时,再分配swap区空间,改外存块号栏,修改页类型为正常页。 为所有临时数据页建页表项,保护码为可读写,页类型说明成零页,外存块号栏空,当第一次访问该页时,分配页帧并清0页帧,回写时,再分配swap区空间,填外存块号栏,页类型变为正常页。,用一个可执行的文件来初始化页表。,50,在执行虚存访问指令时,由硬件合成物理地址。首先若能在联想存储器中获得该虚页的物理页帧号,则访问之。若要查当前进程页表,须先检查该页页表项的合法位,若置上,则从页表项中获得页帧号,否则要发一个页故障(page fault)或叫缺页中断(例外),当缺页中断处理完后,重新执行访存指令.联想存储器中的页表项都是合法页的
19、页表项.,三、硬件动态地址转换,51,缺页中断处理,在请求分页系统中,当所访问的页不在内存时,便产生缺页中断,请求OS将缺页调入内存。 缺页中断包括三部分: 缺页中断处理 页面调入(调出) 进程重新启动,52,1、根据发生页故障的虚地址得到页表项; 2、申请一个可用的页帧(根据所采用的替换策略可能需要引起淘汰某一页); 3、检查页类型,若为零页,则将页帧清0,将页帧号填入页表项的页帧号一栏,置合法位为1。若非零页,则调用I/O子系统将外存块号所指的数据读到可用页帧,将页帧号填入页表项中,合法位置1,结束.,四、缺页处理,当硬件执行访存指令产生一个缺页中断时进入缺页中断处理程序:,53,五、页淘
20、汰页淘汰可以发生在申请页帧时,而现代OS一般都定时进行页淘汰。如何选取被淘汰的页是由页面替换策略决定的,若已决定淘汰页P,则淘汰一页的主要工作有: 1、查P页表项的修改位,若未修改,则清0合法位,将页帧送回空闲页帧队列。 2、若已修改,则检查类型栏。 3、若是零页或回写swap区页,则申请一块swap区空间,将P的外存块号置上。 4、调用I/0子系统将页帧上的数据写到外存块号所指的外存空间。清0合法位,将页帧送回空闲页帧队列。,54,缺页中断与一般中断的区别,缺页中断与一般中断的区别主要有: 在指令的执行期间产生和处理缺页中断。 一条指令可以产生多个缺页中断。如:执行一条复制指令copy A to B,B:A:Copy ATo B,页面,654321,55,地址变换,请求分页存储管理系统的地址变换过程类似于分页存储管理,但当被访问页不在内存时应进行缺页中断处理。,56,地址变换流程,程序请求访问一页,页号页表长度?,页在内存?,Y,N,CPU检索快表,Y,修改快表,页表项在快表中?,产生缺页中断,N,访问页表,越界中断,N,Y,修改访问位和修改位,形成物理地址,A,57,缺页处理流程,缺页中断处理,保留CPU现场,该页被修改否?,从外存中找到缺页,N,将该页写回外存,内存满否?,Y,选择一页换出,N,Y,从外存读缺页入内存,修改页表,A,