컨텍스트

프로세스/스레드가 실행되던 시점의 상태 정보 전체입니다.

쉬운 비유

책을 읽다가 덮을 때 책갈피를 꽂는 것

책갈피 = 컨텍스트
→ "몇 페이지까지 읽었는지"
→ "어떤 내용이었는지"
→ 다시 펼쳤을 때 이어서 읽을 수 있음

컨텍스트에 포함된 정보

├── PC (Program Counter)
│   → 다음에 실행할 명령어 주소
│   → "코드 어디까지 실행했는지"
│
├── 레지스터 값
│   → CPU 연산 중간 값
│   → "계산하다 멈춘 값들"
│
├── 스택 포인터
│   → 현재 함수 호출 위치
│   → "어떤 함수 실행 중이었는지"
│
└── 메모리 정보
    → 사용 중인 메모리 주소
    → "어떤 데이터 사용 중이었는지"

왜 필요한가?

컨텍스트 없이 전환 시
프로세스A 실행 중 → 전환 → 프로세스A 복귀
→ 어디서부터 다시 시작해야 할지 모름 X

컨텍스트 저장 후 전환
프로세스A 실행 중 → 컨텍스트 저장 → 전환 → 컨텍스트 복원
→ 정확히 이어서 실행 가능 O

컨텍스트는 "CPU가 나중에 이 작업을 이어서 할 수 있도록 저장해두는 실행 상태 스냅샷" 입니다.

CSLOG에서 보기