Process model - 프로세스 전환(process switch)
Process Model
Two state model

시분할 시스템에서, 프로세스는 주어진 time slice 동안 processor를 점유하여 running 상태로 변하고
할당이 끝나면 다시 not running 상태로 바뀝니다.
이렇게 프로세스의 상태를 두가지로 나누어 설명하는 것을 Two-State Process Model 이라고 부릅니다.

dispacher는 scheduler 역할로 각 프로세스의 time slice에 맞게 프로세스 스위치를 해줍니다.
위 그림을 보면, ready queue에서 우선순위가 높은 프로세스를 dispatcher가 프로세서에 넘기는 것을 볼 수 있습니다.
하지만 two state process model은 A라는 프로세스가 실행 도중에 I/O request가 발생해서 not running 상태로 대기하고 B라는 프로세스를 실행했을 때 해당 B 프로세스가 끝나면 I/O 처리를 대기중인 A 프로세스를 다시 running으로 바꿀 수 있다는 위험성이 있습니다.
이를 해결하기 위해 Block이라는 상태를 추가하여 I/O requset를 처리중인 프로세스는 dispatching 되지 않도록 하였습니다.
Five State Model

block 상태에 있는 process는 dispatcher가 CPU 자원을 할당하지 않아 실행되지 않는 것을 볼 수 있습니다.

정상적으로 time out(time slice 소진)된 프로세스들은 Ready queue로 들어가 다시 running으로 전환될 수 있고,
I/O request같은 Event wait이 발생했을 때는 block 상태로 바뀌어 event가 처리 될 때까지 running 상태로 전환될 수 없습니다.
위 모델을 five state model이라고 합니다.
Seven State Model
위와 같은 model은 suspend 상태를 고려하지 않은 모델들인데 suspend 상태란,
컴퓨터는 어떤 프로그램을 실행시켰을 때 main memory에 공간이 부족하면 우선순위가 상대적으로 낮은 process를 잠시 disk로 옮겨 놓는데, disk로 옮겨진 프로세스의 상태를 suspend라고 합니다.
그리고 위의 Five state model에 suspend 상태를 고려하여 추가한 것이 Seven state model 입니다

원래 ready queue에 존재했거나, block 상태지만 이벤트 처리가 끝난 suspend 프로세스들은 다시 메모리에 올라갈 때 ready queue에 저장되고, block 상태였던 suspend 프로세스들은 다시 block 상태로 메모리에 올라가게 됩니다.
running 되고 있던 프로세스도 not running 상태로 전환될 때 ready queue에서 우선순위가 낮다면 바로 suspend 상태로 전환될 수 있습니다.