预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共21页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

3.5分页存储管理Paging(书P63) 3.5.1引言 同“实存”相对应的另外一类存储管理技术称为“虚拟存储”管理技术。虚拟存储概念的关键在于,使运行进程的访问地址与主存的可用地址相脱离。 运行进程的访问地址叫做虚地址。在主存中的可用地址叫做实地址。一个运行进程可以访问的虚地址的范围叫做进程的虚地址空间。在指定的计算机系统中,可使用的实地址范围叫做计算机的实地址空间。 用户全部程序和数据所组成的虚拟空间放在哪里呢?通常用一个大容量的外部存储器(磁盘、磁鼓)来存放每个用户的虚拟空间的全部数据。所以实际上用户的虚拟地址空间并不能增到无限大,它受到两个条件的制约: ⑴指令中的地址场长度的限制。因为进程访问的虚拟地址应限制在指令中地址场长度所能表示的范围内; ⑵外部存储器大小的限制。用户的虚拟空间不能超过外存中的作业存放空间。 综上所述,所谓虚拟存储器是一个地址空间,是进程访问的逻辑地址空间,而不是物理的主存空间。虽然进程只访问虚地址,但是它们实际上必须在实存里运行。因此当进程运行时虚地址必须映象成为实地址。这种映象必须快速完成,否则计算机系统的性能就会降低到不能容忍的水平,从而抵消了采用虚拟存储器概念而带来的许多好处。 决定作业虚拟地址空间中哪部分进入主存,哪能部分放回外存的工作由操作系统负责。具体来说它包括三方面内容: ⑴将作业的哪部分装入主存; ⑵放在主存什么位置; ⑶主存空间不足时,把哪部分置换出主存。 实现虚拟存储的两个最普通的方法是分页和分段,这要在本章详细讨论。 3.5.2分页的基本概念 一、分页概念 1.把用户的逻辑地址空间分成相同大小的块,每块顺序编号,称为“页”(Page,虚页)。每页中指令顺序存放,页号为0,1,2,3,… 2.等分主存:把主存也分成与页相同大小的块叫存储块(memoryBlock),也叫实页。块一旦定下来就不能改变。编号为0,1,2,3,… 3.主存分配原则:分页情况下,每页装在一个存储块里,但连续的页面在内存空间中可以是不连续的,哪儿有空白区就放在哪儿,所以作业在内存中存放,页与页之间不连续,每页的信息是连续的。 二、实现原理 这就要在主存中设一个页表,或叫页面映象表(Pagemaptable)。为作业的每页设一条表目。 这张页表是当作业装入主存时,由系统根据分配情况建立的,而且是每个作业一张页表。系统在主存的固定区域内,拨出一些存储区来存放这些页表(系统表),系统有了这张页表后,就可对作业地址空间中的每一页进行动态重定位。 为了便于分页和简化地址变换过程,通常选择页的大小为2的幂。 例如 1K=1024=210 2K=2048=211 4K=4096=212 一般为1K,页的尺寸太大,和可重定位分区分配没什么不同了,页的尺寸太小,页表就得加长,太碎,调度增加,因此一般为1-4K。 我们举一例子来说明分页技术下的动态地址变换过程: 假定机器字长为16位,其中15位为有效地址 0 4 5 14 页号 页内相对地址(位移量) P W 这样一表示,实际分页系统中用户的逻辑地址是一个有序对(P,W),P是被访问项的页号,W是被访问项在页P内的位移量。 如果一条指令在用户地址空间为100,即第P=0页,W=100;分到主存第2块(见上图),那么就是在主存中页表查出,实地址为2048+100=2148单元处。 如果指令是 LOAD1,3500 这3500的用户地址空间为3072+428 查页表,3页分到块8(实页8),即8192为起始地址,页偏移428处,实地址等于8192+428=8620处,找到数据12345。 在分页技术下的动态地址变换按如下方式进行:系统将作业的页表在主存的起始地址及页表长度放到一个控制寄存器内,当执行指令时,访问用户地址(逻辑地址) 在页面映象表中找到页3对应实页(存储块8),将实存地址与W相连接而形成。这就是主存的物理地址8620 由上述地址变换过程可以知道,程序地址空间的分页是由系统自动完成的,用户不用管。地址变换过程是通过页表来实现的。因此人们称页表为地址映射表。 总之分页管理技术是 ⑴作业分成页,页内连续,页号顺序; ⑵主存分成块(和页大小一样),块顺序编号; ⑶每页分配一块内存,在内存中可以是散放(可不连续放); 物理空间和逻辑空间不一致。 ⑷提供页面映射表(pagemaptable),建立页和块之间的函数关系。 ⑸相对地址用(页号P,页内位移量W)表示。 页内位移量——就是页内字节相对于该页第一字节的距离,我们称页内第一字节位移量为0。 例1:页大小=1000字节(十进制例子实际应是二进制) 105=(0,105) 4178=(