[OS]멀티 스레드 모델

2025. 3. 24. 19:48·CS/운영체제

사용자 스레드(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
'CS/운영체제' 카테고리의 다른 글
  • [OS]스케줄링
  • [Linux]chmod
  • [OS]멀티 태스크, 멀티 스레드, 멀티 프로세싱
  • [OS]스레드(thread)
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[OS]멀티 스레드 모델
상단으로

티스토리툴바