在没有虚拟内存支持的系统中进行链接和分页

2023-12-21

  • 首先,虚拟内存是系统的硬件特性,还是仅由操作系统实现?

在链接时重定位期间,链接器将运行时地址分配给生成的可执行文件中的每个节和每个符号

  • 这些运行时地址是否对应于虚拟地址?

  • 如果生成可执行文件的系统不使用虚拟内存怎么办?

接下来,如果不使用虚拟内存,则应用程序的地址空间将限制为加载时重定位后操作系统为其分配的物理地址空间

  • 如果不使用虚拟内存,会出现页面错误吗?

我认为,确实如此:如果包含所请求的物理地址的物理页尚未存储在 RAM 中,则应该发生页错误,这是由操作系统页错误处理程序提供服务的

  • 最后,没有虚拟内存也可以进行分页吗?

我这样问是因为分页总是与虚拟内存一起提到,但似乎分页不需要虚拟内存的存在

Thanks


哇,好多问题。

  • 虚拟内存是在哪里实现的?底层硬件需要​​支持虚拟内存。请记住,当您在程序中访问内存地址时,CPU 需要某种方式来获取属于该地址的数据。如果只有物理访问,那么操作会直接发送到内存控制器。在具有虚拟内存的系统中,您有一个MMU(内存管理单元) http://en.wikipedia.org/wiki/Memory_management_unit,它将虚拟地址转换为物理地址。 (请注意,某些微控制器提供精简版本,称为内存保护单元 (MPU),它不提供此转换步骤,但至少允许访问权限检查。)
  • 链接时地址与运行时的虚拟地址相对应吗?一般来说,链接时地址对应于运行时虚拟地址。然而,有一种模式并非如此:位置无关代码。这里,虚拟地址是在加载时由动态链接器确定的。这种方法通常用于将动态链接库(DLL / .so)加载到应用程序。有关该主题的更多详细信息,您可能想查看“链接器和加载器” http://www.iecc.com/linker/.
  • 如果我的目标系统没有虚拟内存怎么办?如果您的系统不支持虚拟内存,那么从编译器/加载器的角度来看,没有什么真正改变:您仍然需要生成代码来访问内存。唯一的区别是您的 CPU 不再进行从虚拟地址到物理地址的额外转换。
  • 如果没有虚拟内存,是否会出现页面错误?如果没有虚拟内存,则不会出现页面错误。但是,对于 MPU,如果您的应用程序尝试访问不应读/写的地址,您可能仍然会看到硬件报告的访问冲突。请注意,物理地址(更好:物理地址指向的数据)不需要加载到 RAM 中。它们只是指向已经存在的 RAM 的指针。
  • 没有虚拟内存可以进行分页吗?“分页”和“虚拟内存”通常用来表示同一事物。然而,分页也可能指将内存分割成相同大小的块(页)的概念。您的问题的答案取决于您所说的寻呼的含义。 ;)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在没有虚拟内存支持的系统中进行链接和分页 的相关文章

随机推荐

  • 如何在 SQL 的嵌套子查询中查找不同的列?

    我需要找到订购 伏特加 和 威士忌 的不同饮酒者 我只被允许使用嵌套查询 不接受其他格式 我对 sql 很陌生 所以任何帮助将不胜感激 以下是我尝试从中检索数据的表 CREATE TABLE DRINKERS All drinkers DR
  • restangular:可以有进度条吗?

    我有这个基于 reangular 的代码 在服务中 它有效 sendFile function params console log sendFile console log params return this restfulBase p
  • Coq Proof Assistant 中依赖类型的问题

    考虑以下简单的表达语言 Inductive Exp Set EConst nat gt Exp EVar nat gt Exp EFun nat gt list Exp gt Exp 及其格式良好的谓词 Definition Env lis
  • 设置 gdb 和 eclipse 从 Android 应用程序调试共享库后,无法访问地址 0X1 处的内存

    我有两个 Android 项目 一个是一个库 另一个是使用该库的常规应用程序 我的目标是从 Android 应用程序调试共享库 我遵循了这个指南 http mhandroid wordpress com 2011 01 23 using e
  • smtplib 在 Python 3.1 中使用 unicode 字符发送邮件的问题

    您好 我遇到了 unicode 电子邮件的问题 当我尝试用西班牙语发送 A adir 等单词时 系统崩溃了 我尝试了此链接上的说明 Python 3 smtplib 使用unicode字符发送 https stackoverflow com
  • 无法使用 JAXB 生成类

    我尝试使用 JAXB 生成类 但出现异常 IllegalArgumentException 非法模式字符 g 我使用一个复杂的 XSD 文件和一个绑定文件 如下所示 有人可以提供调查地点的线索吗
  • Python 获取<标题>

    我想获取使用 urllib2 打开的网页的标题 执行此操作的最佳方法是什么 解析 html 并找到我需要的内容 目前只有 标记 但将来可能需要更多 有没有一个好的解析库用于此目的 是的 我会推荐美丽汤 http www crummy com
  • KissFFT(kiss_fftr 到 Kiss_fftri) - 如何重建原始信号?

    我在理解如何正确使用 KissFFT 1 2 9 时遇到一些困难 我现在想要实现的目标是执行 FFT 然后立即执行 iFFT 以再次重建原始信号 下面的代码片段演示了我正在做的事情 void test short timeDomainDat
  • 如何从 bash 脚本中删除注释

    我正在尝试制作一个将脚本文件作为参数的脚本 它应该从文件中删除注释并将其通过管道传输到另一个脚本 如果可能的话 没有临时文件 一开始我想做这个 cut d f1 1 script name 但它也会清除一部分不是注释的行 因为有一些命令在其
  • WCF Net.TCP 服务抛出模糊错误

    我正在尝试为现有 WCF 服务启用额外的 net tcp 端点 使用用户名身份验证 该服务托管在 IIS7 中 针对服务执行客户端会返回套接字连接已中止的错误 启用对服务的跟踪后会发现抛出以下异常 System ArgumentOutOfR
  • 使用反射创建新对象?

    给定类值 public class Value private int xVal1 private int xVal2 private double pVal constructor of the Value class public Va
  • 通过引用传递智能指针

    智能指针通常很小 因此按值传递不是问题 但传递对它们的引用是否有问题 或者更确切地说 是否存在不能这样做的特定情况 我正在编写一个包装器库 并且我的几个类将智能指针对象包装在底层库中 我的类不是智能指针 但 API 目前按值传递智能指针对象
  • 使用 jQuery 设置要在第一个位置显示的选项

    我有一个带有一些选项的选择元素
  • Opera 中的 JavaScript 范围问题?

    我有一个类似于小部件的 HTML JavaScript 块 人们可以将其复制 粘贴到他们的 HTML 页面中一次或多次 该块检查 DOM 中是否已存在外部 JavaScript 文件 如果没有则加载它 如下所示 function d doc
  • 挑战 - 将 XML 处理成 T-SQL 表结构?

    如果您有此 XML
  • 触摸屏上的“滚轮”事件

    我有这个小提琴https jsfiddle net 316n1xmL 1 https jsfiddle net 316n1xmL 1 这在桌面上完美地满足了我的需要 根据滚轮滚动方向向上或向下计数并添加和删除类 我遇到的问题是如何在触摸屏上
  • XmlTextWriter序列化问题

    我正在尝试创建一段 xml 我已经使用 xsd exe 创建了数据类 根类是MESSAGE 所以创建之后MESSAGE并填充其所有属性 我将其序列化如下 serializer new XmlSerializer typeof Xsd MES
  • 未解决的___stdio_common_vsprintf_s,什么库有这个?

    我正在使用 VS2015 社区 我已经获得了一些我正在尝试构建的 C 代码 这一切都是用 C 编写的 我已经制作了一个项目作为控制台应用程序 当我构建时 我收到以下错误 问题是链接过程中找不到 stdio common vsprintf s
  • 首次使用函数的 gcc 属性

    我一直在使用gccconst and pure返回指向首次使用时分配和初始化的 常量 数据的指针的函数的属性 即函数每次调用时将返回相同的值 作为一个示例 不是我的用例 而是一个众所周知的示例 请考虑一个函数 该函数在第一次调用时分配和计算
  • 在没有虚拟内存支持的系统中进行链接和分页

    首先 虚拟内存是系统的硬件特性 还是仅由操作系统实现 在链接时重定位期间 链接器将运行时地址分配给生成的可执行文件中的每个节和每个符号 这些运行时地址是否对应于虚拟地址 如果生成可执行文件的系统不使用虚拟内存怎么办 接下来 如果不使用虚拟内