본문 바로가기

CS/운영체제(OS)

OS - CPU 스케줄링(2)

728x90

CPU 스케줄링은 Ready Queue의 프로세스들 중 무엇을 우선으로 cpu에 할당할지 정하는 스케줄링 기법이다.

Shortest-Job-First

  • First Come First Service (FCFS)는 들어온 순서부터 서비스하는 기법이었다.
  • SJF는 가장 작업시간이 빠른 작업부터 서비스하는 것이다.
  • 선점 vs 비선점
    • SJF는 선점과 비선점 방법 둘 다 구현할 수 있다.
    • 선점: cpu가 일단 작업을 시작하면 프로세스가 종료되기 전 까지는 서비스 하는 프로세스를 변경하지 않는 방법이다.
    • 비선점: cpu가 작업을 하고 있어도 작업을 빨리 끝낼 수 있는 프로세스가 들어온다면 그것 부터 처리한다. 이 방법은 최소 잔여 시간 방법으로도 불린다.
  • 단, 이 방법은 우리의 컴퓨터에 실제로 적용하기는 힘들다.

Priority

  • 우선순위에 따라 작업을 할당하는 방식이다.
  • 우선순위는 I/O , cpu, 자원 등의 내부적 기준에 의해 정해질 수도 있고 낸 비용, 정치적 이유 등 외부적인 이유로도 정해질 수 있다.
  • 우선순위 방식 또한 선점과 비선점으로 만들 수 있다.
    • 선점: 아무리 우선순위가 높은 프로세스가 들어와도 진행되고 있는 프로세스를 먼저 해결한다.
    • 비선점: 우선순위가 높은 프로세스가 들어오면 진행하고 있는 프로세스를 중단하고 인터럽트한다.
  • 문제점
    • 우선순위가 높은 것 부터 처리하는 것은 효율적이고 좋다. 그러나 우선순위가 낮은 프로세스가 들어오면 이 프로세스는 아무리 시간이 지나도 cpu가 할당하지 못할 수도 있다.
    • 이것을 “기아상태(Starvation)” 라고한다.
      • 이를 해결하기 위해 aging이라는 방법을 사용한다. 시간이 지날 수록 우선순위를 증가시켜주는 방법이다.

Round Robin

  • 응답시간 문제 해결을 위해 라운드 로빈 방법은 돌아가며 프로세스를 할당해주는 방식이다.

  • 계속 일정한 시간(Delta) 서비스하고 프로세스를 변경하는 방식이다. 이 시간을 타임 퀀텀이라한다.
  • 라운드 로빈의 AWT, ATT는 타임 퀀텀 시간에 많은 영향을 받게 된다.
    • 만약 타임 퀀텀이 무한대라면 이 방식은 fcfs 방식과 똑같게 된다.
    • 만약 타임 퀀텀이 매우 작다면, 프로세스가 바뀌는 디스패치가 많이 이루어지게 되고, 이는 process switching overhead가 많이 발생하여 성능저하가 일어난다.
    • 즉, time delta를 적당히 조절하는 것이 핵심이다.