页码和偏移量

2024-02-22

我正在学习不同类型的内存管理。我不明白在虚拟地址中具有偏移位的意义。以及为什么页面大小是由2?

  • 我的主要困惑是: 给我一个在指令中使用偏移量来访问某个虚拟地址的示例?

  • 我的第二个困惑是: 通常的说法是,如果逻辑地址的大小是2^m页面大小是2^n,则逻辑地址的高m-n位指定页号。


我认为您的主要和次要困惑是由于对该主题的普遍困惑造成的:)

让我谈谈这个问题,希望能对您有所帮助。首先,打个比方——想象一下您正在尝试在城市中找到一所房子。想象一下,每栋房子都有一个唯一的编号 - 您可以想象房子的数量很快就会变得非常大并且令人困惑。现在想象一下,您引入了街道的概念 - 当您将门牌号分组为漂亮的块时,门牌号现在变得更易于管理。因此:街道 = 页码,门牌号 = 偏移地址。

拥有虚拟内存页面的全部目的是允许计算机将内存分割成可管理的块,而不是浪费太多。将其分成块(页面)可以对访问、分页和其他类似的事情进行精细控制。你的页面越小,你浪费的内存就越少(如果进程 A 需要 32k 内存,而你的页面大小是 64k,你最终会得到一些未使用的内存),但是越高系统的开销。

至于为什么页面大小是2的幂,这是为了不浪费地址内的空间。由于计算机(目前)基于二进制,所以一切都倾向于归结为 2 的幂。想象一下,如果您有基于 10 因数的东西。二进制中的 10 是 1010 - 您必须使用 4 位来保存它,那么为什么不选择可以从 4 位中获得的完整值范围:0000 - 1111(0 到 15 = 16 个值)。

抱歉,我有点胡言乱语 - 我希望这能引导您走向正确的方向!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

页码和偏移量 的相关文章

  • 使用 BeautifulSoup 和 Python 抓取多个页面

    我的代码成功地从 中抓取了 tralign center 标签 并将 td 元素写入文本文件 但是 上面的网站上有多个页面 我希望能够在其中进行抓取 例如 对于上面的 url 当我单击 第 2 页 的链接时 整个 url 不会更改 我查看了
  • 恢复用python删除的文件

    所以 我使用 python 删除了一个文件 我在回收箱中找不到它 有什么办法我可以undo它或其他东西 提前致谢 编辑 我用过os remove 我尝试过Recuva 但似乎没有发现任何东西 我做了深入的搜索 如果你用过os remove并
  • 为什么要选择 64 位操作系统? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 关于这些问题 哪个 Vista 版本最适合开发人员计算机 https stackoverflow com questions 17653
  • 如何将数据直接写入显存?

    程序员有什么办法可以直接将数据写入显存吗 我知道操作系统对此非常严格 但是某些类型的应用程序 例如视频播放器或电脑游戏 如何将其数据直接写入视频内存 我知道有很多知名的库 例如 OpenGL 但它们毕竟只是普通的库 它们和我和你写的程序没有
  • 当操作系统只是进程之一时,抢占式多任务处理如何工作?

    我现在正在阅读有关先发制人的多任务处理的材料 但我忘记了一件事 所有材料都暗示 操作系统以某种方式从 外部 中断了CPU上正在运行的进程 从而导致了上下文切换等 然而 我无法想象当操作系统的内核只是 CPU 上的另一个进程时 这将如何工作
  • 动态加载和动态链接的区别?

    例程在被调用之前不会被加载 所有例程都以可重定位加载格式保存在磁盘上 主程序被加载到内存中并被执行 这称为动态链接 为什么这称为动态链接 不应该是动态加载吗 因为在动态加载中调用例程之前不会加载 而在动态链接中 链接会推迟到执行时 此答案假
  • 自旋锁与信号量

    信号量和自旋锁之间的基本区别是什么 我们什么时候会使用信号量而不是自旋锁 自旋锁和信号量主要有四个不同点 1 它们是什么 A spinlock是锁的一种可能实现 即通过忙等待 旋转 实现的锁 信号量是锁的概括 或者 相反 锁是信号量的特例
  • 如何在 OS161 中添加 open 系统调用的两个变体?

    从手册页OS161 Synopsis include
  • gcc -lpthread 不工作

    我的系统中安装了 ubuntu 11 我有一个使用 pthread 库的 C 程序 我收到错误Undefined reference to sem wait 即使我已经用标志编译了 lpthread 例如 gcc lpthread prog
  • 我如何解释 meminfo 中的所有内存?

    我试图理解如何meminfo跟踪记忆 这是我正在看的内容 MemTotal 341596 kB MemFree 147288 kB Buffers 56 kB Cached 46752 kB SwapCached 0 kB Active 8
  • 一般:如何更改 Android 核心 API 类?

    这只是一个一般性问题 供我参考 我知道如何创建标准的 Android 应用程序 但我想知道 这怎么可能 人们如何增强 Android 核心功能并深入挖掘系统 例如 假设我想调整下载管理器 http developer android com
  • 用户空间栈和堆的内存布局

    最近在研究OS 网上有一张图 展示了用户空间和内核空间的内存布局 以及栈 堆等的布局 在这个图中我看到栈位于用户空间的最高内存地址 高于堆 数据段等 为了检查这一点 我在调试视图下使用了 vs2012 中的内存观察器窗口 这是我的代码 in
  • 全局键盘挂钩的合法用途是什么?

    除了仅应由操作系统提供的应用程序启动快捷方式之外 Windows 键盘挂钩等东西的合法用途是什么 在我看来 我们只在键盘记录器之类的事情上遇到问题 因为操作系统提供了钩子来执行除操作系统内核本身之外的任何情况下任何人都不允许执行的操作 编辑
  • 不同GIT版本的GIT合并结果不同

    在不同的 GIT 版本上运行 merge 命令我们得到不同的结果 命令是 git merge no ff origin master codeline Results 版本2 1 4 gt 合并成功 版本1 7 1 gt 同一提交上的同一合
  • 如何查找或计算Linux进程的页表大小和其他内核占用?

    我怎样才能知道 Linux 进程页表有多大 以及任何其他可变大小的进程统计 如果您真的对页表感兴趣 请执行以下操作 cat proc meminfo grep PageTables PageTables 24496 kB
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • Azure:列出操作系统映像

    我是 Windows azure 新手 我看过这个文档 http msdn microsoft com en us library windowsazure jj157191 aspx 对我来说它有效 在画廊上列出图像 https mana
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • 确定分区属于什么文件系统

    操作系统如何知道分区正在使用什么文件系统 换句话说 FAT16 32 NTFS ext2 3等如何区分 如果您在 Windows 上使用 Win32 API 则可以调用 GetVolumeInformation http msdn micr
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015

随机推荐

  • 如何在角度4中以动态形式设置ngIf动态条件

    我正在创建一个动态表单 在其中根据 JSON 的响应动态填充字段 Eg type text required true minlength 3 maxlength 5 name fname visibility true type text
  • 有没有办法使用 HashWithIn DifferentAccess 序列化 ActiveRecord 的 JSON 属性?

    我在用ActiveRecord ConnectionAdapters PostgreSQLAdapter在 Rails 应用程序中 假设我有一个架构 create table foo id bigserial force cascade d
  • 如果未发送,请重试发送邮件

    我正在使用 nodemailer 通过我的节点应用程序发送电子邮件 有时电子邮件不起作用并抛出错误 直到我尝试两次或三次 我希望我的程序一次又一次地尝试 直到邮件成功发送 这是我的代码 const mailOptions from from
  • Django 锁定身份验证 - 登录表单不起作用

    我一直在研究锁定整个页面的方法 一位同事引起了我的注意Django 锁定 https bitbucket org carljm django lockdown src 我已经安装了 我的代码如下所示 INSTALLED APPS lockd
  • jQuery 如何获取元素的边距和填充?

    只是想知道 如何使用 jQuery 我可以获得格式化的总填充和边距等元素 即 30px 30px 30px 30px 或 30px 5px 15px 30px 等 I tried var margT jQuery img css margi
  • StreamingFileSink 未将数据提取到 s3

    我创建了简单的摄取服务 该服务选择本地文件并使用 StreamingFileSink 摄取到 s3 https ci apache org projects flink flink docs stable dev connectors st
  • Java 的快速超越/三角函数

    由于 java lang Math 中的三角函数非常慢 是否有一个库可以快速且良好地近似 似乎可以在不损失太多精度的情况下以数倍的速度进行计算 在我的机器上 乘法需要 1 5ns 而 java lang Math sin 需要 46ns 到
  • 在开始/结束日期将记录拆分为多个记录

    我正在寻找一种解决方案 必须使用另一个表中的数据从一个记录创建一组记录 表定义 DECLARE A AS TABLE AID BIGINT NOT NULL StartDate DATETIME NOT NULL EndDate DATET
  • 如何用SASS将数字转换为百分比? [复制]

    这个问题在这里已经有答案了 我有一张 930 像素 x 530 像素的地图 我想使用 mixin 将纬度 经度坐标转换为框内的顶部 左侧百分比值 这就是我到目前为止所拥有的 mixin latLong lat long left long
  • 使用 PHP 检测日历事件重叠冲突

    我正在开发一项功能 用于检查外部事件是否与内部事件 在日历应用程序中 发生冲突 该过程如下所示 我的应用程序创建了一系列可能的事件 称为 internalEvents 我从 Google Calendar iCloud 等日历 称为 ext
  • 如何捕获或收听浏览器通知?

    我想在 chrome 浏览器上收听 google facebook whatsapp 等网站的传入通知 我看到黑客提到here https stackoverflow com questions 15949606 how can i lis
  • Jquery Tablesorter,按链接url而不是链接内容排序

    我在一个表上使用 Tablesorter 该表使用第一列 共 4 列 中的链接 问题是 在 FF 和 Chrome 中 当通过 url 单击时 它会排序第一列 而不是链接的内容 例如 tr td a href http abc com zz
  • 在proguard中,保存包/默认访问变量和方法的关键字是什么?

    你可以说 keepclassmembers class sun public protected 但我并不排除包 默认访问方法 void myMethod 您可以添加另一个 keepclassmembers像那样 keepclassmemb
  • 如何在Vega JS中实现树节点切换?

    我在用着Vega JS https vega github io vega用于构建树形图 总的来说 我的问题如下 Vega 文档有很棒的树形布局示例 https vega github io vega examples tree layou
  • 如何使用 python opencv 测量同一图像中两条线之间的角度?

    我使用霍夫变换检测到一条不直的车道边界线 然后单独提取该线 然后与另一个具有直线的图像混合 现在我需要计算这两条线之间的角度 但我不知道这些线的坐标 所以我尝试使用给出垂直线坐标的代码 但它无法具体识别这些坐标 有没有办法测量这些线之间的角
  • 我应该如何查询 MySQL 以及如何缓存 MySQL 的结果?

    在你们所有人的帮助下 我终于成功地让 Solr 工作了 所以谢谢你们 而且我不得不说 我现在明白你为什么推荐它了 它真的很强大 现在 说到问题 我已将所有 可搜索 信息编入索引Solr 我的计划是查询 Solr 然后得到ID s查询结果 所
  • 如何仅在构建时排除打字稿中的特定文件?

    是否可以排除仅用于构建的所有测试文件 但将它们与 nodemon 一起使用以在本地运行测试 当我排除测试文件时tsconfig json在我的例子中 我收到一个打字稿错误 它找不到像 jest 这样的测试库的类型 Cannot find n
  • 自定义类型作为参数传递给函数

    当我定义自定义类型时 基础类型的类型似乎对我是否可以将其按原样传递给函数或是否需要转换它产生影响 问题是 为什么RuneFunc and StringMap工作 但不Integer https play golang org p buKNk
  • DateTime->format(epoch) 返回错误的日期

    我正在开发一个项目 但在将纪元时间格式化为人类可读时间时遇到问题 我有以下纪元时间1428512160当我把它通过 epochconverter com 时 我得到了人类时间08 04 2015 17 56 00 GMT 1 00 DST正
  • 页码和偏移量

    我正在学习不同类型的内存管理 我不明白在虚拟地址中具有偏移位的意义 以及为什么页面大小是由2 我的主要困惑是 给我一个在指令中使用偏移量来访问某个虚拟地址的示例 我的第二个困惑是 通常的说法是 如果逻辑地址的大小是2 m页面大小是2 n 则