OS

[OS] Context Switch & Thread scheduling

Accept 2024. 11. 23. 22:20

Context Switch

 

1. 컨텍스트 스위치란? - 하나의 스레드 실행을 멈추고, 다른 스레드로 전환하는 과정

  • 작동 방식
    1. 실행 중인 스레드의 상태(레지스터, 캐시 등)를 저장
    2. 새 스레드의 상태를 복원하고 실행
  • 효율성 문제
    • 컨텍스트 스위치는 자원을 소모하며, 너무 많은 스레드가 실행될 경우 스래싱(Thrasing) 발생
    • 스래싱(Thrasing) : CPU가 작업 대신 스레드 관리(컨텍스트 스위치)에 시간을 더 소비하게 되는 현상
  • 스레드 간 차이
    • 같은 프로세스 내 스레드 간 컨텍스트 스위치는 상대적으로 빠름
    • 서로 다른 프로세스 간 스위치는 더 많은 리소스 소모

 

2. 스레드 스케줄링 방법 - 운영체제는 스레드의 실행 순서와 시간을 결정하기 위해 다양한 스케줄링 알고리즘 사용

  • 운영체제의 동적 우선순위 스케줄링
    • 작업에 따라 우선순위를 설정하고 필요 시 변경, 정적 우선순위 + 동적 보너스를 통해 결정
      • 정적 우선순위 : 개발자가 미리 설정
      • 동적 보너스 : 에포크(Epoch)마다 운영체제가 조정
    • 즉각적인 반응이 필요한 작업(UI, 실시간 작업)과 지연된 작업(기아 현상 발지) 간 균형 유지
  • 선착순 스케줄링(FIFO)
    • 먼저 도착한 작업부터 실행
    • 긴 작업이 먼저 오면 짧은 작업이 지연되어 기아 현상 발생
  • 짧은 작업 우선 스케줄링(SJF)
    • 짧은 작업부터 실행
    • 긴 작업이 계속 대기하여 실행되지 않는 상황 발생

 

3. 멀리스레드 vs 멀티프로세스 (선택기준)

  • 멀티스레드
    • 많은 데이터를 공유하며, 작업 간 상호작용이 필요한 경우 적합
    • 생성 및 전환 속도가 빠르고, 자원 소모 적음
    • 스레드 하나가 문제가 생기면 전체 프로세스가 중단될 위험 있음
  • 멀티프로세스
    • 독립적인 작업이나 보안/안정성이 중요한 경우 적합
    • 각 프로세스는 서로 완전히 독립적이며, 한 프로세스의 오류가 다른 프로세스에 영향을 주지 않음
    • 리소스 소모가 크고, 전환 속도 느림

 

4. 핵심 정리

컨텍스트 스위치는 자원을 소모하며, 스레드 수가 많아지면 효율성이 저하

운영체제는 동적 우선순위를 통해 스레드 스케줄링을 조정

멀티스레드와 멀티프로세스는 작업 특성과 목적에 따라 적합한 방식을 선택