进程的地址空间是什么?

时间:2011-04-07 08:22:12

标签: unix

请问任何机构告诉地址空间的含义是什么? 为什么这样被称为? 还有关于虚拟内存的信息?

提前致谢

此致 Pavankumar

1 个答案:

答案 0 :(得分:4)

我认为地址空间是指segment

在实模式下(英特尔的XT和286)段只是一种使程序独立于内存空间的方法。当程序被编译时,地址(可变数据,标签 - 函数)被硬编码到程序中。 - 这样就很难同时加载两个程序,因为他们都希望使用相同的地址。

我们需要使用相对地址而不是绝对。相对地址和物理地址之间的分辨率是相对于进行的。如果从段0x200开始加载一个程序,并且从0x600开始加载另一个程序,则它们可以自由地使用相同的地址(例如0x41),因为这将相对于它们各自的段。在我们的情况下(实模式),段0x200将被转换为物理地址0x2000(通过乘以0x10),并且在添加相对地址后,生成的物理地址将为{ {1}}。

有许多细分可以使用。默认情况下,数据操作是相对于程序的数据段(保存在cpu的0x2041寄存器中)进行的,代码操作是相对于 Code Sement 进行的(在DS注册表中保存。使用堆栈段CS寄存器)将堆栈地址解析为物理地址。

但在实模式下,您可以自由使用这些段,您可以访问其他程序的段或输入任意值,这些值将被解析为任意物理地址。

在保护模式下,整个概念发生了变化。细分不再包含地址。他们持有选择器。它们仅引用表中的元素,其中保存了实际的基址。该表还包含限制,因此您不能再解决任何物理地址,只能在操作系统为您的程序提供的内存部分内。这引入了进程对内存块的所有权概念。

我认为这对于一开始就足够了,随时可以阅读Wikipedia或其他好的来源。该主题已有详细记载。