변수의 기록

[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭) 본문

CS지식/운영체제 (Operating System)

[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭)

불광동 물주먹 2025. 4. 5. 21:29

🔁 컨텍스트 스위칭의 개념과 구조

📌 컨텍스트 스위칭이란?

컨텍스트 스위칭(Context Switching)은 CPU가 현재 실행 중인 작업(프로세스 또는 스레드)을 중단하고, 다른 작업으로 전환하는 과정이다. 이 과정에서 현재 작업의 상태(레지스터 값, 프로그램 카운터, 스택 포인터 등)를 저장하고, 다음 작업의 상태를 복원한다.

컨텍스트 스위칭은 크게 두 종류로 나뉜다:

  • 프로세스 컨텍스트 스위칭
  • 스레드 컨텍스트 스위칭

🧠 프로세스 컨텍스트 스위칭

개념

  • 서로 다른 프로세스 간 전환
  • 주소 공간, 페이지 테이블, TLB, PCB 등이 모두 변경
  • 메모리 보호를 위해 각 프로세스는 독립된 가상 주소 공간을 가지므로 MMU와 협업이 필요

동작 과정

  1. 현재 프로세스의 PCB(Process Control Block) 저장
  2. 다음 프로세스의 PCB 로딩
  3. 페이지 테이블 교체 → CR3 레지스터 변경
  4. TLB flush 발생 (주소 공간 전환)
  5. 새 프로세스의 명령어 실행 재개

특징

  • 무겁고 오버헤드가 큼
  • MMU가 주소 변환 정보(TLB)와 페이지 테이블까지 다시 설정

🧵 스레드 컨텍스트 스위칭

개념

  • 같은 프로세스 내의 스레드 간 전환
  • 주소 공간, 페이지 테이블은 공유
  • 스택, 레지스터, TCB(Thread Control Block) 만 전환

동작 과정

  1. 현재 실행 중인 스레드의 레지스터, 스택 포인터 등을 저장 (TCB)
  2. 다음 스레드의 TCB 로딩 → 레지스터 복원
  3. 프로그램 카운터 업데이트 후 실행 재개

특징

  • 가벼움 (Lightweight Context Switch)
  • MMU, 페이지 테이블, TLB는 그대로 유지
  • 단순히 실행 흐름만 바꾸는 수준

📊 프로세스 vs 스레드 컨텍스트 스위칭 비교

 

항목 프로세스 컨텍스트 스레드 컨텍스트 스위칭
주소 공간 변경됨 공유
페이지 테이블 교체 필요 그대로 유지
TLB flush 발생 flush 불필요
전환 단위 프로세스 전체 같은 프로세스 내 스레드
오버헤드 적음
전환 대상 PCB TCB
캐시 영향 클 수 있음 거의 없음
사용 예 사용자 앱 → 커널 프로세스 스레드 풀 내 요청 처리

 

✅ 요약정리

 

구분 이유 언제 발생 바뀌는 것
프로세스 컨텍스트 스위칭 CPU 하나로 여러 프로그램 실행처럼 보이게 타임 슬라이스 끝날 때, I/O 대기 등 페이지 테이블, 레지스터, 스택, PC 등 전체
스레드 컨텍스트 스위칭 한 프로그램 내부에서 동시에 작업처럼 보이게 동일 레지스터, 스택, PC만 (메모리 공유)