2015년 1월 18일 일요일

stack & heap in multithreading ( 멀티 스레딩에서 스택과 힙 )


단일 Process 에서의 스택과 힙 

일반적으로 스택과 힙이라고 한다면 아래와 같은 그림을 많이 봤을것입니다.



출처:https://sites.google.com/site/wdhamilttutorials/c/q2/stack_vs_heap

stack은 위에서 아래로 자라고 heap은 아래에서 위로 자란다고 알고 있습니다.

그리고 이 사실을 10년 넘게 멀티스레딩 환경에서는 어떨까라는 고민을 안해 왔습니다. Process가 독립적인 주소공간을 가지는 Process에서는 관계없지만 동일 주소 공간을 지니는 thread에서는 여러개의 thread가 각각 stack을 가져야 하는데 그러면 어떻게 될까요?




멀티스레딩 환경에서의 스택과 힙

기억나는지 모르겠지만 thread를 생성할때 stack크기를 지정했었던게 기억에 납니다.
무심코 스택크기만 적었지만 왜 heap크기는 정하지 않았던걸까요? 정답은 바로 가까이 있었습니다.
힙은 공유하고 스택은 따로 관리하고 있습니다.

적절한 이미지를 찾았습니다.
출처:http://www.mono-project.com/docs/advanced/garbage-collector/sgen/




댓글 없음:

댓글 쓰기