用户空间的内存总是从低到高

用户空间的内存总是从低到高

我的意思是,如果它始终为真,则首先使用较低的地址,然后递增地址以访问较高的地址。可以颠倒顺序吗?

答案1

您还没有指定确切的上下文。但这对于大多数典型情况都可以回答(例如 x86):

  • 保留一些初始地址空间,以防止 NULL 指针取消引用时的内存访问。
  • 然后,内存根据进程启动细节进行分配,并且可以在运行时加载程序、其数据、主二进制文件、其数据等之间混合 - 所有这些通常都是通过 VM 页面大小步骤递增来分配的。
  • 然后,使用一大块区域来放置动态库、基于页的堆分配等——再次递增分配。但是,如果程序是多线程的,它将分配以相反顺序提交的线程堆栈(对于大多数处理器,包括 x86)。
  • 然后,可以对堆使用基于 sbrk 的顺序分配。
  • 然后,放置主线程堆栈。它的分配可能以相反的顺序提交(见上文)。
  • 然后,放置内核区;应用程序应该知道的唯一一件事是,未经明确许可,它不得访问该区域。

因此,您可能会在几乎每个程序中看到双向分配。

这在其他架构上可能有所不同。

相关内容