(2)将指令序列变换成页地址流,设: ①页面大小为1K; ②用户内存容量为4页到32页; ③用户虚存容量为32K。 在用户虚存中,按每页存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条—第9条指令为第0页(对应虚存地址为[0,9]); 第10条—第19条指令为第1页(对应虚存地址为[10,19]); 。。。。。。。。。。。。。。。。。。。。。 第310条—第319条指令为第31页(对应虚存地址为[310,319]); 按以上方式,用户指令可组成32页。
时间: 2023-06-20 07:04:56 浏览: 383
假设指令序列为:I1, I2, I3, ..., I320,每个指令占据 4 字节(32 位),则一共需要 1280 字节。
由于页面大小为 1K,即 1024 字节,每页能够存放 256 条指令。
因此,该指令序列需要 5 个物理页来存储。这 5 个物理页的页框号为:P0,P1,P2,P3,P4。
将指令序列按照每页 256 条指令的方式排列成 5 页,得到以下 5 个虚拟页:
虚拟页号 | 起始指令编号 | 虚拟页地址
0 | 0 | [0, 255]
1 | 256 | [256, 511]
2 | 512 | [512, 767]
3 | 768 | [768, 1023]
4 | 1024 | [1024, 1279]
其中,每个虚拟页的起始指令编号为该虚拟页中第一条指令在指令序列中的编号。
用户内存容量为 4 页到 32 页,即需要 28 个虚拟页表项。每个虚拟页表项包括一个有效位、一个修改位、一个保护位和一个页框号,共 4 个字节。
因此,虚拟页表大小为 28 × 4 = 112 字节。
用户虚存容量为 32K,即可以存放 32 个物理页。
因此,可以用一个长度为 32 的页表来记录虚拟页号到物理页号的映射关系。
将 5 个物理页映射到虚拟页表中的某些位置,得到以下映射关系:
虚拟页号 | 页表项内容
0 | 1 1 1 P0
1 | 1 1 1 P1
2 | 1 1 1 P2
3 | 1 1 1 P3
4 | 1 1 1 P4
5-31 | 0 0 0 0
其中,有效位、修改位和保护位都被设置为 1,表示该页可用,并且可以读写。
当程序访问虚拟页号为 i 的指令时,先查询虚拟页表,得到物理页号 j,然后将指令从物理页 j 中读取。如果该物理页没有在内存中,则需要将其调入内存中。如果内存中已经没有空闲的物理页,则需要按照某种页面置换算法选择一个页面进行置换。
阅读全文