인생을 코딩하다.

[OS] 커널 수준의 쓰레드 vs 사용자 수준의 쓰레드 본문

OS

[OS] 커널 수준의 쓰레드 vs 사용자 수준의 쓰레드

Hyung1 2021. 4. 7. 23:30
728x90
반응형

커널  수준의 쓰레드

  • 쓰레드 패키지를 운영체제에서 관리한다.
  • 각 응용 프로그램들은 운영체제에 영향을 많이 받게 되므로 이식성이 낮다.

사용자 수준의 쓰레드

  • 쓰레드 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을 관리한다.
  • 쓰레드 패키지를 런타임 시스템에서 운영한다.
  • 운영체제 입장에서는 런타임 시스템도 하나의 프로세스로 인식한다.
  • 쓰레드를 운영하지 않는 운영체제제에서 실행할 수 있으므로 이식성이 뛰어나다.

쓰레드 운영 방식

@커널 수준의 쓰레드 @사용자 수준의 쓰레드
커널 개입이 크다. 커널 개입이 작다.
런 타임 시스템이 필요 없고 커널이 직접 한다. 런 타임 시스템이 필요하다.
속도가 느리다. 속도가 빠르다.
문맥 교환이 많다. 문맥 교환이 적다.
독자적 알고리즘이 필요없다. 독자적 알고리즘이 필요하다,
대형 시스템에 부적합 하다. 대형 시스템에 적당하다.
구현이 쉽다. 구현이 어렵다.
커널을 스스로 호출 한다. 커널을 스스로 호출하지 못한다.
사용을 해제하지 못하면 운영체제가 지원한다. CPU 사용을 해제하지 못하면 시스템이 중단된다.

 

커널 수준의 쓰레드 vs  사용자 수준의 쓰레드

커널 수준의 쓰레드

  • 커널 수준 스레드는 커널 레벨에서 생성되는 스레드이다. 
  • 운영체제 시스템 내에서 생성되어 동작하는 스레드로, 커널이 직접 관리한다.

그런데 커널 수준에서는 프로세스가 주기억 장치에 여러 개가 적재되어 CPU 할당을 기다리며 동작한다.

 

CPU에서 인터럽트 발생으로 현재 작업 중인 프로세스가 Block 되고 다른 프로세스로 변경할 때, CPU 내 재배치 레지스터에 다음에 실행할 프로세스 정보들로 교체를 하고 캐시를 비운다. 이 것을 컨텍스트 스위칭이라고 한다.

 

이 컨텍스트 스위칭이 일어날 때는 CPU가 일을 못한다. 그래서 이게 자주 일어나면 성능에 영향이 발생하게 되는 단점이 있다.


하지만 커널이 직접 관리하므로 특정 스레드가 Block이 되어도 다른 스레드들은 독립적으로 일을 할 수 있다.

 

사용자 수준의 쓰레드

 

  • 쓰레드 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을 관리한다.
  • 쓰레드 패키지를 런타임 시스템에서 사용한다.
  • 운영체제를 사용하는 입장에서는 런타임 시스템도 하나의 프로세스로 인식한다.
  • 쓰레드를 운영하지 않는 운영체제제에서 실행할 수 있으므로 이식성이 뛰어나다.
  • 즉, 입출력 인터럽트가 발생하면 커널은 '사용자 모드'가 되어서 사용자 수준 스레드의 응답을 기다린다. 사용자 수준 스레드의 응답이 오면 다시 '커널 모드'로 변환되어 이어서 커널 스레드가 일 처리를 하게 되는 것이다.
  • 컨텍스트 스위칭이 발생하지 않는다.

Bloking I/O가 커널 수준의 쓰레드, Non-Bloking NIO가 사용자 수준의 쓰레드라고 보면 될 것 같다.

728x90
반응형

'OS' 카테고리의 다른 글

[OS] 프로세스 간 통신(Inter-Process Communication,IPC)  (0) 2021.04.28
[OS]인터럽트(interrupt)  (0) 2021.04.06
[OS]context switching  (0) 2021.02.06
OS 정리  (0) 2020.09.12
Comments