사용자 스레드(User Thread)
정의
사용자가 만든 스레드로, 운영 체제의 커널이 직접 관리하지 않는다. 여러 개의 스레드가 하나의 프로세스에 연결된다. 이때 1 to N 모델을 따른다.
특징
스레드가 문맥 교환 없이 직접 실행된다.
커널이 관여하지 않아서 빠르지만, 입출력 대기(예: 파일 읽기/쓰기) 중에는 다른 스레드가 실행되지 않는다.
멀티코어 환경에서는 CPU 자원을 효율적으로 활용할 수 없다.
단점
입출력 대기 중 다른 작업을 할 수 없어서 성능 저하가 있을 수 있다.
멀티코어 시스템에서는 CPU 활용도가 낮다.
커널 스레드(Kernel Thread)
정의
커널이 직접 관리하는 스레드로, 하나의 사용자 스레드가 하나의 커널 스레드와 연결된다. 1 to 1 모델을 따른다.
특징
각 스레드가 독립적으로 스케줄링 되어, 하나가 대기 상태여도 다른 스레드는 계속 실행된다.
커널에서 모든 작업을 관리하므로 멀티코어 시스템에서 성능이 더 좋다.
안정성이 높고, 오류 발생 시 커널이 처리하므로 보안성이 좋다.
단점
스레드 전환 시 문맥 교환(context switch) 오버헤드가 있어 성능이 조금 떨어질 수 있다.
멀티레벨 스레드 (Multi-level Thread)/하이브리드 스레드
정의
사용자 스레드와 커널 스레드를 혼합한 방식으로, M to N 모델을 따른다. 사용자 스레드와 커널 스레드의 장단점을 모두 갖춘다.
특징
빠른 작업은 사용자 스레드로 처리하고, 안정성 높은 작업은 커널 스레드로 처리한다.
커널 스레드가 대기 상태일 때 다른 스레드가 대신 작업을 할 수 있어 유연하다.
단점
여전히 문맥 교환이 발생하여 성능이 사용자 스레드보다는 조금 느릴 수 있다.
'CS > 운영체제' 카테고리의 다른 글
[OS]스케줄링 (0) | 2025.04.14 |
---|---|
[Linux]chmod (0) | 2025.03.30 |
[OS]멀티 태스크, 멀티 스레드, 멀티 프로세싱 (0) | 2025.03.24 |
[OS]스레드(thread) (0) | 2025.03.24 |
[OS]프로세스 계층 구조 (0) | 2025.03.24 |