컨텍스트
프로세스/스레드가 실행되던 시점의 상태 정보 전체입니다.
쉬운 비유
책을 읽다가 덮을 때 책갈피를 꽂는 것
책갈피 = 컨텍스트
→ "몇 페이지까지 읽었는지"
→ "어떤 내용이었는지"
→ 다시 펼쳤을 때 이어서 읽을 수 있음
컨텍스트에 포함된 정보
├── PC (Program Counter)
│ → 다음에 실행할 명령어 주소
│ → "코드 어디까지 실행했는지"
│
├── 레지스터 값
│ → CPU 연산 중간 값
│ → "계산하다 멈춘 값들"
│
├── 스택 포인터
│ → 현재 함수 호출 위치
│ → "어떤 함수 실행 중이었는지"
│
└── 메모리 정보
→ 사용 중인 메모리 주소
→ "어떤 데이터 사용 중이었는지"
왜 필요한가?
컨텍스트 없이 전환 시
프로세스A 실행 중 → 전환 → 프로세스A 복귀
→ 어디서부터 다시 시작해야 할지 모름 X
컨텍스트 저장 후 전환
프로세스A 실행 중 → 컨텍스트 저장 → 전환 → 컨텍스트 복원
→ 정확히 이어서 실행 가능 O
컨텍스트는 "CPU가 나중에 이 작업을 이어서 할 수 있도록 저장해두는 실행 상태 스냅샷" 입니다.