스택은 스레드를 기준으로 보면 좋다. 스레드는 자신만의 스택 메모리를 가지게 된다. 만약, 1mb가 기본 스택 사이즈라면, 프로세스의 스택 메모리 사이즈의 총합은 1mb x 스레드 갯수가 된다. 스레드는 트릭한 방법을 쓰지 않는한 다른 스레드의 스택을 알 수 없다.

힙은 프로세스를 기준으로 보면 좋다. 프로세스는 디폴트 힙을 가지며, os가 제공 해주는 힙생성 api를 이용하여 여러 힙을 가질 수 있다. 모든 스레드는 힙에 접근할 수 있다. 프로세스는 다른 프로세스의 힙에 접근할 수 없다. os가 제공해주는 ipc를 지원해주는 api에 의하여 제한적으로 커뮤니케이션만 가능하다.

스택이 비교적 빠른 이유는 캐시 히트가 잘되기 때문이다. 캐시 히트가 잘 되는 이유는, 스택은 기본적으로 ebp, esp와 같은 레지스터를 사용하기 때문이다. 스택이 깊어지거나 얕아질때마다 두 레지스터를 건드리게 되고 캐시의 템퍼럴, 스페이셜 로컬리티에 의하여 관련된 캐시라인들이 읽어져오기 때문이다. 동시에 스택은 대체로 작은 사이즈를 유지하려 하기에 로컬리티에 유리한점이 있다.

생각나는대로 적어봄... 틀린거나 다른의견 있으면 환영