操作系统:分页存储管理方式

  1. 页式存储管理中,主存空间按页分配,可用一张“位示图”构成主存分配表。假设主存容量为2M字节,页面长度为512字节,若用字长为32位的字作主存分配的“位示图”需要多少个字?如页号从1开始,字号和字内位号(从高位到低位)均从0开始,试问:第2999页对应于何字何位;99字19位又对应于第几页?

解:

(1)内存总块数=2MB/512B=4096

位示图需要字数=4096/32=128

(2)字号=(2999-1)/32=93

位号=(2999-1)%32=22

即第2999内存页对应于位示图中93字的22位。

(3)99*32+19+1=3188

即位示图99字19位对应于内存的3188页

  1. 某系统对主存采用页式管理,供用户使用的主存区域共640K字节,被分成160块,块号为0,1,…,159。现有一作业的地址空间共占4页,其页号为0,1,2,3,被分配到主存的第2,4,1,5块中。请回答:

(1)作业每一页的长度为多少字节?

(2)写出该作业被装入主存时,其对应的页表。

(3)把该作业的每一页在主存中的起始地址(用16进制表示)填在下表中:

页号

起始地址

0

1

2

3

解:

(1)因为640K/160块 = 4K/块,作业每一页的长度为4K字节

(2)作业被装入主存是,其对应的页表为

页号

主存块号

0

2

1

4

2

1

3

5

(3)该作业的每一页在主存中的起始地址(用16进制表示)如下表所示

页号

起始地址

0

2000H

1

4000H

2

1000H

3

5000H

注:

第0页起始地址为:4K×2=8K = 2×1000H

第1页起始地址为:4K×4=16K = 4×1000H

第2页起始地址为:4K×1=4K = 2×210 = 212 = 1000000000000 = 1000H

第3页起始地址为:4K×5=20K = 5×1000H

  1. 假定某采用分页存储管理的系统中,主存容量为4MB,被分成1024块,块号为0,1,2,…,1023。某作业的地址空间占4页,其页号为0,1,2,3,被分配到主存的第28,26,12,57块中。回答:

(1)主存地址应该用多少位来表示?

(2)作业每一页的长度为多少?逻辑地址中的页内地址(页内偏移/页的大小/页的长度)应占多少位?

(3)把作业中每一页分配到主存块中的起始地址填入下表:

页号

起始地址

页号

起始地址

0

2

1

3

答:(1)因为4M = 22×220 = 222 ,所以主存地址应该用22位二进制来表示。

(2)作业每一页的长度为4MB/1024=4KB

由4K = 22×210 = 212 知逻辑地址中页内地址应占12位。

(3)该作业各页被分配到主存的块号用十六进制表示,分别为1C、1A、0C、39,故各页分配到主存块中的起始地址如下表:

页号

起始地址

页号

起始地址

0

1C000H

2

0C000H

1

1A000H

3

39000H

注:4K×1=4K = 2×210 = 212 = 1000000000000 = 1000H

第0页起始地址为:4K×28 = 28×1000H = 1C000H

第1页起始地址为:4K×26 = 26×1000H = 1A000H

第2页起始地址为:4K×12 = 12×1000H = 0C000H

第3页起始地址为:4K×57 = 57×1000H = 39000H

由页长为4KB我们得知:4KB等于2的12次方,页内偏移量在操作系统上的表示每一页的大小,那么这里这个页面大小为12位,也就是通俗的页偏移为12位,用十六进制数来表示即低位3位为0,如**000H。

  1. 某计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节,请问,若使用一级页表的分页存储管理,逻辑地址结构为:

  操作系统:分页存储管理方式_第1张图片

  1. 页的大小是多少字节?页表最大占用多少字节?
  2. 页表如下所示,某进程的逻辑地址为2D16H。该地址经过变换后其物理地址是什么?

页号

物理块号

0

1

1

3

2

4

3

6

解:(1)因为逻辑地址结构图中所示的页内偏移量是12位,所以页大小为4KB,页表项数为232/4K=220×4B,由于页表项大小为4字节,该一级页表最大占用字节数为220×4B=4MB。

(2)因为页面大小为4K,所以在32位逻辑地址中的低12位是页内地址,把逻辑地址2D16H转成二进制:0010 1101 0001 0110,其中低12位部分 1101 0001 0110部分表示页内地址,高位0010表示页号,因此可知页号为2,对应的物理块号为4,将4写成二进制为0100。因为物理块大小与逻辑页面大小一致,因此逻辑地址中的页内地址也就是物理块内的地址偏移,所以物理地址为0100 1101 0001 0110,转换为16进制就是4D16H.

  1. 某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB,页表项大小为4字节。
  1. 页内偏移是多少位?页表最大占用多少字节?
  2. 假定某时一用户页表中已调入内存的页面的页号和物理块号的对照表如下表所示,则逻辑地址0A5C(H)所对应的物理地址是多少?

页号

物理块号

0

3

1

7

2

11

3

8

解:

(1)每页为1KB,即一页的大小为1KB,由1KB = 210,可知页内偏移是10位,即逻辑地址中低位10位是用来编码页内地址的。

因此可知逻辑地址中高位编码页面地址有22位,页表项大小为4字节,那么页表大小为222×4B = 22 ×220×4B = 16MB,即页表最大占用字节为16MB。

(2)将逻辑地址0A5C(H)转换成二进制表示为  0000 1010 0101 1100

由页面大小为1KB知逻辑地址0000 1010 0101 1100的后10位 10 0101 1100是页内地址,

逻辑地址的剩余6位高位000010是页面地址,转化为十进制是2,根据查找页表可知,2页对应的物理块号为11,将十进制的11转换为二进制为1011,因此6位高位为001011,与低位地址相拼接后可得物理地址为0010 11 10 0101 1100,转换为十六进制为2E5C(H)

因此,逻辑地址0A5C(H)所对应的物理地址是2E5C(H)。

你可能感兴趣的:(java,系统架构,算法)