[CS] 스레드

또띠·2023년 11월 30일
0

CS

목록 보기
4/7

컴퓨터를 구매할 때 꼭 나오는 스레드(thread) !

평소에 컴퓨터에 관한 궁금증이 많았던 나에게 이번 챕터는 좀 더 나은 컴퓨터 식별법(?)을 위한 팁이 있을 것 같아서 재밌게 읽어보았다.

스레드란?

프로세스는 한 개 이상의 스레드를 갖는데, 스레드는 프로세스에서 실제로 실행되는 흐름의 단위를 의미한다.
스레드는 프로세스 안에서 존재하므로 프로세스의 메모리 공간을 이용하고, 지역 변수를 저장하는 스택 영역을 할당 받는다. 그리고 전역 변수를 저장하는 힙 영역은 다른 스레드와 공유한다.

  • 사용자 레벨 스레스(user-level thread): 사용자가 라이브러리를 이용해 생성 및 관리
  • 커널 레벨 스레스(kernel-level 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) 이하다.

이 방식은 다대일 모델과 일대일 모델의 장점을 포함하지만, 구현이 어렵다는 단점이 있다.



🔗 이미지 출처
[운영체제] 다중 스레드 모델다중 스레드 모델 - TechBear 님 블로그

profile
✨ 𝑬𝒗𝒆𝒓𝒚𝒕𝒉𝒊𝒏𝒈 𝒄𝒐𝒎𝒆𝒔 𝒕𝒐 𝒉𝒊𝒎 𝒘𝒉𝒐 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 𝒘𝒉𝒊𝒍𝒆 𝒉𝒆 𝒘𝒂𝒊𝒕𝒔. ✨

0개의 댓글