운영체제의 핵심: 프로세스 상태 전이와 문맥 교환(Context Switching) 정리
소프트웨어 개발 개념

프로세스의 정의
- 실행 중인 프로그램
- 프로세서가 할당된 개체(entity)
- 디스패치(dispatch) 가 가능한 단위
- 프로세서가 활동 중인 것
- 프로세서 제어 블록(PCB)가 존재하는것
- 비동기적 행위
프로세스의 상태 전이

생성 → 준비
새로운 프로세스가 만들어져서 생성 상태로 들어가면 시스템이 가질 수 있는 제한된 준비 프로세스의 수를 고려하여 준비 상태로 이동되며, 작업 스케줄러가 담당한다
준비 → 실행 (Dispatch)
준비 상에 있는 프로세스 중 어떠한 프로세스를 선택하여 CPU를 사용할 수 있도록 하는 것이며 프로세스 스케줄러가 담당한다
실행 → 준비 (Timeout)
프로세스가 할당된 제한시간을 초과한 경우 다른 프로세스에게 CPU를 넘겨주는 작업이며, 제한시간을 초과한 프로세스는 준비 단계로 넘어간다
실행 → 대기 (Sleep , Block)
실행 중인 프로세스가 할당된 제한시간을 초과하기 전 입출력 요구나 다른 자원의 요구 , I/O 작업의 요구 등 CPU자원이 아닌 다른 작업을 요구하게 되면 대기 상태로 진입한다
대기 → 준비 (WakeUp)
대기 상태의 프로세스는 대기의 원인이 되었던 해당 사건이 완료되었다는 신호를 받을 때 준비 상태로 들어간다 EX ) I/O 작업의 완료로 인해서 다음 작업을 진행할 수 있을때
실행 → 완료 (Exit)
실행 중인 프로세스가 정상 종료되거나 비정상 종료가 결정됬을때 종료 상태로 전이된다
프로세스의 상태 및 특성

문맥 교환 (Context Switching)
Context
프로세스와 관련된 정보들의 집합
- PCB (Process Control Block, 프로세스의 상태를 저장함) , 프로세스 Code & Data 등이 있다
Context Saving
현 프로세스의 레지스터 컨텍스트를 포함한 상태를 PCB에 저장하는 작업
Context Restoring
PCB를 바탕으로 프로세스 상태를 복구하는 작업
Context Switching
실행 중인 프로세스의 Context를 저장, 앞으로 실행할 프로세스의 Context를 불러오는것
Context Switching OverHead
당연하게도 Context Switching에 소모되는 비용이 있다.
(PCB를 읽고 쓰는 작업이 필요하기 때문)
이에 따라 불필요한 Context Switching을 줄이는것이 중요하다