【问题标题】:How much stack space is typically reserved for a thread? (POSIX / OSX)通常为线程保留多少堆栈空间? (POSIX / OSX)
【发布时间】:2014-06-29 19:28:39
【问题描述】:

答案可能因操作系统而异,但我很好奇线程通常预分配多少堆栈空间。例如,如果我使用:

push rax

这将在堆栈上放置一个值并增加rsp。但是如果我从不使用push 操作怎么办?我想一些空间仍然被分配,但有多少?另外,这是一个固定的数量还是随着pushed 的数量而动态增长?

【问题讨论】:

    标签: multithreading macos assembly operating-system posix


    【解决方案1】:

    POSIX 没有定义任何关于堆栈大小的标准,它完全取决于实现。由于您标记了此OSX,因此默认分配有:

    • 主线程 (8MB)
    • 辅助线程 (512kB)

    当然,这些可以根据您的需要进行配置。分配是动态的:

    辅助线程允许的最小堆栈大小为 16 KB,并且 堆栈大小必须是 4 KB 的倍数。这个内存的空间是 在创建线程时在您的进程空间中留出空间,但 与该内存关联的实际页面不会创建,直到它们 需要

    这里包含太多细节。我建议你阅读:

    Thread Management (Mac Developer Library)

    【讨论】:

    • 太棒了,正是我想要的。谢谢
    猜你喜欢
    • 2015-08-22
    • 2010-09-13
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多