此图片可在第9章开始的Operating system concepts上找到。虚拟地址空间的大小为 0 到 max 。我的问题是:
答案 0 :(得分:1)
请记住,您所看到的是一个非常简化的图表。首先,底层硬件设置了最大逻辑地址范围。
该范围的某些部分将通过操作系统保留(通过硬件或软件,具体取决于处理器)。其余地址用于用户地址空间。
所以你所看到的是用户地址空间的概念视图。这可以通过系统参数和过程配额进一步限制。
什么决定最大值?它固定了吗?
因此,MAX是硬件限制,操作系统地址分配,系统参数和过程配额的组合。因此,它可以是不固定的。
如果堆栈和堆之间的漏洞被填满,并且其中一个漏洞想要不断增长,会发生什么?
首先要记住这个图只是概念性的。一个简化是地址空间内的有效地址不需要是连续的。可能有漏洞。其次,内存布局通常由链接器控制。 “文本”和“数据”可以颠倒甚至交错。
蓝色“洞”通常是未分配(无效)的内存页面。有些操作系统不会增加堆栈。它由链接预先分配。在多线程系统中,可能存在多个堆栈(图的另一个简化),并且通常有多个堆。
随着各种功能映射页面进入逻辑地址空间,蓝色区域缩小。如果go变为零,则下一次映射页面的尝试将失败。