存储分块表可用下述方式表示:
位示图:利用二进制的一位表示一个物理块的状态,1表示一分配,0表示未分配。所有物理块状态位的集合构成位示图。
空闲存储块链:将所有的空闲存储块用链表链接起来,利用空闲物理块中的单元存放指向下一个物理块的指针。
位示图例
位示图占用的存储空间:物理块数/8(字节)
请求表
请求表用来登记每个进程的页表在内存中的物理位置及每个页表的长度、状态等。如下图所示。
2.存储空间的分配及回收
页面分配:计算进程所需页面数,然后在请求表中登记进程号、请求页面数等。如存储分块表中有足够的空闲块可供进程使用,则在系统中取得页表始址,并在页表中登记页号及其对应的物理块号。否则无法分配。
页面回收:将存储分块表中相应的物理块改为未分配,或将回收块加入到空闲存储块链中,并释放页表,修改请求表中的页表始址及状态。
3. 地址变换机构
地址变换机构的任务是实现逻辑地址到物理地址的变换,即将逻辑地址中的页号转换为内存中的物理块号。
分页的逻辑地址结构
分页存储管理系统中,逻辑地址由页号和页内位移组成。其结构如下所示:
若A为逻辑地址,L为页面大小,则:
页号: P=int(A/L)
页内位移:W=A % L
基本地址变换机构
页表通常存放在内存中,为了实现方便,系统中设置了一个页表寄存器存放页表在内存的起始地址和页表的长度。
进程未执行时,页表的起始地址和长度存放在PCB中。当进程执行时,才将页表始址和长度存入页表寄存器中。
地址变换过程
分页地址变换机构自动地将逻辑地址分为页号和页内位移;
将页号与页表长度进行比较,如果页号超过了页表长度,则表示本次所访问的地址已超越进程的地址空间,系统产生地址越界中断;
若未出现越界,则由页表始址和页号计算出相应页表项的位置,从中得到该页的物理块号;
将物理块号与逻辑地址中的页内位移拼接在一起,就形成了访问主存的物理地址。
分页系统的地址变换机构图
分页地址变换例1
设页面大小为1K字节,作业的0、1、2页分别存放在第2、3、8块中。
则逻辑地址2500的页号为2(2500/1024=2)页内地址为452 (2500 %1024=452)。
查页表可知第2页对应的物理块号为8。
将块号8与页内地址452拼接(8×1024+452=8644)得到物理地址为8644。
地址变换例2
一分页存储管理系统中逻辑地址长度为16位,页面大小为1KB字节,现有一逻辑地址为0A6FH ,且第0、1、2、3、页依次存放在物理块3、7、11、10中。
逻辑地址0A6FH的二进制表示如下:
页号 页内地址
000010 1001101111
由此可知逻辑地址0A6FH的页号为2,该页存放在第11号物理块中,用十六进制表示块号为B,所以物理地址为: 1011 1001101111 ,即2E6FH。
联想存储器
因页表放在主存中,故存取数据时CPU至少要访问两次主存。降低了内存访问速度。
为了提高地址变换速度,可在地址变换机构中增设一个具有并行查找能力的高速缓冲存储器(又称联想存储器或快表),用以存放当前访问的那些页表项。
引入快表后的地址变换过程
地址变换机构自动将页号与快表中的所有页号进行并行比较,若其中有与此匹配的页号,则取出该页对应的块号,与页内地址拼接形成物理地址。
若页号不在快表中,则再到主存页表中取出物理块号,与页内地址拼接形成物理地址。
同时还应将这次所查到的页表项存入快表中,若快表已满,则必须按某种原则淘汰出一个表项以腾出位置。
具有联想存储器的地址变换
联想存储器的大小
由于成本关系,快表大小一般由8—32个表项组成。由于局部性原理,联想存储器的命中率可达80%--90% 。