栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在AMD64上不必要地拆分堆栈

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在AMD64上不必要地拆分堆栈

是的,这就是他们的意思。

(当前)在64位体系结构上不需要拆分堆栈,因为64位虚拟地址空间是如此之大,它可以包含数百万个堆栈地址范围,如果需要,每个地址范围都可以与整个32位地址空间一样大。

在当今使用的平面存储器模型中,从虚拟地址到物理存储器位置的转换是在硬件MMU的支持下完成的。在amd64上,最好将64位虚拟地址空间的大块保留给正在创建的每个新堆栈,这更好(意味着总体上更快),而仅将第一页(4kB)映射到实际RAM。这样,堆栈将能够根据需要在连续的虚拟地址上进行增长和收缩(这意味着每个函数序言中的代码更少,这是一个很大的优化),同时操作系统重新配置MMU以将虚拟地址的每个页面映射到实际的地址。
RAM的空闲页,只要堆栈在某些可配置的阈值之上/之下增长或缩小。

通过明智地选择阈值(例如,参见动态数组的理论),您可以在平均堆栈操作上实现O(1)复杂性,同时保留数百万个堆栈的好处,这些堆栈可以根据需要增长并仅消耗内存他们使用。

PS:当前的Go实施远不及以下任何一项:-)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/484202.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号