[问题] memory stack 的问题

楼主: kyuudonut (善良老百姓)   2016-08-27 22:05:40
最近写 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
作者: stupid0319 (征女友)   2016-08-27 22:21:00
看雪学院有一本加密与解密,有反组译教学,可以看看
作者: epithet (epithet)   2016-08-27 23:26:00
二、可以在 stack 外围设立一小段禁止写入的区域,越界时才会触动 二、 同一个 CPU 下,不会真的同时运作,切到的那个行程如果跟人相撞...其他行程的资料会被移到别处
作者: b0920075 (Void)   2016-08-28 01:37:00
stack好像有个机制会把一个值放在stack里面,会检察看有没有被更改为其他值,有改到表示溢出。
楼主: kyuudonut (善良老百姓)   2016-08-28 17:45:00
谢谢各位前辈的回复!

Links booklink

Contact Us: admin [ a t ] ucptt.com