[OS] Thread Management

연꽃·2021년 12월 23일
0

Computer Science

목록 보기
4/5

요약 정리

🏀 스레드(Thread)란?

  • 프로세스에서 자원과 제어 중, 공유한 자원을 제어하는 기본 단위
  • 장점: 사용자 응답성, 자원 공유, 경제성, 멀티 프로세서 활용

🏀 스레드의 구현

  • 사용자 수준 스레드: 사용자 수준의 스레드 라이브러리로 구현
  • 커널 수준 스레드: 커널에서 스레드의 생성, 관리 수행

1. 스레드의 개념

🏀 스레드(Thread)의 정의

  • Light Weight Process

  • 프로세서 활용의 기본 단위

  • 구성요소: Thread ID, Register Set, Stack

  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유

🏀 스레드(Thread)의 장점

  • 사용자 응답성(Responsiveness): 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속한다. 예를 들어, 게임을 할 때, 화면이 나오고 마우스의 움직임이 입력되어야 하고 스피커 혹은 마이크가 작동을 하는데 하나의 스레드로 작동하는 경우는 마우스를 이동한다면, 다른 작업들을 멈춰야 한다. 하지만 스레드가 여러 개면 하나의 스레드가 작업을 한다고 하더라도 다른 스레드들이 작업을 하고 있기 때문에 중간에 멈출 일이 없는 것!(멀티 스레드!, 싱글 스레드는 이게 안되는 것일 듯!)
  • 자원 공유(Resource sharing): 자원을 공유해서 효율성 증가(컨텍스트 스위치가 일어나지 않아, 커널의 개입을 피할 수 있음)
  • 경제성(Economy): 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세서 활용: 여러 개의 CPU를 사용할 수 있어, 병렬처리를 통해 성능 향상

2. 스레드의 구현

🏀 사용자 수준 스레드(User Thread)

  • 사용자 영역의 스레드 라이브러리로 구현됨
  • 커널은 스레드의 존재를 모름
  • 커널의 관리를 받지 않아 생성 및 관리의 부하가 적고 유연한 관리 가능, 이식성이 높음
  • 하지만 커널은 프로세스 단위로 자원을 할당하기 때문에, 하나의 스레드가 block상태가 그 프로세스도 block상태가 된다. 그래서 모든 스레드가 대기 해야하는 상황이 벌어진다.

🏀 커널 수준 스레드(Kernel Threads)

  • OS(Kernel)가 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행으로 Context Switching등 오버헤드가 크다
  • 커널이 각 스레드를 개별적으로 관리하여 프로세스 내 스레드들이 병행 수행 가능. 즉 하나의 스레드가 block 상태가 되어도, 다른 스레드들은 계속 작업이 가능하다.

🏀 혼합형(n:m) 스레드

  • n개 사용자 수준 스레드 - m개의 커널 스레드(n > m)
  • 사용자는 원하는 수만큼 스레드 사용
  • 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
  • 효율적이면서도 유연함

참고 : 운영체제 강의(김덕수 교수님)

profile
우물에서 자라나는 중

0개의 댓글