# Context switching in processes

1. **현재 상태 저장**: 현재 실행 중인 프로세스 또는 스레드의 상태(컨텍스트)를 프로세스 제어 블록(PCB)에 저장합니다. PCB는 프로세스의 상태, CPU 레지스터의 값, 프로그램 카운터, 우선순위, 메모리 정보 등 프로세스와 관련된 모든 정보를 포함하는 구조체입니다.
2. **프로세스 큐 변경**: 현재 실행 중인 프로세스의 PCB를 대기 큐로 옮기고, 다음에 실행될 프로세스의 PCB를 준비 큐 또는 실행 큐에서 선택합니다.
3. **새로운 상태 불러오기**: 선택된 다음 프로세스의 PCB에 저장된 컨텍스트 정보를 메모리와 CPU의 레지스터에 복원합니다.
4. **프로그램 카운터 업데이트**: 프로그램 카운터를 해당 프로세스의 PCB에 저장된 지점으로 설정하여, 프로세스가 이전에 중단된 지점부터 계속 실행될 수 있도록 합니다.
5. **문맥 관련 시스템 자원 업데이트**: 예를 들면, 메모리 관리 단위(MMU)가 사용하는 페이지 테이블 주소 등을 해당 프로세스의 PCB에서 가져와 업데이트 할 수 있습니다.
6. **새로운 프로세스 실행**: 새롭게 선택된 프로세스의 실행을 시작합니다.
