浅谈Window内存管理方式——页式管理、段式管理、段页式管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhouziyu2011/article/details/69815638

内部碎片:已经被分配出去的的内存空间大于请求所需的内存空间。

外部碎片:还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。

 

Window内存管理方式主要分为:页式管理、段式管理、段页式管理。

1、页式管理

用户程序的逻辑地址空间被划分成若干固定大小的页,相应地,内存物理空间也分成相对应的若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,这些块不必连续,实现了离散分配。由于最后一页经常装不满一块而形成了不可利用的碎片,称之为“内碎片”。

逻辑地址映射成物理地址的过程:页表寄存器中存放页表长度和页表起始地址,指令给出的地址包括页号和页内地址,用页号去索引页表,索引之前,先比较页号与页表长度,若页号大于等于页表长度,则发生越界中断,否则,将页表起始地址与页号相加可以得到该页在页表中的位置,进而得到对应的物理块地址,将物理块地址和页内地址相加即可得到物理地址。

优点:没有外碎片,每个内碎片不超过页的大小,程序不必连续存放。

缺点:要求程序全部装入内存,没有足够的内存,程序就不能执行。

 

2、段式管理

用户程序的逻辑地址空间被划分成若干大小不等的段,每段可以定义一组相对完整的逻辑信息,段的长度由相应的逻辑信息组的长度决定。存储分配时,以段为单位,段与段在内存中可以不相邻接,也实现了离散分配。

逻辑地址映射成物理地址的过程:段表寄存器中存放段表长度和段表起始地址,指令给出的地址包括段号和段内地址,用段号去索引段表,索引之前,先比较段号与段表长度,若段号大于等于段表长度,则发生越界中断,否则,将段表起始地址与段号相加可以得到该段在段表中的位置,进而得到物理段地址,将物理段地址和段内地址相加即可得到物理地址。

优点:每次交换的是一组相对完整的逻辑信息,而不像页式管理那样只交换固定大小的页从而需要多次缺页中断才能把信息完整地调入内存。

缺点:会产生外部碎片。

 

3、段页式管理

分页系统能有效地提高内存的利用率,而分段系统能反映程序的逻辑结构,将分页与分段结合起来,就形成了段页式管理方式。在段页式管理系统中,用户程序的逻辑地址空间首先被划分成若干个逻辑分段,每段都有自己的段号,然后再将每段分成若干个大小相等的页。

逻辑地址映射成物理地址的过程:段表寄存器中存放段表长度和段表起始地址,指令给出的地址包括段号、段内页号和页内地址,用段号去索引段表,段表中存放段号、页表长度、页表起始地址,索引之前,先比较段号与段表长度,若段号大于等于段表长度,则发生越界中断,否则,将段表起始地址与段号相加可以得到该段在段表中的位置,进而得到页表起始地址,将页表起始地址与段内页号相加可以得到对应的物理块地址,将物理块地址和页内地址相加即可得到物理地址。

优点:程序是以段为单位分割的,每个段内是连续的,但段间可以不连续;没有外碎片,能减少存储空间的浪费。

缺点:有内部碎片;由于管理软件的增加,复杂性和开销也随之增加。

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