请有人告诉我地址空间是什么意思吗?为什么叫成这样?也是关于虚拟内存?
提前感谢
问候帕文库马尔
发布于 2011-04-07 08:46:42
我认为地址空间指的是细分市场。
在实模式下(英特尔的XT和286)段只是一种使程序独立于内存空间的方法。当程序被编译时,地址(变体、标签-函数)被硬编码到一个程序中。-这样就很难同时加载两个程序,因为它们都想使用相同的地址。
我们需要使用相对地址而不是绝对地址。相对地址和物理地址之间的分辨率是相对于段的。如果一个程序是从段0x200开始加载的,而另一个程序是从0x600开始加载的,那么他们可以自由地使用相同的地址(例如0x41),因为这将相对于它们各自的段。在我们的示例(实模式)中,段0x200将被转换为物理地址0x2000 (通过将其乘以0x10),在添加相对地址之后,得到的物理地址将是0x2041。
有许多段可以使用。默认情况下,数据操作是相对于程序的数据段(保存在cpu的DS寄存器中)进行的,代码操作是相对于代码区(保存在CS寄存器中)进行的。堆栈地址使用堆栈段 (SS寄存器)解析为物理地址。
但在实际模式下,您可以自由地使用这些段,您可以访问其他程序的段或输入任意值,这些值将被解析为任意物理地址。
在保护模式下,整个概念发生了变化。段不再保存地址。他们持有选择器。它们只引用表中的一个元素,其中保存了真正的基址。该表还包含限制,因此您不能再寻址任何物理地址,只在内存的一部分,这是由操作系统给你的程序。这引入了进程对内存块所有权的概念。
我认为这是足够的开始,欢迎阅读更多的维基百科或其他好的来源。这个话题已经有了很好的记录。
https://stackoverflow.com/questions/5578035
复制相似问题