首页  >  文章  >  后端开发  >  x86_64 架构上是否需要拆分堆栈?

x86_64 架构上是否需要拆分堆栈?

Patricia Arquette
Patricia Arquette原创
2024-11-06 03:27:02530浏览

Are Split Stacks Necessary on x86_64 Architectures?

在 x86_64 上不需要拆分堆栈?

运行时模型中拆分堆栈的主题引发了关于它们在 64 位架构上的必要性的问题,例如x86_64。有些意见认为,由于可用的地址空间扩大,不再需要拆分堆栈。

问题1的回答:意见的解释

是的,引用的意见这个问题意味着在 x86_64 架构上不需要拆分堆栈。 32 位系统上提到的“数百万线程”和“狭窄用例”表明 64 位系统的大地址空间可以容纳足够数量的堆栈范围。

答案问题 2:不必要的理由

由于虚拟地址空间明显更大,64 位架构上不再需要拆分堆栈。这允许每个堆栈拥有一个专用且相当大的地址范围,可与整个 32 位地址空间相媲美。

在现代平面内存模型中,硬件内存管理单元 (MMU) 将虚拟地址转换为物理地址记忆位置。在 x86_64 上,为每个堆栈分配大块虚拟地址空间并仅将初始页面映射到实际 RAM 被发现效率更高。

这种方法允许堆栈使用连续的虚拟地址根据需要增长和缩小地址。当堆栈增大或缩小超过指定阈值时,操作系统可以重新配置 MMU,以将虚拟内存的附加页面映射到实际内存。

通过仔细选择这些阈值,堆栈可以像具有 O(1 ) 平均堆栈操作复杂度。它们保留了支持数百万个堆栈的优势,这些堆栈可以增长到任意大小,同时仅消耗它们使用的内存。

以上是x86_64 架构上是否需要拆分堆栈?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn