段页式存储管理

内存管理有三种:页式管理,段式管理和段页式管理。

1. 页式管理

页式管理是用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个实际的物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。

每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页号。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:页号P和页内位移量W。

在页式怎么从逻辑地址找到真正的物理地址呢?主要是通过页表。首先根据逻辑地址A,页面大小L, 我们能确定的是页号p = int(A/L),页内偏移是A%L。  之后,分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系,如下图所示:

逻辑地址由页号和页内偏移组成。通过页号找到了页表中的块号,块号*块大小+块偏移(就是叶偏移)就是实际上的物理地址。

比如逻辑地址是8203,页面大小是4k = 4096。那么页号是8203/4096 = 2,那么查找页表找到了物理块号是7. 偏移是8203%4000 = 11. 所以实际的物理地址就是7*4096 + 11 = 28683。

 

页式存储的优缺点如下:

优点:没有外碎片,每个内碎片不超过页的大小。

缺点:程序全部装入内存,要求有相应的硬件支持,如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。增加了机器成本和系统开销。

程序全部装入内存,也就是说从逻辑地址上来说应该是连续的,而之后的段式存储,从逻辑地址上就不是连续的,有点像链表的结构一样,容易造成碎片等问题。

2. 段式管理

段式管理的基本思想是把程序按内容或过程函数关系分成段,每段有自己的名字。一个用户作业或者进程所包含的段对应一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换为实际内存物理地址。比如下面的分段:

        段的长度由相应的逻辑信息组的长度决定,因而各段长度不等,引入分段存储管理方式的目的主要是为了满足用户(程序员)在编程和使用上多方面的要求。在页式管理中页的大小是固定的,只根据页面大小大小死生生的将程序切割开;而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开。这样对于程序员来说,每一个段意义明确,比较灵活。

在段式管理中怎么从逻辑地址找到真正的物理地址呢?

首先在段式管理中,逻辑地址是段号+段内地址:

而实际地址是段基地址+段内地址。所以问题的关键就是段号->段基址。而这个东西是通过段表来实现的:

已知了逻辑地址中的段号和段内地址之后:通过进程的PCB中找到段表的起始位置,根据段号查出来该段的基址,再加上段内偏移,就可以得到实际的物理地址了。

总的来看,页和块是信息的实际物理单位,大小是确定不变的,地址空间是一维的;而段实际上是一个逻辑上的单位,大小由用户自己决定,地址空间是一个二维的结构。

段式管理的优缺点如下:

(1)    段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。

(2)    段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。

(3)    方便编程,分段共享,分段保护,动态链接,动态增长

 因为段的长度不固定,段式虚拟存储器也有一些缺点:

(1)    主存空间分配比较麻烦。

(2)    容易在段间留下许多碎片,造成存储空间利用率降低。

(3)    由于段长不一定是2的整数次幂,因而不能简单地像分页方式那样用虚拟地址和实存地址的最低若干二进制位作为段内地址,并与段号进行直接拼接,必须用加法操作通过段起址与段内地址的求和运算得到物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。

3. 段页式存储

其基本思想是:用分段方法来分配和管理虚拟存储器,用分页方法来分配和管理实存。一个逻辑地址用三个参数表示:段号S;页号P;页内地址d。如下图所示:

因为既包含了段表,又包含有页表,所以系统为每个进程建立一个段表,并且要为该进程段表中的每一个段建立一个页表。系统中有一个段表地址寄存器来指出作业的段表起始地址和段表长度。

那么怎么从逻辑地址中的段号和段内页号和页内地址求出实际的物理地址呢?步骤如下

1) 进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界

2) 于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址

3) 利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b

4) 再利用块号b和页内地址来构成物理地址。

也就是说,段号保证能找到这一段中对应的页表起始,而页号能保证能找到在这一页表中页号对应的块号,根据块号和块内地址,就可以找到真正的物理地址了。

段页式存储管理的优缺点

 优点

(1) 它提供了大量的虚拟存储空间。

(2) 能有效地利用主存,为组织多道程序运行提供了方便。

缺点:

(1) 增加了硬件成本、系统的复杂性和管理上的开消。

(2) 存在着碎片。

(3) 各种表格要占用主存空间。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值