CPUScheduling

CPU 스케줄링이란 무엇인가요?

  • CPU 스케줄링이란 작업을 처리하기 위해서 프로세스들에게 CPU를 할당하기 위한 정책을 계획하는 것이다.

  • CPU 스케줄링 대상 프로세스는 Ready Queue에 있는 프로세드들로, 스케줄링 정책에 따라 Queue에 정렬한 후 앞에 있는 프로세스부터 CPU를 주게 된다.

  • 스케줄링이 필요한 이유

    • CPU를 효율적으로 사용하기 위해서는 프로세스들을 잘 배정해야 한다.

    • 이를 위해서 Ready Queue에 있는 프로세스를 대상으로 CPU를 할당받는 순서와 방식을 결정하는 것이다.

CPU 스케줄링 방법에는 어떤 것들이 있나요?

  1. 비선점

    • 프로세스 종료 또는 입출력 등의 이벤트가 있을 때까지 실행을 보장한다.

    • 장점

      • 모든 프로세스들에게 공정하다.

      • 응답 시간을 예측할 수 있다.

    • 단점

      • 짧은 작업을 수행하는 프로세스라도 긴 작업이 종료될 때까지 기다려야 한다.

  2. 선점

    • OS가 CPU의 사용권을 선점할 수 있는 경우에 강제로 회수한다.

    • 장점

      • 높은 우선 순위를 가진 프로세스를 빠르게 처리하려는 시스템에 유용하다.

      • 빠른 응답 시간을 요구하는 시분할 시스템에 유용하다.

    • 단점

      • 높은 우선 순위를 가진 프로세스들만 들어오는 경우 오버헤드가 발생한다.

  3. FCFS(First Come First Served)

    • 큐에 도착한 순서대로 CPU를 할당한다.

  4. SJF(Shortest Job First)

    • FCFS 알고리즘을 보완하기 위해서 만들어졌다.

    • 수행 시간이 가장 짧다고 판단되는 작업을 우선 수행한다.

    • 평균 대기 시간이 짧으므로 짧은 작업에 유리하지만, 사용 시간이 긴 프로세스는 영원히 CPU를 할당 받지 못할 수 있다.(기아 현상 : Starvation)

  5. HRN(Highest Response-ratio Next)

    • 점유 불평등 현상이 발생하는 SJF 알고리즘을 보완하기 위해 만들어졌다.

    • 우선순위를 계산하여 동작한다.

    • 우선순위 : (대기 시간 + 실행 시간) / 실행 시간

  6. SRTF(Shortest Remaining Time First)

    • 현재 수행 중인 프로세스의 남은 burst time보다 더 짧은 CPU burst time을 가진 새로운 프로세스가 도착할 경우 CPU를 강제로 회수한다.

    • 새로운 프로세스가 도달할 때마다 스케줄링을 다시 하기 때문에 CPU 사용 시간을 측정할 수 없고, Starvation 현상이 발생할 수 있다.

  7. Round Robin

    • FCFS에 의해 프로세스를 받아 각 프로세스에 동일한 시간의 Time Quantum 만큼 CPU를 할당한다.

      • Time Quantum(Time Slice) : 실행의 최소 시간 단위

    • 현대적인 CPU 스케줄링 방식이며, 할당 시간이 끝나면 프로세스는 Ready Queue의 제일 뒤에 삽입된다.

    • CPU 사용 시간이 랜덤한 프로세스들이 섞여 있을 경우에 효율적이고, 프로세스의 Context를 저장할 수 있다.

Last updated