Notice
Recent Posts
Recent Comments
Link
변수의 기록
[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭) 본문
CS지식/운영체제 (Operating System)
[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭)
불광동 물주먹 2025. 4. 5. 21:29🔁 컨텍스트 스위칭의 개념과 구조
📌 컨텍스트 스위칭이란?
컨텍스트 스위칭(Context Switching)은 CPU가 현재 실행 중인 작업(프로세스 또는 스레드)을 중단하고, 다른 작업으로 전환하는 과정이다. 이 과정에서 현재 작업의 상태(레지스터 값, 프로그램 카운터, 스택 포인터 등)를 저장하고, 다음 작업의 상태를 복원한다.
컨텍스트 스위칭은 크게 두 종류로 나뉜다:
- 프로세스 컨텍스트 스위칭
- 스레드 컨텍스트 스위칭
🧠 프로세스 컨텍스트 스위칭
개념
- 서로 다른 프로세스 간 전환
- 주소 공간, 페이지 테이블, TLB, PCB 등이 모두 변경
- 메모리 보호를 위해 각 프로세스는 독립된 가상 주소 공간을 가지므로 MMU와 협업이 필요
동작 과정
- 현재 프로세스의 PCB(Process Control Block) 저장
- 다음 프로세스의 PCB 로딩
- 페이지 테이블 교체 → CR3 레지스터 변경
- TLB flush 발생 (주소 공간 전환)
- 새 프로세스의 명령어 실행 재개
특징
- 무겁고 오버헤드가 큼
- MMU가 주소 변환 정보(TLB)와 페이지 테이블까지 다시 설정
🧵 스레드 컨텍스트 스위칭
개념
- 같은 프로세스 내의 스레드 간 전환
- 주소 공간, 페이지 테이블은 공유
- 스택, 레지스터, TCB(Thread Control Block) 만 전환
동작 과정
- 현재 실행 중인 스레드의 레지스터, 스택 포인터 등을 저장 (TCB)
- 다음 스레드의 TCB 로딩 → 레지스터 복원
- 프로그램 카운터 업데이트 후 실행 재개
특징
- 가벼움 (Lightweight Context Switch)
- MMU, 페이지 테이블, TLB는 그대로 유지
- 단순히 실행 흐름만 바꾸는 수준

📊 프로세스 vs 스레드 컨텍스트 스위칭 비교
항목 | 프로세스 컨텍스트 | 스레드 컨텍스트 스위칭 |
주소 공간 | 변경됨 | 공유 |
페이지 테이블 | 교체 필요 | 그대로 유지 |
TLB | flush 발생 | flush 불필요 |
전환 단위 | 프로세스 전체 | 같은 프로세스 내 스레드 |
오버헤드 | 큼 | 적음 |
전환 대상 | PCB | TCB |
캐시 영향 | 클 수 있음 | 거의 없음 |
사용 예 | 사용자 앱 → 커널 프로세스 | 스레드 풀 내 요청 처리 |
✅ 요약정리
구분 | 이유 | 언제 발생 | 바뀌는 것 |
프로세스 컨텍스트 스위칭 | CPU 하나로 여러 프로그램 실행처럼 보이게 | 타임 슬라이스 끝날 때, I/O 대기 등 | 페이지 테이블, 레지스터, 스택, PC 등 전체 |
스레드 컨텍스트 스위칭 | 한 프로그램 내부에서 동시에 작업처럼 보이게 | 동일 | 레지스터, 스택, PC만 (메모리 공유) |
'CS지식 > 운영체제 (Operating System)' 카테고리의 다른 글
(CS 운영체제) 동기화 (기본) (0) | 2025.04.07 |
---|---|
(CS 운영체제) 동시성 - 스핀락(spinlock) 뮤텍스(mutex) 세마포(semaphore) 각각 특징과 차이 설명 java (0) | 2025.04.07 |
(CS 운영체제)CPU-bound vs IO-bound :시스템 최적화를 위한 성능 특성 및 쓰레드 전략 정리 (0) | 2025.04.06 |
가상 메모리(Virtual Memory)에 대한 개념 (TLB , 페이징 테이블 포함) (0) | 2025.04.04 |
운영체제와 프로그램 실행 원리 정리 (0) | 2025.04.02 |