这是重新提交,因为我没有收到来自 superuser.com 的任何回复。很抱歉对于这个误会。
我需要知道嵌入式系统中物理寻址和虚拟寻址概念之间的区别。
为什么在嵌入式系统中实现虚拟寻址概念?
与嵌入式系统中具有物理寻址概念的系统相比,虚拟寻址的优势是什么?
在嵌入式系统中,虚拟寻址到物理寻址之间的映射是如何完成的?
请用一些简单架构中的一些简单示例来解释上述概念。
这是重新提交,因为我没有收到来自 superuser.com 的任何回复。很抱歉对于这个误会。
我需要知道嵌入式系统中物理寻址和虚拟寻址概念之间的区别。
为什么在嵌入式系统中实现虚拟寻址概念?
与嵌入式系统中具有物理寻址概念的系统相比,虚拟寻址的优势是什么?
在嵌入式系统中,虚拟寻址到物理寻址之间的映射是如何完成的?
请用一些简单架构中的一些简单示例来解释上述概念。
物理寻址意味着您的程序实际上知道 RAM 的真实布局。当您访问地址 0x8746b3 处的变量时,这就是它真正存储在物理 RAM 芯片中的位置。
使用虚拟寻址,所有应用程序内存访问都转到页表,然后从虚拟地址映射到物理地址。所以每个应用程序都有自己的“私有”地址空间,没有程序可以读取或写入另一个程序的内存。这称为分段。
虚拟寻址有很多好处。它可以防止程序因不良的指针操作等而相互崩溃。因为每个程序都有自己独特的虚拟内存集,所以没有程序可以读取另一个程序的数据 - 这既是安全性的,也是安全性的。虚拟内存还支持分页,其中程序的物理 RAM 可以在不使用时存储在磁盘(或者,现在是较慢的闪存)上,然后在应用程序尝试访问页面时回调。此外,由于只有一个程序可能驻留在特定的物理页面,因此在物理分页系统中,要么 a) 所有程序必须编译为加载到不同的内存地址,要么 b) 每个程序都必须使用与位置无关的代码,或者 c)某些程序集不能同时运行。
物理-虚拟映射可以在软件(硬件支持内存陷阱)或纯硬件中完成。有时甚至页表本身也在一组特殊的硬件内存上。我不知道哪个嵌入式系统做了什么,但每个桌面都有一个硬件 TLB(翻译后备缓冲区,基本上是虚拟物理映射的缓存),有些现在有高级内存映射单元,可以帮助虚拟机之类的。
虚拟内存的唯一缺点是增加了硬件实现的复杂性和较慢的性能。
VAX(数字设备公司的虚拟地址扩展,后来成为康柏,后来成为惠普)是虚拟嵌入式硬件系统的一个很好的例子。这是一台 32 位迷你计算机,具有称为 VMS 或虚拟内存系统的操作系统。Dave Cutler 是系统的主要架构师之一,他后来为 Windows NT 编写了内核。他非常适合阅读此内容和其他内容。Vax 有特殊的硬件来控制虚拟空间和通过硬件控制操作码访问以确保安全......非常安全。该系统曾经是或现在是内核级别的 modfern day PC 的祖父。我在 WNT 3.51 上看到的第一个 BSOD 我能够阅读,因为它来自 VMS 中用于在不稳定时停止系统的崩溃转储。顺便看看 VMS 和 WNT 的名称,您会发现 VMS 的字母表中的下一个字母组成了 WNT 一词。这不是意外。也许是对 DEC 的抨击,因为他放了他。