컴퓨터를 구매할 때 꼭 나오는 스레드(thread) !
평소에 컴퓨터에 관한 궁금증이 많았던 나에게 이번 챕터는 좀 더 나은 컴퓨터 식별법(?)을 위한 팁이 있을 것 같아서 재밌게 읽어보았다.
스레드란?
프로세스는 한 개 이상의 스레드를 갖는데, 스레드는 프로세스에서 실제로 실행되는 흐름의 단위를 의미한다.
스레드는 프로세스 안에서 존재하므로 프로세스의 메모리 공간을 이용하고, 지역 변수를 저장하는 스택 영역을 할당 받는다. 그리고 전역 변수를 저장하는 힙 영역은 다른 스레드와 공유한다.
멀티 스레드 환경에서의 3가지 관계
1. 다대일 모델(many-to-one model)
사용자 레벨 스레스 n개에 커널 레벨 스레드 1개가 매핑되어 사용자 레벨에서 스레드를 관리한다.
하나의 사용자 레벨 스레드에서 시스템 콜을 호출하면 나머지 사용자 레벨 스레드는 커널 레벨에 접근할 수 없으므로 멀티 코어의 병렬성을 이용할 수 없다.
2. 일대일 모델(one-to-one model)
사용자 레벨 스레드 1개에 커널 레벨 스레드 1개가 매핑된다.
이 방식은 하나의 사용자 레벨 스레드에서 시스템 콜을 호출하면 다른 사용자 레벨 스레드가 모두 실행되지 않는 다대일 모델의 단점을 해결한다. 하지만 사용자 레벨 스레드 수 만큼 커널 레벨 스레드가 생성되므로 성능 저하가 일어날 수 있다.
3. 다대다 모델(many-to-many model)
사용자 레벨 스레드 n개에 커널 레벨 스레드 m개가 매핑된다.
이때 커널 레벨 스레드의 수(m)는 사용자 레벨 스레드의 수(n) 이하다.
이 방식은 다대일 모델과 일대일 모델의 장점을 포함하지만, 구현이 어렵다는 단점이 있다.