따..딱히 공부하려고 포스팅하는 건 아니니까..!
쓰레드는 최대 몇개까지 생성할 수 있을까? 본문
쓰레드는 프로세스 내에 존재하는 실행 단위이다. 즉, 프로세스의 메모리 구조와 비슷하거나 같다.
이를 토대로 쓰레드의 최대 개수에 대해 알아보고자 한다.
스택과 힙의 최대크기에 대해 안다는 전제하로 진행하겠다.
스택과 힙에 대한 자세한 내용은 링크를 참고하도록 하자.
우선 쓰레드 하나를 생성해봤다.
스택의 최대 크기를 1MB로 지정한 후에, 쓰레드 하나에 char를 1MB 이상 할당해봤다.
(참고로 스택의 최대 크기를 200MB 정도로 크게 하면 abort()한다. 이는 다른 문제이므로 이 글에서는 다루지 않는다.)
아니나 다를까 윈도우에서 강제종료시킨다.
즉, 쓰레드 한개의 크기는 내가 지정한 스택 크기만큼 만들 수 있다는 것이다.
<현재 남은 램 메모리의 크기>
현재 PC에서 남은 램의 크기는 2GB이다. 그래서 1MB 크기의 char 배열을 2000개 선언해보기로 했다. (현재 스택의 최대 크기를 1MB로 설정한 상태이다.)
우선 2000개의 쓰레드를 만들어봤다.
보다시피 마지막 쓰레드까지 제대로 완료가 되었다.
다음은 1MB 쓰레드를 2500개 만든 경우다.
완료하다 도중에 중단되었다.
즉, 쓰레드는 남은 램의 크기 이상은 만들 수 없다는 의미이다.
다양한 OS를 사용해본 것이 아니기때문에 OS마다 어떤 차이가 있을지는 모르겠다.
하지만 프로세스의 메모리 특징은 크게 다르지 않을 거라고 생각한다.
참고 사이트
'시스템|서버|네트워크' 카테고리의 다른 글
VisualSVN과 iptime을 이용한 로컬 svn 네트워크 만들기 (0) | 2016.07.10 |
---|---|
(링크) 가상 메모리(Virtual Memory) (0) | 2016.06.15 |
힙(Heap)과 스택(Stack)의 최대 할당 크기 (1) | 2016.06.15 |
[리눅스]쉘(Shell) (0) | 2016.04.07 |
[리눅스]프로그램 실행과 종료 (0) | 2016.04.07 |
Comments