像堆栈这样的段使用需求分页吗?
Posted
技术标签:
【中文标题】像堆栈这样的段使用需求分页吗?【英文标题】:does segments like stack use demand paging? 【发布时间】:2021-07-04 11:12:20 【问题描述】:我可以通过shell的ulimit -s
获取堆栈大小,但是我不确定是否所有的虚拟内存都已经位于物理内存上,换句话说,这里是否使用了按需分页?
我粗略的猜测不是因为the max thread numbers per process is limited。如果栈使用按需分页,线程的数量可以超量使用,这个数量应该存在。
【问题讨论】:
我认为你应该在另一个网站下问这个问题:serverfault.com 是的,进程地址空间中的所有内存都是逻辑/虚拟的。线程数的限制与虚拟内存无关 【参考方案1】:我可以通过shell的ulimit -s获取堆栈大小,但是我不确定是否所有的虚拟内存都已经位于物理内存上,换句话说,这里是否使用了按需分页?
使用按需分页。进程可能永远不会使用它们所允许的最大堆栈空间的大部分,浪费宝贵的物理内存是没有意义的,这些物理内存可以用作可能永远不会被使用的堆栈空间的磁盘缓存。
我粗略的猜测并不是因为每个进程的最大线程数是有限的。如果栈使用按需分页,线程的数量可以超量使用,这个数量应该存在。
您将唯一的进程堆栈(由创建进程时创建的线程使用)与进程在启动后创建的线程堆栈混淆。它们是不同的东西。当一个新线程被创建时,一个新的内存块(与创建新线程的线程的堆栈完全无关)来保存它的堆栈。
【讨论】:
谢谢!最后一段我还是一头雾水,有没有参考,希望多了解,谢谢!以上是关于像堆栈这样的段使用需求分页吗?的主要内容,如果未能解决你的问题,请参考以下文章