2레벨 스케줄링

Two-level scheduling

2단계 스케줄링은 교환된 프로세스를 포함하는 프로세스 스케줄링을 보다 효율적으로 수행하는 방법을 기술하는 컴퓨터 과학 용어다.

이 문제를 고려하십시오.시스템은 모두 동일한 우선 순위를 가진 50개의 실행 프로세스를 포함한다.그러나 시스템의 메모리는 동시에 10개의 프로세스만 메모리에 담을 수 있다.따라서 하드 디스크의 가상 메모리에 40개의 프로세스가 항상 교환될 것이다.프로세스에서 스왑 아웃과 스왑에 걸리는 시간은 각각 50ms이다.

간단한 라운드 로빈 스케줄링경우 컨텍스트 스위치가 발생할 때마다 프로세스를 교환해야 한다(가장 최근에 사용되지 않은 10개의 프로세스만 교환되기 때문이다).공정 중에서 무작위로 선택하면 확률이 80%(40/50)로 감소한다.만약 그런 일이 일어난다면, 분명히 과정 또한 교환될 필요가 있다.교환은 비용이 많이 들고, 스케줄러는 불필요한 교환을 하는 데 많은 시간을 낭비할 것이다.

그곳이 2단계 스케줄링이 사진에 들어가는 곳이다.그것은 두 개의 다른 스케줄러를 사용하며, 하나는 메모리에 있는 프로세스 중에서만 실행할 수 있는 하위 레벨 스케줄러를 사용한다.그 스케줄러는 라운드 로빈 스케줄러일 수도 있어다른 스케줄러는 메모리로부터 프로세스를 스왑 인하고 스왑 아웃하는 것만이 유일한 관심사인 상위 레벨 스케줄러다.스와핑은 시간이 너무 오래 걸리기 때문에 하위 스케줄러보다 스케줄링을 훨씬 덜 한다.

따라서, 상위 레벨 스케줄러는 메모리에서 오랫동안 실행된 프로세스 중 하나를 선택하여 스왑 아웃한다.이들은 오랫동안 실행되지 않은 디스크의 프로세스로 대체된다.정확히 어떻게 프로세스를 선택하느냐는 상위 레벨 스케줄러의 구현에 달려 있다.다음과 같은 변수를 포함하는 절충이 이루어져야 한다.

  • 응답 시간:공정은 너무 오랫동안 교체되어서는 안 된다.그러면 일부 다른 프로세스(또는 사용자)는 불필요하게 오래 기다려야 할 것이다.만약 이 변수가 자원이 부족하다고 여겨지지 않는다면, 자원이 부족하게 되고 프로세스가 전혀 완료되지 않을 수도 있다.
  • 프로세스의 크기: 큰 프로세스는 교환하는 데 시간이 오래 걸리기 때문에 작은 프로세스보다 적은 수의 스왑이 적용되어야 한다.크기가 크기 때문에 프로세스와 메모리를 공유할 수 있는 프로세스가 적다.
  • 우선 순위:프로세스의 우선순위가 높을수록 더 빨리 완료될 수 있도록 메모리에 오래 남아 있어야 한다.

참조