五、地址转换
首先你要知道,在页内存储中逻辑地址和物理地址的概念
逻辑地址 = 页号 + 页内地址
物理地址 = 块号 + 页内地址
可以看到他们其页内地址都是不变的,变的只有前面的页号和块号
所以,地址转换的做题思路就是:页号变块号,页内地址照抄
题型一:十进制地址转换
如题:已知某个分页系统,页面大小为1K(即1024字节),某一个作业有4个页面,分别装入到主存的第3、4、6、8块中,求逻辑地址2100对应的物理地址。
有些题目会直接给你页表,但像这道题没有直接给你,其实他是一样的,如果觉得不清楚,自己画一个
页号 | 块号 |
---|---|
0 | 3 |
1 | 4 |
2 | 6 |
3 | 8 |
十进制地址转换很简单,按我们的思路,先求出页号和页内地址,再把页号变块号即可
解题过程:
-
求页号:逻辑地址 / 页面大小 (取整数),所以本题页号为2
2100 / 1024 = 2 2100/1024=2 2100/1024=2 -
求业内地址:逻辑地址 % 页面大小 (取余数),所以本题业内地址为52
2100 % 1024 = 52 2100 \% 1024=52 2100%1024=52 -
页号变块号:对应上方的页表,2对应的是6,所以块号是6
-
计算物理地址:块号 x 页面大小 + 业内地址 (注意这里块号要乘回页面大小),所以本题物理地址为6196
6 ∗ 1024 + 52 = 6196 6*1024+52=6196 6∗1024+52=6196
题型二:十六进制地址转换
如题: 设某用户的编程空间共32个页面,每页为1KB,内存容量为16KB。假定用户程序的页表如下所示。请计算逻辑地址0A5CH所对应的物理地址。(要写出计算过程)
页号 | 块号 |
---|---|
0 | 5 |
1 | 10 |
2 | 4 |
3 | 7 |
我们来依次解读题目给的东西是什么
32个页面:这里其实就是告诉你页号有多少位,在计算机中是用二进制存储的,所以32=2的5次方,那么页号就有5位
每页为1KB:这里是告诉你页内地址有几位,1KB=1024B=2的10次方,那么业内地址就有10位
内存容量16KB:这里是告诉你最终物理地址有几位,16KB=16*1024B=2的14次方,那么最终物理地址就有14位
知道上述内容,我们解题就很方便了
解题过程:
-
将16进制逻辑地址变为2进制
0 A 5 C H = 0000 1010 0101 1100 0A5CH=0000\ \ 1010\ \ 0101\ \ 1100 0A5CH=0000 1010 0101 1100 -
划分页内地址和页号
先划分页内地址,由于业内地址我们已知10位,所以从后往前数10位就是页内地址
再划分页号,从第10位开始再从后往前数5位,多余的1个0直接去掉
0 A 5 C H = 000 10 ‾ 10 0101 1100 ‾ 0A5CH=\mathbf{\underline{ 000\ \ 10}}\ \underline{10\ \ 0101\ \ 1100} 0A5CH=000 10 10 0101 1100 -
页号变块号
二进制页号00010转换为10进制是2,根据页表可得块号为4,再把块号转换为二进制(也要五位)
4 = 00100 B 4=00100B 4=00100B -
由于我们之前知道最终物理地址是14位的,但现在5+10等于15位,多了1位,所以把块号前面去掉1位0,再把业内地址抄回来
其实这个物理地址的位数并不影响做题,因为前面都是0去不去无所谓
物理地址 = 01 00 ‾ 10 0101 1100 ‾ = 125 C H 物理地址=\mathbf{\underline{01\ \ 00}}\ \underline{10\ \ 0101\ \ 1100}=125CH 物理地址=01 00 10 0101 1100=125CH