最近写 c code 一直想厘清一些问题
跟c程式没有很直接相关,若发在这不妥再请麻烦版友告知了 m(_ _)m
最近在研读virtual memory相关知识,大致上了解paging的运作模式
但仍不太懂 stack 往下长的实际情况是如何运作?
stack就我的理解基本上是:
程式在执行 function call 时,堆叠便会一直往下长
[问题一] process 是在 loading 时才知道分配到的 stack 的起始位置吗?
[问题二] stack overflow 如何判定? 在此 stack 的大小是由谁决定的呢?
[问题二] 如果有多个 process 同时运作,各自 stack 的起始位置又是如何分配呢?
(一直往下长不会撞到吗@@)
(当某 process 需要的 stack 大小超过两个 page 又是如何维护?
page 如果不连续怎么办?)
[问题三] 一个程式有code, text区段,是直接从 heap 下面开始剩余内存
随机取一page各自加载吗?还是 memory 还有在更细分区块?
还请各位前辈指教,或是指引我关键字QQ 我会去查资料
小弟目前正在研读"程式设计师的自我修养-连结,加载,程式库"
这本书写的很详细,却又引出更多疑问 orz