【问题标题】: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
  • 是的,进程地址空间中的所有内存都是逻辑/虚拟的。线程数的限制与虚拟内存无关

标签: c linux multithreading memory stack


【解决方案1】:

我可以通过shell的ulimit -s获取堆栈大小,但是我不确定是否所有的虚拟内存都已经位于物理内存上,换句话说,这里是否使用了按需分页?

使用按需分页。进程可能永远不会使用它们所允许的最大堆栈空间的大部分,浪费宝贵的物理内存是没有意义的,这些物理内存可以用作可能永远不会被使用的堆栈空间的磁盘缓存。

我粗略的猜测并不是因为每个进程的最大线程数是有限的。如果栈使用按需分页,线程的数量可以超量使用,这个数量应该存在。

您将唯一的进程堆栈(由创建进程时创建的线程使用)与进程在启动后创建的线程堆栈混淆。它们是不同的东西。当一个新线程被创建时,一个新的内存块(与创建新线程的线程的堆栈完全无关)来保存它的堆栈。

【讨论】:

  • 谢谢!最后一段我还是一头雾水,有没有参考,希望多了解,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2018-02-27
  • 2021-11-24
  • 2014-09-02
  • 2014-12-16
  • 2018-10-01
  • 2012-12-02
相关资源
最近更新 更多