1. 每个线程都有一个栈;
2. 进程中各个线程的栈是共享的 (从用法上来讲,每个线程有一个独立的栈, 但是从linux内存管理上讲, linux不能以线程为单位管理内存; 一个线程可以访问另一线程的栈内容,而MMU不会报错.)
3. Linux在设计时贯彻一个”早死早超生”的原则, 他会检测正常的栈越界. 正常的栈越界是慢慢地,循序渐进地, linux内核在两个线程的栈之间(不确定是线程之间还是栈顶或其他位置)加了一个guard page, 这个gard page是没有任何访问权限的, 当一个线程踏入这个guard page时, 报错.