先把用户程序分成若干段,再把每一个段分成若干个页面。如一个作业有三个段,页面大小为4KB。在段页式系统中,其地址结构由段号,段内页号及页内地址三部分所组成。如下图:
地址变换过程
为了方便实现地址变换,须配置一个段表寄存器,其中存放段表始址和段长。过程如下:
在段页式系统中,为了得到一个数据,要进行三次访问内存。
1、第一次访问内存的段表,从中取得页表的始址;
2、第二次访问是访问内存的页表,取得物理块号;
3、第三次访问才是真正从第二次访问所得的地址中,取出指令和数据;
虚拟存储器的基本概念
在前面所讲的两种存储管理方式中,都要求将一个作业全部装入内存后方能运行,于是出现了两种情况:
1、有的作业很大,不可能一下子装入内存
2、有大量作业要求运行时,但由于内存容量不足以容纳所有的这些作业,只能将少数作业装入内存让它们先运行,而将其它大量的作业放在外存上等待。
解决上述问题:
1、最常见的是扩大内存。但这往往受到机器自身的限制,而且无疑要增加系统成本;
2、另一种方法是从逻辑上扩充内存容量,这下是虚拟存储技术。
虚拟存储器的引入
常规存储管理方式的特征
1、一次性:一次装入。
2、驻留性:作业从装入内存,便一直驻留在内存中,直到作业运行结束。尽管在整个进程中,可能有多次IO,但是它仍然占用着内存。
局部性原理
1、时间局限性:如果程序中的某条指令一旦执行,则不久以后该指令可能再次执行,如果一个数据被访问过,则不久以后,还可能再次被访问。
2、空间局限性:一旦程序访问了某个存储单元,在不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内。典型的例子是顺序执行。
虚拟存储器的定义
是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统。其逻辑容量由内存容量和外在容量之后所决定,其运行速度接近于内存速度,每位的成本接近于外存。所以是一个很好的解决方案。
虚拟存储器的实现方法
它的实现,都是建立在离散分配的存储管理方式的基础上。一般有两种方法:
1、分页请求系统
2、请求分段系统