
CPU의 수행 상태를 나타내는 하드웨어의 문맥(context)
프로세스의 주소 공간 code, data, stack에 무엇을 쌓아두고 있는가?
프로세스 관련 커널 구조

컴퓨터 안의 CPU는 하나 뿐(이라고 가정)
Running
: CPU를 잡고 instruction을 수행중인 상태
Ready
: CPU를 기다리는 상태(메모리는 할당된 상태)
Blocked(wait, sleep) → 돌아갈 수 있음(activity)
: CPU를 얻어도 당장 instruction을 수행할 수 없는 상태
: 오래 걸리는 작업을 진행할 때(I/O 작업을 많이 하는)
Suspended(stopped) → 저절로 돌아갈 수 없음(nonactivity), 사람이 돌려야!
: 외부적인 이유로 프로세스의 수행이 정지된 상태(ctrl+z = break)
: 프로세스는 통째로 디스크에 swap out 된다.

CPU 안에는 Running 상태에 있는 process가 하나 존재한다.
Disk나 keyboard의 I/O queue에 process가 줄을 서면,



CPU가 한 프로세스에서 다른 프로세스로 넘겨주는 과정이다.
System call이나 Interrupt 발생시 반드시 context switch가 일어나는 것은 아니다.


Short-term scheduler(단기 스케줄러 or CPU scheduler)
Long-term scheduler(장기 스케줄러 or Job scheduler)
Medium-term scheduler(중기 스케줄러 or Swapper)

User mode에서 Running 되고 있다가 System call이나 interrupt가 들어 오면,
Blocked 상태에서 Suspended / Ready 상태에서 Suspended 되었을 때가 다르다.