thread 생성시 할당되는 리소스는?
글쓴이: 마스터리 / 작성시간: 금, 2007/03/09 - 5:14오후
제가 알기로는 프로세스가 기동이되면 가상메모리가 2G바이트가 할당되어 코드영역, 스택영역, 힙 등등이 할당되어
사용된다고 알고 있습니다만, 윈도우 ,유닉스, 리눅스 모두 동일한가요?
유닉스, 리눅스에서 ulimit -a 를 쳐보면 프로세스 스택크기가 나옵니다.
보통 디폴트로 8M로 잡혀있던데, 2G에서 스택영역을 겨우 8메가까지로 제한되어 있다니.. 제 생각이 맞는건가요?
여기서 본론으로 들어가서, 프로세스가 스레드를 생성시(여러개) 각 스레드의 스택영역 및 힙영역은 어떻게 생성되나요?
그리고, 그 크기는 어떻게 정해지는지 궁금합니다.
스레드간 공유데이타영역이라는 것도 단독 프로세스일때 없던것이 스레드 생성하면서 만들어지는 영역인가요?
갑자기 혼란스러워 질문도 많이 어지럽네요.. 죄송합니다.
전, 명확히 프로세스(메인스레드) 기동시 2G가 할당된다면, 스레드가 생성되면서 이 가상메모리를 각 스레드가 어떻게 나누어서
쓰는지 알고싶네요
Forums:
커널에서
커널에서 scheduling하는 단위가 되는 thread control block(정확한 명칭이 따로 있는지는 모르겠습니다) 에 해당하는 것이 만들어지며 스택이 할당됩니다. 쓰레드 간에는 메모리 스페이스를 공유하기 때문에 따로 힙 영역을 할당하거나 그런 일은 하지 않습니다.
덧붙여서 제가 궁금한 것을 질문하자면..., 쓰레드의 스택은 어디에 할당이 될까요? 혹은, 가상메모리 공간에서 각 쓰레드의 스택 영역은 어떻게 나누어지는 걸까요?
댓글 달기