공부

프로세스 상태변화

글로벌디노 2020. 8. 4. 21:18

cpu는 하나인데 어떻게 여러 개의 프로그램이 동시에 실행 가능한 것인가?

cpu가 여러 개의 프로세스를 번갈아 가면서 실행하면 된다

 

프로세스의 cpu 할당 순서 및 방법을 결정짓는 일을 스케줄링 이라고 하고, 이때 사용되는 알고리즘을 스케줄링 알고리즘 이라 한다. 실제로 프로세스를 관리하는 운영체제 요소(모듈)를 스케줄러 라고 한다

 

 

Start -> Ready

프로세스 생성과 동시에 Ready 상태로 들어간다. 스케줄러에 의해서 선택되기를 기다린다

 

Ready -> Running

스케줄러 알고리즘에 의해 선택된 프로세스는 Running 상태가 되어 실행된다

 

Running -> Ready

프로세스A가 실행중에 운선순위가 더 높은 프로세스B가 실행되면 프로세스A는 Ready 상태로 진입하고 프로세스B는 Running 상태가 된다 (물론 Ready를 거쳐서 스케줄러에 의해 선택이 된 것)

프로세스A는 프로세스B가 종료되기를(양보해 주기를) 기다린다

 

Running -> Blocked

프로세스가 멈추는 상태로 진입한다

일반적으로 데이터 입출력에 관련된 일을 하는 경우 진행중인 프로세스는 잠시 내려오게 하고(Blocked 상태가 되게 하고), Ready 상태에 있는 프로세스 중 하나를 실행시킨다

 

Blocked -> Ready

Ready 상태 - 스케줄러에 의해 당장이라도 선택될 수 있는 상태

Blocked 상태 - 스케줄러에 의해서 선택될 수 없는 상태

입출력이 완료된 프로세스는 Ready 상태가 되고 실행되길 기다린다

반응형