内存管理学习之存储管理技术

内存存储管理技术分为简单存储管理技术和虚拟存储管理技术,区别在于简单存储管理技术一次性的将进程的程序和数据装入内存,而虚拟存储管理技术则允许一部分程序和数据装入内存开始执行。

从内存分配的连续性上,存储管理技术又分为连续存储和非连续存储,其中非连续存储分为分页存储、分段存储和段页式存储。连续存储则是上几次内存管理学习内容中的主角,这里不再详细介绍。

连续存储

首先介绍连续存储中的越界保护问题,在连续存储系统中,将会为每个进程都分配两个寄存器来存储进程内存空间的基址和大小,分别为基址寄存器和界限寄存器。进程在装入内存后将自己所分配到的基址和尾址存放在pcb中,等待cpu调用时将这两个值放入寄存器中。当cpu中地址转换硬件进行转换的时候将会对转换后的物理地址与界限寄存器中的值进行越界判断是否超出范围,若越界则进行越界中断。此过程可以采用静态和动态重定位均可。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

非连续存储

首先讲简单存储管理技术:简单分页技术、简单分段技术、段页式技术,需要采用动态重定位的技术。

(1)分页技术:采用静态固定分区的方法进行划分内存,划分后的内存分区成为页框,同时对装入内存的进程程序进行划分,划分的分区大小与页框的大小相同,成为页面。页面为逻辑内存而页框是物理内存。

程序对页面进行编号,页面内的指令相对于页面第一条指令的距离成为页面内偏移量,这样,cpu读取命令的逻辑地址为页面号和页面内偏移量的组成。

页面的管理使用页表,每个进程都有自己的页表,页框的管理使用空闲页框表管理。当进程被执行的时候,页表的首地址和页表的长度将会记录在专门的页表寄存器中等待查询。

页表项是由页面号和页框号组成,可以根据逻辑地址中的页面号查询到存储到的页框编号从而得到物理地址。页表的长度是作为越界检查设置的。在页表项中也可以添加一些方卫权限项,对进程进行保护。

对于每个进程都包含一个页表,当进程过大的时候,页表的大小可能也会很大,这样存储在内存中就会占据空间造成浪费。解决的方法有:分级页表,对大页表再次分页面进行存储,但是没有减少空间的浪费;虚拟存储技术,页表只有一部分;反置页表,在内存中只存在一个页表,所有进程共享,页表向以页框号、页面号和进程ID组成,通过页面号和进程ID查询得到页框,该数据结构可以由哈希函数完成减少查询时间,若地址冲突使用链表。

快表:每次地址转换和执行都需要两次读取内存,导致效率降低,为了解决地址转换的速度,为页表设置一个高速缓存器,存放最近访问的页表项,根据局部性原理,最近访问过的项在一段时间内将再被访问。每次转换底之前将首先查询快表是否存在相应项。

分页系统的优缺点:优点减少了内零头提高了内存利用率,缺点是对程序不能模块化,每个页面的信息都不完整,且不适合于动态链接和代码共享。

----------------------------------------------------------------------------------------

(2)分段技术:为了方便用户在逻辑上的模块化,将进程按照逻辑模块进行分段,每个模块在逻辑上相对独立。每个段的长度不等,因此在内存划分采用动态划分技术。

逻辑地址=段号+段内地址;段表项=段号+段长+段的起始地址;段表寄存器=段表地址和段表长度。该寻址方式是二维的,不仅与段内地址有关,还与段表号有关。因此在地址转换上需要更多地硬件支持。

其他的方法与分页技术差不多,相对分页的好处就是能够进行模块测试,使得用户逻辑更加清楚,有利于动态链接。

(3)段页式技术:采用上述方式的结合方法,首先将程序按逻辑模块分段,然后再分页。因此,在物理内存上采用固定分页的方法,逻辑上采用分段的方法。

逻辑地址=段号+页面号+页内偏移量;段表项=段号+页表长度+页表地址。每一段都有自己的页表。

该方式适合大型复杂度高的模块化程序,复杂度和硬件要求高。

-------------------------------------------------------------------------------------------------------

虚拟存储管理技术:需要动态重定位、交换技术和缺页(缺段)中断技术

虚拟内存=实际内存+外存空间,虚拟存储技术在多道程序系统中是重要的技术,提高了系统的吞吐量。

在虚拟内存管理中,页表和段表增加两项内容,存在和修改项,存在表示是否在内存,修改表示程序进入内存后是否被修改过。

(1)虚拟分页管理技术

地址转换过程:首先查询快表,若有直接进行地址转换,若无则查询页表,判断是否缺页,若无则进行更新快表进行地址转换,如有进行缺页中断处理。缺页中断处理首先判断分配给进程的内存是否满了,若不满直接调入内存,若满则进行页面置换,并更新页表,然后进行地址转换。

(2)虚拟分段技术

地址转换过程:前面与分页相同。在缺段中断处理中需要注意,分段使用动态分区,可以使用紧凑技术,因此判断内存是否满足的时候首先判断总空闲分区是否满足,若满足采用紧凑技术,否则进行分段置换,更改空闲分区表。

(3)虚拟段页式技术

由于段页式技术也是采用页框存储,采用固定分区技术,因此,置换的是页面而不是段,所以应该采用缺页中断技术,其他与简单虚拟段页式存储相同。

posted @ 2012-10-16 21:55  我不是geek  阅读(915)  评论(0编辑  收藏  举报