根据虚拟地址,如何求出页号和偏移量?

这篇具有很好参考价值的文章主要介绍了根据虚拟地址,如何求出页号和偏移量?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法掌握

根据虚拟地址,如何求出页号和偏移量?
虚拟地址划分成虚拟页号虚拟页偏移量
物理地址同样可划分为物理页号物理页偏移量

如何划分,关键点在于页面的大小。

假设给你一个十进制表示的地址20000,一个页面的大小为4KB,那么如何找出地址20000的具体位置呢?

先不探讨这个问题的答案,先来看看下面的这个举例。
根据虚拟地址,如何求出页号和偏移量?

如果有12个人,头上的数字代表他的学号,按照学号低到高排序。一个组有三个人(一个组的大小为3),如何判断学号为8的人在哪一个组,又在哪一个组的第几个呢?
根据虚拟地址,如何求出页号和偏移量?
现在在回过来看假设给你一个十进制表示的地址20000,一个页面的大小为4KB,那么如何找出地址20000的具体位置呢?
和上面的原理是一样的:地址从0开始的、页号从0开始。要注意:地址是按字节编的,可以理解为一个地址就占1字节。
所以:20000 / (4 * 1024) = 4 …… 3616
即虚拟地址20000的虚拟页号为4、偏移量为3616。

根据这个原理:20000化为二进制位100111000100000
根据虚拟地址,如何求出页号和偏移量?
后12位为偏移量,前面的则代表页号。100化为十进制就是4、111000100000化为十进制就是3616。

上面的原理实际上是很简单地,如果后12位全是1,就是一个4KB页面的大小,再加1——>那么后面12全变为0,第13位+1,页面就+1——>跳到下一个页面……

按照这个点,可以知道

  • 如果页面为8KB,后13位为偏移量、前面为页号。
  • 如果页面为16KB,后14位为偏移量、前面为页号。

解题技巧

  • 如果给你十进制的,则页号 = 地址 / 页面大小(编程取整),偏移量 = 地址 % 页面大小。
  • 如果给其他方便化为二进制的,比如二进制、十六进制。按照比特位来计算,如果页面为8KB,后13位为偏移量、前面为页号。 如果页面为16KB,后14位为偏移量、前面为页号。

以上内容的基础是没有采用多级页表,只有一级页表。如果采用多级页表可以避免把所有的页表存放在内存中。对于二级页表的计算,基本都会给你划分好位数,直接按照之前的方法计算就可以了,可能偶尔需要变通,原理都差不多的。

训练题

一、【该题取自《现代操作系统》】对下面的每个十进制虚拟地址,分别使用4KB页面和8KB页面计算虚拟页号和偏移量:20000, 32768, 60000

分析:
使用4KB页面时各地址的虚拟页号和偏移量

  • 20000
    20000 / (4 * 1024) = 4 ……3616
    虚拟地址20000所在虚拟页号为4、偏移量为3616
  • 32768
    32768/(4 * 1024) = 8……0
    虚拟地址32768所在虚拟页号为8、偏移量0
  • 60000
    60000/(4 * 1024) = 14……2656
    虚拟地址60000所在虚拟页号为14、偏移量为2656

使用8KB页面时各地址的虚拟页号和偏移量

  • 20000
    20000 / (8 * 1024) = 2 ……3616
    虚拟地址20000所在虚拟页号为2、偏移量为3616
  • 32768
    32768/(8 * 1024) = 4……0
    虚拟地址32768所在虚拟页号为4、偏移量0
  • 60000
    60000/(4 * 1024) = 7……2652
    虚拟地址60000所在虚拟页号为7、偏移量为2656

二、【来源未知,取自网络】假设计算机系统的页面大小为4KB,进程P的页面变换表如下表所示。若P要访问的逻辑地址为十六进制3C20H,那么该逻辑地址经过地址变换后,其物理地址应为()

页号 物理块号
0 2
1 3
2 5
3 6

A、2048H
B、3C20H
C、5C20H
D、6C20H

分析:
逻辑地址也就是虚拟地址为3C20H、地址后面的这个H是为了标注它是十六进制的表示法。化为二进制就是 011 1010 0010 0000。页面大小为4KB、则后12位表示偏移量、前面的表示虚拟页号、可知所在虚拟页号为011即虚拟页号为3。通过上面的表可知,虚拟页3映射到物理页6,偏移量在虚拟页和物理页都是一样的,所以选D文章来源地址https://www.toymoban.com/news/detail-426455.html

到了这里,关于根据虚拟地址,如何求出页号和偏移量?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汇编原理学习记录:物理地址=段地址*16+偏移地址

    8086计算机拥有20根地址总线和16根数据总线,地址总线中的16根和数据总线存在复用 数据总线的数量决定了数据总线的宽度,决定了处理器的位数,有多少根数据总线就是多少位的处理器。 在现代计算机系统中,寄存器的位数和数据总线的位数总是保持一致或相近的。 地址的

    2024年02月10日
    浏览(43)
  • 如何利用地图API接口根据地址获取具体的经纬度?

     目录 一、登录到百度地图开放平台 二、认证为开发者 三、创建应用 四、地址转经纬度API接口 五、封装JAVA工具类 百度地图开放平台网址:https://lbsyun.baidu.com/ 这里你有两种选择,可以选择认证个人开发者或者企业开发者,区别在企业认证每日接口调用次数配额更多,并发

    2024年02月16日
    浏览(56)
  • 如何根据IP地址判断是IPv4还是IPv6

    IPv4地址的书写形式为:“192.168.0.1” IPv6地址的书写形式为:“2001:DB8:85A3:8D3:1319:8A2E:370:7344” 给你一个IP地址,它有三种可能:IPv4、IPv6、既不是IPv4也不是IPv6的无效地址。所以,如果用函数ipGetAddressAsNumber,只能判断是不是ipv4,编写如下函数: 如果用函数ipGetAddressAsArray,只

    2023年04月08日
    浏览(50)
  • 已实现:JS如何根据视频的http(s)地址,来截取帧图片,并实现大图压缩的功能

    现在,我们已经有了视频的http地址,我们怎么截取帧图片呢?我以Vue为基础架构,来写写代码。 1、先写布局,先得有video,然后得有canvas 界面上很简单,就一个视频容器,一个画布canvas还不让它显示,还有一个就是截取帧图片了。 接下来是js关键方法部分: 以上的代码就是

    2024年01月17日
    浏览(41)
  • Windows 虚拟地址 到底是如何映射到 物理地址 的?

    我发现有很多的 .NET程序员 写了很多年的代码都没弄清楚什么是 虚拟地址 ,更不用谈什么是 物理地址 以及Windows是如何实现地址映射的了?这一篇我们就来聊一聊这两者之间的联系。 怎么去找 虚拟地址 呢?相信很多朋友都知道 应用程序 用的是虚拟地址,所以从应用程序中

    2024年02月11日
    浏览(43)
  • 计算机网络4小时速成:如何根据IP地址和子网掩码计算自己的网段和ip可用范围?

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月06日
    浏览(46)
  • 开启虚拟机(centos7)没有ens33 ip地址的解决方法(已解决)

    出现下图这样的情况 发现没有ens33 输入:i 进行编辑; 将最后ONBOOT=no改为yes即可; 点击esc键,然后输入 : :wq(注意这里是冒号加wq) 保存退出;   这样就开启了ens33 接着重启网络服务就可以看到ip地址 出现下图表示已经重启成功 输入ifconfig ens33有了ip地址  

    2024年02月13日
    浏览(52)
  • VM中Linux虚拟机IP地址总是自动变化的一种解决方法

    一开始使用Xshell远程连接虚拟机中的CentOS 7.9系统时,在重启系统后主机地址总是变化,第一次是192.168.136.134,第二次变成192.168.136.135,,,,,这样非常麻烦,每次都要去修改会话属性或者新建会话,在进行以下操作后解决上述问题: 首先,分别使用ip a和ifconfig两个命令显

    2024年02月15日
    浏览(48)
  • Allegro如何使用Cross Copy命令快速复制器件的位号和丝印外形其他层

    Allegro 如何使用Cross Copy命令快速复制器件的位号和丝印外形其他层     在Allegro做PCB设计的时候,如果需要复制器件的位号到其它层是无法直接实现的,如果直接拷贝器件的位号的话,效果如下 拷贝C1013,出现的是C* 同样如果使用Z-copy命令,也是无法Z-copy text的,Finds下方tex

    2024年02月13日
    浏览(68)
  • 最长公共子序列(详细代码 注释 分析 以及求出最长公共子序列内容方法)

    文章有些长,希望能够耐心看完,并且对你有帮助,文章是自己看了书之后,总结的,如果有什么错误的地方,欢迎指出。 一些基本的概念: 子序列: 原序列中删除若干个元素得到的序列,即原序列中可以不连续的一段 子串: 原序列中任意个连续的序列元素组成的序列,

    2023年04月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包