存储器管理(二)

分页存储管理方式
采用“紧凑”技术解决按区分配中存在的碎片问题,其实质是让存储器适应程序对连续性的要求。逻辑地址空间是从0~XKB一个连续的范围,要求主存中也有一个连续的分区用以加载。荡朱村现有的空闲区都小于程序的地址空间时,只有采用“紧凑”技术把碎片连接成一个人的空闲区才能满足作业的要求,但同时在CPU上的消耗代价会更大。所以,该方法只适用于在分配去的数目不太多,而且分配不太频繁的情况。
为了解决碎片问题,让程序不连续存放。这正是分页的思想。在分页存储管理中,主存被分成一些大小相等的物理块,程序的地址空间被分成一些逻辑页面,逻辑页与物理块大小相同。为程序分配内存空间时,程序和数据以页为单位分配内存块,将一个逻辑页存放在一个物理块中。
分页存储管理的基本方法
页面和物理块
在分页存储管理中,将一个进程的逻辑地址空间分成若干个相等的片,称为页面或页。内存空间也分成与页大小相同的若干个存储块,称为物理块或页框。为进程分配内存是,以块为单位将进程中若干页分别装入不相接的块中。由于进程的最后一页经常装不满一块,而形成不可利用的碎片称为页内碎片。每个作业最多能够形成一个页内碎片,它的长度小于一个页面的大小。
页表
在分页系统中,允许进程的每一页离散的存储在内存中,即分别占据一些不连续的物理块,系统应能保证进程的正确运行,即能在内存中找到每个页面所对应的物理块。系统又为每个进程建立一张页面映像表,简称页表。在进程地址空间的所有页内(0~n),依次在页表中有一页表项,其中记录了相应页在内存中对应的物理块。页表的作用是实现了从页号到物理块号的地址映像。为了对存储快中的内容进行保护,在页表的表项中加入了一个存取控制字。
虚地址结构
利用页表进行地址变化的方法与计算机所采用的地址结构有关,而地址结构又与所选择的页面大小有关。
页式地址变换
在页式存储管理方式下,程序员编制的程序或由编译程序给出的䯮程序经装配连接后形成一个连续的地址空间,其地址空间的分页是由系统自动完成的,而地址变换是通过页表自动、连续进行的。分页系统中地址变换过程主要是通过页表来实现的。
快表
若页表全部放在主存储器内,择取一个数据枝梢要访问两次内存。一次是访问页表,确定要取的数据的物理地址;第二次是根据所取的物理地址,到内存相关地址单元取要访问的操作数。写入一个数据情况也是一样。为了提高查表的速度,减少访问内存的次数,可以考虑将页表放在一个高速缓冲存储器中,该存储器也称为联想寄存器。联想寄存器中存放的部分页表称为“快表”。联想存储器一般由8~16个单元组成,用来存放正在运行进程的当前最常用的页号和它对应的块号,并具有进行查找的能力。
高速缓冲寄存器与内存的查找这二者同时进行,如果高速缓冲寄存器查找到所需的页号,则立即停止在内存页表中的查找。如果没有找到,则需要在内存中的页表进行查询,并将查询结果宜宾滚入高速缓冲寄存器中的空闲单元,若无空闲单元,则替换掉最先装入高速缓冲寄存器的那个页号。
两级和多级页表
在逻辑地址空间很大的情况下,页表就会变得非常大,并占用很大的一部分内存空间。因此,只将当前需要的部分页表调入内存,其余的存储在磁盘上,当需要时再将它们调入内存。为了解决查找问题,利用两级页表或多级页表来解决。
两级页表
针对难以找到大的连续存储空间存放页表的问题,可利用再将页表进行分页的办法,使每个页面的大小与内存物理块的打下相同,并为它们编号。离散的将各个页面分别放在不同的物理块中,同样为每个离散的页面建立一张页表,称为外层页表。在每个页表项中记录物理块号。可以利用外层页表和内层页表实现从进程的逻辑地址到物理地址的变换。为此,需要设置一个外层页表寄存器,用于存放外层页表的起始地址。
多级页表结构
分段存储管理方式
固定分区、动态分区到分页式存储管理方式,目的主要是为了提高内存利用率,而没有考虑程序的逻辑结构。分段存储管理方式,主要是为了满足用户和编程方面的要求,其中有些要求时其他存储管理方式难以满足的,因此,分段存储管理成为了存储管理的基础。
分段存储管理方式的基本原理
1. 分段。在分段存储管理方式中,段是一组逻辑信息集合。每个段都有自己的名字和长度,通常使用段号代替段名。每个段从0开始编号,并采用一段连续的内存空间。段和段之间可以使不连续的。分段系统中的逻辑地址由段号s和段内偏移量w组成。
2. 分页和分段的主要区别:页是信息的物理单位,分页是为了提高内存的利用率;段式信息的逻辑单位,每一段在逻辑上时相对完整的一组信息,分组是为了满足用户的需求;也得逻辑空间是一维的,而段是二维的;也得长度是由系统决定的,而段的长度是由具有相对完整意义的信息长度决定。
3. 基本原理。分段管理是将进程的地址空间划分为若干个罗极端,并按段进行存储分配。每个逻辑段占据一块连续的内存空间。短地址转换和分页地址换的过程基本相同。
信息共享
段是按逻辑意义划分的,可以按名存取。段式存储管理可以方便的实现内存的信息共享,并进行有效的内存保护。
1. 段的共享。段的共享是指两个以上的作业使用同一个子程序或数据段,该部分在内存中只包含一个副本,具体的操作是在每个进程的段表中,用相应的表项指向共享段在内存中的起始地址。当用户进程需要共享内存中某段的数据时,只要使用相同的名字,便可在新的段表中填入已存在段的内存起始地址,并设置一定的访问权限,从而实现段的共享。当不需要时,应将段释放。
2. 段的保护。在分段系统中,由于每个分段在逻辑上是独立的,比价容易实现信息保护。分段存储管理中的保护主要有地址越界保护和存取方式控制保护。
段页式存储管理方式
分页式存储管理能有效的提高内存的利用率,分段式存储管理充分考虑程序的逻辑结构,能有效的满足用户的需要。段页式存储管理方式结合了分页和分段存储管理两种方式的优点,即考虑了程序的逻辑结构,又实现了不连续加载内存目的。
1. 基本思想。段页式存储管理方便使用又提高了内存利用率,是目前应用较为广泛的一种存储管理方式。主要的概念有:采用页式存储管理的方式,将内存划分为一些大小相等的物理块;逻辑空间采用分段方式,按程序的逻辑关系把进程的地址空间分成若干逻辑段页大小等于内存块大小。在每个段内,从0开始一次编以连续的页号;逻辑地址结构,一个逻辑地址由短号s、段内页号p和业内地址d构成,记作v=(s,p,d);内存分配,内存以物理块为单位分配给每个进程;段表、页表和段表地址寄存器。系统为每个进程建立了一张段表,并且还要为改作业中的每一段建立一个页表。段表中的内容页表长度和页表地址。为了之处段表地址,系统提供了一个段表地址寄存器,它包含了段表的长度以及段表的起始地址。从而实现逻辑地址到物理地址的转换。在段页式存储管理系统中,面向物理实现的地址空间是页式划分的,而面向用户的地址空间是段式划分的。用户程序被逻辑划分为若干段,每段由划分成若干页面,内存划分成对应大小的块,进程映像是以页为单位进行的,从而使逻辑上连续的段存入到分散内存块中。
2. 地址转换。在段页式系统中,一个程序首先被分成若干程序段,每一段赋予不同的分段标识符,然后将每一段在分成若干个固定大小的页面。段页式存储管理方式中的地址转换过程包括如下步骤:首先利用段号s,将它与段长TL进行比较,若s 小于TL,表示为越界。于是地址转化硬件将段表地址寄存器的内容和逻辑地址中的短号相加,得到访问该进程段表的入口地址;将段表中的页表长度与逻辑地址中页号p进行比较,如果页号p大于页表长度,则发生中断;按照该段的页表基地址,找到该段的页表。在该页表中,找到页号p所在的项,得到访问段s的页表和第p页的入口地址;从该页表对应的表项中读出该页所在的物理块号f,再用块号f和页内地址d得到物理地址;如果对应的页不在内存,则发生缺页中断,系统进行缺页中断处理;如果该段的页表不在内存中,则发生缺段中断,然后由系统为该段在内存建立页表。在段页式系统中,为了获得一条数据,需要访问内存三次。
3. 管理算法。在地址转换过程中,软、硬件应密切配合。链接障碍中断,这个模块的功能是实现动态链接,即给每个段一个段号,在相应的段表和线性调用表中为其设置表目,并利用段号改造连接间接字;缺段中断,这个模块的功能是在系统的线性分段表中建立一个表目,并为调进的段建立一张页表,在其段表的相应表目中登记此页表的起始地址;缺页中断,发生缺页时进行。这个模块的功能是在内存中查找空闲的寻出快,如果找到,则将该页调入内存相应的空闲块;如果没有,则低啊用交换算法,交换内卒中的页到外村,冰钓金所需页面到内存,然后修改相应的页表表目。
段页式存储管理增加了软件的复杂性和管理开销。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页