쓰레드는 사용자 쓰레드와 커널 쓰레드로 나눌 수 있다. 사용자 쓰레드는 thread library에 의해서 커널 지원 없이 사용자 수준에서 제공한다. 커널 쓰레드는 OS 커널에서 직접 지원되고 관리된다. 현대 운영체제(windows,Solaris, Linux, Mac OS)는모두 커널 쓰레드를 지원한다.
이 떄 사용자 프로그램의 쓰레드와 커널 쓰레드 간에 여러 연관 관계가 존재하는데, Many-to-One 모델, One-to-One 모델, Many-to-Many모델로 볼 수 있다.
1) Many-to-One 모델 (solaris 구버전)
다수의 user-level thread가 한 개의 kernel thread에 연관되는 모델으로, thread 스케줄링과 동기화가 사용자 공간의 thread library에서 수행된다.
context switching과 동기화 오버헤드가 작다는 점이 장점이지만, Multiprocessor 시스템에서 thread들의 병렬 실행이 불가능하다는 단점을 갖고 있다.
2) One-to-One 모델 (windows, linux, solaris 최신버전)
각 user-level thread가 각각 하나의 kernel thread에 연관되는 모델로, 더 많은 병렬 실행이 가능하다는 장점을 가지고 있다. 그러나 커널 시스템 호출을 사용하여 커널 쓰레드를 생성해야 한다는 단점을 가지고 있다.
3) Many-to-Many 모델
다수의 user-level thread가 다수의 kernel thread에 연관되는 모델이다. kernel thread의 수는 user-level thread의 수와 작거나 같다.
one-to-one모델과 같은 병렬성을 가지고, user-level thread 개수에 제한이 없다는 장점을 가지고 있다.
'Computer Science' 카테고리의 다른 글
[자료구조] Linked List를 이용한 다항식 표현방법 (0) | 2024.01.11 |
---|---|
[컴퓨터구조론] RAID의 종류 (RAID - 1~5) (Chap.6 보조기억장치) (0) | 2024.01.11 |
[컴퓨터구조론] 캐시 메모리(목적, 캐시 기억장치, 캐시 적중률- 평균 기억장치 액세스 시간 관계) (1) | 2024.01.09 |
[운영체제] 쓰레드 개념, TCB(쓰레드 제어 블록)에 대하여 (0) | 2024.01.08 |
[자료구조] Big-Oh Notation (1) | 2024.01.08 |