页式地址变换——虚地址的计算方法(手写笔记)(操作系统题目解析)

先来看看网上的一道例题(其实网上有解析,但我第一遍没反应过来……所以把现在的理解写下来,以防之后又迷了)
题目一:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH转换成内存地址。
先来明确一下地址结构的分布
在这里插入图片描述前一部分为页号 P,后一部分为位移量 W(或称为页内地址)。
也就是说页号占虚地址的高位部分,页内地址占虚地址的低位部分

题目有两种出题的方式,一种是给你的虚地址不是十进制,可能是十六进制,八进制等,就比如上面的这题

题目给出的虚拟地址是十六进制,为什么是十六进制呢,看0AFEH,最后一个字母是H
在这里插入图片描述

所以我们要先转换为2进制
在这里插入图片描述

由此我们可以得到题目中的二进制为
0000 1010 1111 1110

然后我们看向页的大小,题目中页的大小为2kb,即2048也就是2的11次方。同理如果页的大小是1kb,也就是1024即为2的10次方

按照本题的2的11次方来从右往左数11位
0000 1010 1111 1110会被分为
010 1111 1110 与 0000 1

前面说过页号P占虚地址的高位部分,页内地址W占虚地址的低位部分
所以这里W=010 1111 1110, P=0000 1=1

根据题目中的前提——依次装入内存的第7、9、A、5块
在这里插入图片描述

页号P=1,查表可得块号为9,而9的二进制是1001,表首地址为0
将1001放在页内地址W=010 1111 1110的前面
0100 1010 1111 1110(前面位数不够可以补零)
将上面这行二进制转换为16进制即为4AFEH(最后一个H代表是十六进制)

总结一下就是

第一步,将虚地址转换成二进制的数;
第二步,按页的大小分离出页号和位移量(低位部分是位移量,高位部分是页号);
第三步,根据题意产生页表,将位移量直接复制到内存地址寄存器的低位部分;
第四步,以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址。

题目还有可能直接给你十进制的数字,这时候可以套公式得出结果

若给定一个逻辑地址空间中的地址为 A,页 面的大小为 L,则页号 P 和页内地址 d 可以由下面的式子得出
在这里插入图片描述
INT是整除函数,MOD 是取余函数
通俗的讲就是

页 号(整除)=虚地址 / 页大小
位移量(取模)=虚地址 mod 页大小
根据题意产生页表;
以页号查页表,得到对应页装入内存的块号
内存地址=块号×页大小+位移量

再来看例题
题目二:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145转换成内存地址。

根据公式

P=7145/2048=3(只取整数)

W=7145 mod 2048=1001(取余数)
按照页表查询
页号 块号
0 …… 7
1 …… 9
2 …… 10
3 …… 5

页号P为3,查询到块号为5,又因为页大小为2kb即2048
所以最终结果是5*2048+1001=11241

  • 67
    点赞
  • 211
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一纸春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值