📚프로세스 스케줄링

프로세스 스케줄링이란 여러 개의 프로세스를 어떤 순서대로 처리할지 운영체제가 결정하는 것을 말한다. 만약 프로세스가 하나라면 운영체제는 스케줄링을 할 필요없이 프로세스에 CPU를 할당하여 처리하면 된다. 하지만 두 개 이상의 프로세스가 있고 하나의 CPU가 있다면 운영체제는 어떤 프로세스를 먼저 처리해야할지 결정해야 한다.



📚스케줄링 단계

📄상위단계 스케줄링

장기 스케줄링이라고도 한다. 시스템에 들어와 작업 큐에 있는 작업을 선택하여 프로세스를 생성하고 프로세스 준비 큐에 전달하는 역할을 한다. 작업을 선택하는 기준은 시스템 자원을 효율적으로 이용할 수 있도록 하는 것이다.



📄중간단계 스케줄링

중기 스케줄링이라고도 한다. 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 중지된 프로세스에 다시 메모리를 할당하고 활성화시켜 시스템에 대한 단기적인 부하를 조절하는 역할을 한다.



📄하위단계 스케줄링

단기 스케줄링이라고도 한다. 준비 큐에 있는 프로세스를 선택하여 사용 가능한 CPU를 할당하는 역할을 한다. 수행 주체는 디스패처이다.




📚스케줄링 목표

프로세스 스케줄링의 기본적인 목표는 공정성과 균형성이다. 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 하고, 시스템의 자원들이 충분히 활용될 수 있게 하는 것이 목표이다.

운영체제의 유형에 따라 스케줄링 목표가 다를 수 있다. 일괄처리 운영체제는 처리량의 극대화, 반환시간 최소화, CPU 활용 극대화가 목표이고, 시분할 운영체제는 빠른 응답시간과 과도한 대기 시간 방지가 목표가 된다.

  • 처리량: 주어진 시간에 처리한 프로세스 수
  • 반환시간: 프로세스 생성 시점부터 종료 시점까지의 시간
  • 응답시간: 요청한 시점부터 반응이 시작되는 시점까지의 시간
  • 대기시간: 프로세스가 종료될 때까지 준비 큐에서 기다린 시간의 합



📚스케줄링 정책

📄선점 스케줄링 정책

선점 스케줄링 정책은 운영체제가 필요하다고 판단하면 실행 중인 프로세스를 중단시키고 다른 프로세스에 CPU를 할당할 수 있는 스케줄링 방식이다. 선점 스케줄링 정책은 높은 우선순위의 프로세스를 먼저 처리해야 하는 경우에 사용한다.

하지만 선점 스케줄링 정책은 문맥 교환 같은 오버헤드가 발생한다는 단점이 있다. 오버헤드란 어떤 처리를 하기 위해 들어간 간접적인 처리시간 및 메모리 등을 말한다. 즉, 오버헤드가 클수록 컴퓨터 성능에 안 좋은 영향을 미친다.

선점 스케줄링 정책에 따라 프로세스가 실행되고 있는 상태에서 CPU가 다른 프로세스에 할당되려면 문맥 교환이 필요하다. 문맥 교환이란 CPU가 현재 실행하고 있는 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 복원하는 작업을 의미한다. 프로세스의 상태(문맥)는 그 프로세스의 프로세스 제어 블록(PCB)에 저장한다.

선점 스케줄링 정책은 하나의 프로세스가 작업이 끝나지 않더라도 시간 할당량이 지나면 CPU를 더이상 사용할 수 없기 때문에 대화형 시스템이나 시분할 시스템에 적합하다.


📄비선점 스케줄링 정책

비선점 스케줄링 정책은 실행 중인 프로세스를 바로 준비상태로 전이시킬 수 없는 스케줄링 방식이다. 이미 실행되고 프로세스가 대기상태나 종료상태로 전이될 때까지 계속 실행상태에 있게 된다는 의미이다.

비선점 스케줄링 정책은 문맥 교환이 없어 오버헤드가 없지만 실행시간이 긴 프로세스가 실행 중이라면 실행시간이 짧은 프로세스가 오래 기다리게 되는 문제가 생길 수 있다.


📄스케줄링 평가 기준

스케줄링 알고리즘의 성능을 평가하는데 평균대기시간과 평균반환시간을 이용한다.

평균대기시간은 각 프로세스가 모든 작업이 완료될 때까지 준비 큐에서 기다리는 시간의 합의 평균값이다.

평균반환시간은 각 프로세스가 생성된 시점 부터 작업이 완료된 시점까지의 소요시간의 평균값이다.



Leave a comment