OS

[쉽게 배우는 운영체제] 3-2. 프로세스와 스레드: 스레드

noahkim_ 2024. 12. 12. 00:16

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다

 

1. 스레드

  • 프로세스 내에서 실행되는 작업 단위
  • 같은 프로세스 내에서 메모리와 자원을 공유 (Light Weight Process)
    • 서로 간에 직접적으로 데이터를 주고받을 수 있음
    • 데이터를 공유하므로 메모리를 효율적으로 사용할 수 있음

 

2. 멀티 태스킹

  • CPU 할당 시간을 slicing하여 배분하는 기법 (시분할 시스템)
  • 운영체제가 여러 작업을 동시에 처리하는 것처럼 보이게 하는 기법

 

3. 멀티 스레딩

  • 단일 프로세스 내에서 여러 개의 스레드를 생성하여 병렬 처리하는 방식

 

모델

커널 스레드
  • 커널이 멀티스레드를 지원하는 방식
  • 한 스레드가 블록되어도 다른 스레드는 계속 실행 가능

 

사용자 스레드
  • 사용자 공간에서 구현된 스레드
  • 운영체제가 멀티스레드를 지원하지 않을 때 사용함 
    • 커널의 기능인 동기화나 스케줄링을 직접 구현함
  • 한 사용자 스레드가 블록되면, 같은 프로세스 내 모든 사용자 스레드가 블록됨

 

장점

효율성
응답성
  • 현재 실행중인 스레드가 대기중이면, 또 다른 스레드로 응답이 가능함

 

단점

  • 자원을 공유하므로 한 스레드에서 문제가 생기면 다른 스레드에도 영향을 미침

 

동기화 문제
  • 공유 자원에 대한 접근을 제대로 동기화하지 않으면 레이스 컨디션이 발생됨
  • 전체 프로그램 동작에 영향을 줌

 

오류 전파
  • 한 스레드에서 치명적인 오류가 발생하면 전체 프로세스가 종료될 수 있음 (세그멘테이션 폴트, 무한 루프)

 

데드락
  • 여러 스레드가 서로의 자원을 기다리며 영원히 대기 상태에 빠짐
  • 모든 스레드의 실행이 중단될 수 있음