虚拟存储器通过增设地址映像表机构来实现程序在主存中的定位。
一、段式管理
(1)段式管理的基本思想是把程序按内容或过程函数关系分成段,每段有自己的名字。一个用户作业或进程所包含的段对应一个二维线性虚拟空间(二维虚拟存储器)。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟虚拟地址转换为实际内存物理地址。(2)段式管理逻辑地址转换为物理地址的过程:在段式存储管理中,每个段地址的说明为两个量:一个段名(段基址)和一个位移(段内地址/段内偏移量)。
多用户虚地址:基号(程序号:用来找到段表基地址)+段号(可以从0开始顺序编号,正好与段表中的行号对应,段表中就可不设段号字段,段表中地址字段用于表示该段装入主存中的起始地址)+段内位移
已知逻辑地址中的段号和段内地址之后:通过进程的PCB表中找到段表的起始位置,根据段号查出来该段的基址,再加上段内偏移,就是实际的物理地址了。
(3)优点:段的逻辑独立性使其易于编译、管理、修改和保护,也便于多道程序共享。段长可以根据需要动态改变,允许自由调度,以便有效利用主存空间。方便编程,分段共享,分段保护,动态链接,动态增长。
缺点:主存空间分配麻烦。容易在段间留下许多碎片,造成存储空间利用率降低。由于段长不一定是2的整数次冥,因而不能简单地像分页方式那样用虚拟地址和实存地址的最低若干二进制位作为段内地址,并与段号进行直接拼接,必须用加法操作通过段起址与段内地址的求和运算得到物理地址。因此,段式存储管理比页式存储管理方式需要更多的硬件支持。
二、页式管理
(1)页式管理是用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个实际的物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。每个物理块的大小一般取2的整数幂。内存的所有物理块从0开始编号,称作物理页号。程序的各个逻辑页面从0开始依次编号,称作逻辑页号或相对页号。每个页面内从0开始编址,称为页内地址。程序中的逻辑地址由两部分组成:页号P和页内位移量W
(2)页式管理逻辑地址转换为物理地址的过程:主要是通过页表。首先根据逻辑地址A,页面大小L, 我们能确定的是页号p = int(A/L),页内偏移是A%L。 之后,分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页表,用于记录进程逻辑页面与内存物理页面之间的对应关系。
逻辑地址由页号和页内偏移组成。通过页号找到页表中的块号,块号*块大小+块偏移就是实际的物理地址。
比如逻辑地址是8203,页面大小是4k = 4096。那么页号是8203/4096 = 2,那么查找页表找到了物理块号是7. 偏移是8203%4000 = 11. 所以实际的物理地址就是7*4096 + 11 = 28683
(3)优点:没有外碎片,内碎片的大小不超过页大小。
缺点:程序全部装入内存,要求有相信的硬件支持,如地址变换机构缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。增加了机械成本和系统开销。
三、段页式存储
基本思想:用分段方法来分配和管理虚拟存储器,用分页方法来分配和管理实存。一个逻辑地址用三个参数表示:段号S;页号P;页内地址d。如下图所示:
因为既包含了段表,又包含有页表,所以系统为每个进程建立一个段表,并且要为该进程段表中的每一个段建立一个页表。系统中有一个段表地址寄存器来指出作业的段表起始地址和段表长度。
(2)段页式管理逻辑地址转换为物理地址过程:
1、进行地址变换时,首先利用段号S,将它与段表长TL进行比较。若S<TL,表示未越界
2、于是利用段表始址和段号来求出该段所对应的段表项在段表中的位置,从中得到该段的页表始址
3、利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b
4、 再利用块号b和页内地址来构成物理地址。
也就是说,段号保证能找到这一段中对应的页表起始,而页号能保证能找到在这一页表中页号对应的块号,根据块号和块内地址,就可以找到真正的物理地址了。
(3)优点:
1、它提供了大量的虚拟存储空间。
2、能有效地利用主存,为组织多道程序运行提供了方便。
缺点:
1、 增加了硬件成本、系统的复杂性和管理上的开消。
2、存在着碎片。
3、各种表格要占用主存空间。
总结:
1、段页式管理:段式划分程序,段内分页,页式划分主存,通过段号找到这一段中对应的页表起始,再通过页号可以找到对应的块号,再利用块号和页内地址找到对应的物理地址。
2、某道程序初始运行时,初始化实页号(主存起点)地址字段。
3、全相联映像的定位机构及其地址的变换:因为采用页表作为地址映像表,所以称为页表法。页表压缩成只存放已装入主存的那些虚页与实页位置的对应关系,称为目录表法。
简述页式虚拟存储器页面失效和实页冲突发生的原因及所确定替换算法的依据。
当处理机要用到的指令或数据不在主存中时,会发生页面失效;当主存已满且发生页面失效时,会发生实页冲突。替换算法的确定主要看主存是否有高的命中率,是否便于实现和辅助软硬件成本是否低。