상태
지금까지 살펴본 시스템과 스케쥴링 기법을 보면 어떤 프로세스를 실행하고 어떤 프로세스를 대기시켜야 하는지 구분할 필요가 있었다. 이 말은 프로세스의 상태가 바뀐다는 뜻이며, 스케쥴링 기법에서 대표적인 5가지 상태를 알아보려 한다.
- 프로세스 생성(new): 생성 중이어서 실행 가능 상태에 들어가지 못하는 상태
- 실행 가능(ready): CPU가 실행할 수 있는 상태지만 대기중인 상태
- 실행 중(running): 현재 CPU에서 실행 중인 상태
- 대기(blocked): 실행 중 중단되어 다른 상태로 전환되기를 기다리는 상태
- 종료(exit): 시스템에 할당된 리소스를 제거하는 등 종료 전 수행할 작업을 실행하기 위한 상태
![](https://velog.velcdn.com/images%2Ftohero%2Fpost%2F8e7bd905-98a2-4511-a942-31bece94a39c%2Fimage.png)
상태 간 관계
프로세스 상태는 스케쥴러가 관리한다. 스케쥴링 알고리즘은 다양하며, 기본적으로 스케쥴리 알고리즘을 5가지의 상태에 따라 구현할 수 있다.
선점 / 비선점
선점형 스케쥴러(Preemptive)
스케쥴러가 특정 프로세스를 선점한다. 이 때 CPU를 점유하고 있는 기존 프로세스를 중단하고 다른 프로세스로 대체할 수 있다.
Running으로 상태를 변경할 수 있는 시점
- 현재 running 상태의 프로세스가 completed되어 exit 상태로 스스로 전환하는 경우
- 현재 running 상태의 프로세스가 스스로 blocked 상태로 전환하는 경우
비선점형 스케쥴러(Non Preemptive)
하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음
Running으로 상태를 변경할 수 있는 시점
- 비선점 프로세스가 변경할 수 있는 시점 모두 포함
- 스케쥴러가 프로세스를 중단하고 싶은 경우
스케쥴러 처리 비교
![선점/비선점 처리 비교](https://velog.velcdn.com/cloudflare/tohero/e5619bf6-9c09-4b9e-9ac6-f364ecbd9d12/image.png)
상황: 비선점 / 선점에 따른 시분할(2cycle에 한 번) 적용 여부
- 비선점형의 경우 스케쥴러가 시분할 방식을 적용할 수 없다.
- 단점:
- 한 프로세스가 CPU를 점유하는 시간이 늘어난다.
- 대기중인 프로세스의 경우 응답시간이 지연된다.
- 장점:
- 선점형의 경우 스케쥴러가 시분할 방식을 적용할 수 있다.
- 장점:
- 스케쥴러가 필요에 따라 프로세스를 중단할 수 있기 때문에. 한 프로세스가 CPU를 점유하는 시간이 줄어든다.
- 대기중이 프로세스의 경우 응답시간이 축소된다.
- 단점: