운영체제_스레드_스레드의 유형

미뇽·2024년 4월 10일
0

운영체제(강의)

목록 보기
12/43
post-thumbnail

스레드의 유형

사용자 수준 스레드와 커널 수준 스레드

사용자 수준 스레드(ULT: user-level thread)

작동 방식

  • Thread2
    - B를 블록시키는 함수 호출 -> 커널로 제어 이동
  • 커널
    - 입출력 작업 -> 프로세스 B 블록
    - (b) -> Thread2는 수행 상태가 아니지만 라이브러리에서는 수행 상태로 인식
  • 프로세스 B 할당 시간 소모
    - 준비 상태로 전이
    - Thread2는 여전히 수행 상태
  • Thread2는 Thread1에 의해 블록
    - 프로세스 B는 여전히 수행 상태

특징

  • 스레드 관리와 관계된 모든 일은 응용이 수행하며 커널은 스레드의 존재를 알지 못함
    - 커널은 프로세스 단위로 스케줄하며 프로세스에게 어떤 수행 상태를 할당
  • ULT 관리 루틴들도 구성된 패키지인 스레드 라이브러리를 이용하여 모든 응용을 멀티스레드 기반으로 프로그래밍 가능
  • 스레드 라이브러리
    - 스레드의 생성과 제거, 스레드 간 메시지와 데이터 전달, 스레드 수행의 스케줄링, 스레드 문맥의 저장과 복구 등을 위한 코드
  • 모든 작업은 사용자 공간과 단일 프로세스 내에서 이루어짐

장점

  • 스레드 관리를 위한 모든 자료구조가 프로세스의 사용자 주소 공간에 있음
    => 스레드 교환에 따른 커널 모드 권한 요청 불필요
  • 응용에 맞게 구성될 수 있는 스케줄링
  • 어떠한 운영체제에도 적용

단점

  • 대부분의 시스템 호출은 해당 스레드를 블록
    => 프로세스 내의 모든 스레드가 블록
  • 멀티프로세싱의 장점을 살릴 수 없음
    - 임의 시점에 단일 프로세스 내에서 하나의 스레드만을 수행
    - 응용의 수행 속도를 향상시킬 수 있음

단점의 해결방법

  • 응용을 멀티스레딩 대신 멀티프로세서로 작성
    => 프로세스 교환을 함으로써 각 교환마다 오버헤드 증가, 스레드의 장점을 살리지 못함
  • 자켓팅(jacketing) -> 블록형 시스템 호출을 비블록형(nonblocking) 시스템 호출로 변환

커널 수준 스레드(KLT: kernel-level thread)

특징

  • 스레드 관리와 관련된 모든 작업이 커널에 의해 이루어짐
  • 커널이 전체 프로세스에 대한 문맥 정보 및 각 프로세스 내 스레드에 대한 문맥 정보 유지

장점

  • 사용자 모드 스레드의 단점 모두 극복
    - 커널은 여러 처리기에게 같은 프로세스 내의 여러 스레드를 동시에 스케줄
    - 한 프로세스의 스레드가 블록되도 커널이 같은 프로세스에서 다른 스레드를 스케줄할 수 있음

단점

  • 같은 프로세스 내의 한 스레드에서 다른 스레드로 제어를 넘길 때 커널로의 모드 전환 필요
    - 커널 모드 진입으로 인한 오버헤드 발생(연산지연 발생)
연산사용사 수준 스레드커널 수준 스레드프로세스
Null Fork(Null 프로시저를 호출하는 프로세스/스레드의 생성,스케줄,수행,완료까지 걸린 시간)3494811,300
Signal-Wait(프로세스/스레드가 대기 중인 한 프로세스/스레드에게 신호를 보낸 다음 특정 조건을 기다리는데 걸리는 시간)374411,840

=> KLT 멀티스레드의 이용으로 속도 향상, ULR를 이용한 추가적인 속도 향상(응용의 특성 따라 다름)

두 모드를 결합한 형태

특징

  • 스레드 생성이 완전히 사용자 공간에서 이루어짐
  • 한 응용 내의 스레드들에 대한 스케줄링 및 동기화가 대부분 사용자 공간에서 이루어짐
  • ULR들이 KLT에 사상(mapping)
  • 한 응용의 스레드들이 다수의 처리기에서 병렬 수행 가능
  • 블록형 시스템 호출이 전체 프로세스를 블록시키지 않음
  • 예) Solaris(ULT:KLT = 1:1)

장점

순수 ULR 및 KLT 방식의 장점을 모두 살릴 수 있음

단점

설계가 어려워서 대부분 안 씀

다른 배합

단일 프로세스에 여러 스레드를 제공하는 다대일(M:1) 관계와 더불어 다대다(M:N) 관계와 일대다(1:M) 관계의 조합 또한 연구중

스레드:프로세스설 명시스템 예
1:1수행 중인 각 스레드는 자신의 주소 공간과 자원을 갖는 유일한 프로세스대부분의 UNIX 시스템
M:1프로세스는 주소 공간과 동적인 자원 소유권을 정의하며, 여러 스레드가 해당 프로세스 내에서 생성 및 수행될 수 있음Windows NT, Solaris,
Linux, OS/2, OS/390 등
1:M스레드는 한 프로세스 환경에서 다른 프로세스 환경으로 이동 가능 -> 스레드가 다른 시스템 간을 쉽게 이동할 수 있음Ra(Clouds), Emerald
M:N1:M과 M:1의 특성 혼합TRIX
profile
문이과 통합형 인재(人災)

0개의 댓글