[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/운영체제

[운영체제] 스케줄링

inu 2020. 4. 11. 15:16
반응형

스케줄러의 종류

  • 사실 스케줄링 작업을 수행하는 스케줄러는 다양하다.
  • 장기 스케줄러(작업 스케줄러) : 오프라인과 연계되는 일괄처리 큐를 별도로 유지하는 경우에 사용한다. 어떤 작업이 시스템에 먼저 들어와 먼저 처리 될 것인지를 결정한다. 또는 어떤 프로그램을 하드디스크로부터 메모리로 적재할 것인가를 결정한다.
  • 단기 스케줄러(CPU 스케줄러) : 메모리 내의 준비 상태에 있는 프로세스 중에서 어떤 프로세스를 먼저 실행시킬지 결정해서 CPU를 할당하는 스케줄러이다.
  • 중기 스케줄러 : 가상 메모리 체제에서 너무 많은 프로세스가 적재되면 하드디스크 입출력이 과대해져 시스템이 거의 멈추는 쓰레싱(Thrasing) 현상이 발생할 수 있다. 이 때 스와핑이라는 기술이 사용된다. 일부 프로세스 메모리를 디스크로 내보내고(swap-out), 시간이 흘러 여유가 생기면 다시 적재(swap-in)한다. 이 때 활용되는 것이 중기 스케줄러이다.
  • 일반적으로 스케줄러라 하면 단기 스케줄러를 의미한다. 앞으로 '스케줄러'라고 하면 이 단기 스케줄러를 의미한다고 하자.

스케줄링이 일어나는 경우

  • 스케줄링은 현재 실행상태에 있던 프로세스가 다른 상태로 천이하면 그 다음으로 실행시킬 프로세스를 선정하기 위해 일어난다.
  • 스케줄링 대상은 준비리스트에 들어있는 프로세스에 한정된다.
  • 할당시간이 경과한 경우 / 인터럽트가 발생한 경우 / 입출력이 요청된 경우 / 시그널을 대기하게 된 경우에 준비 리스트로 들어가 스케줄링의 대상이 된다.
  • 스케줄링은 시분할 시스템에 의해 타임슬라이스가 발생하면 일어나지만, 실행중이던 프로세스의 상태가 변경된 경우에도 일어난다고 했다. 즉, 할당시간이 경과한 경우 / 인터럽트가 발생한 경우 / 입출력이 요청된 경우 / 시그널을 대기하게 된 경우가 그 예이다(실행상태 -> 준비상태 or 대기상태). 물론 특정 프로세스가 실행하다 종료된 경우도 포함된다(실행상태 -> 종료상태).

성능 평가 기준

  • 스케줄링 알고리즘은 종류가 다양하다. 따라서 어떤 알고리즘을 활용해 스케줄링을 만들면 좋을지 판단하는 기준이 필요하다. 아래가 그러한 기준의 예이다.
  • CPU 사용율(CPU utilization) : CPU 활용 정도를 나타내는 비율. CPU가 비어있는 시간없이 많은 작업을 수행할 수 있도록 했는지를 나타낸다.
  • 처리율(throughput) : 단위 시간당 완료되는 프로세스의 수.
  • 반환 시간(turnaround time) : 프로세스가 생성되어 작업을 마치고 종료될 때까지 걸리는 시간.
  • 대기 시간(waiting time) : 프로세스가 생성되어 작업을 마치고 종료될 때까지 큐에서 기다리는 시간.
  • 반응 시간(response time) : 대화형 시스템에서 임의 요구(예:키보드 입력)에 대하여 시스템이 반응을 시작하는 데까지 걸리는 시간.

성능 평가 기준의 활용

  • 효율성을 추구할 경우 : CPU 사용률과 처리율은 최대화하고 반환시간, 대기시간, 반응시간을 최소화하는 스케줄러를 선정
  • 공평성을 추구할 경우 : 각 기준에 있어 최적의 평균값과 이들간의 편차의 최소화(공평성)을 함께 고려하여 스케줄러를 선정
  • 대화형 시스템의 경우 반응시간 편차가 적은 스케줄러를 선정한다.
  • 시스템 용도에 따라 선정 기준은 달라질 수 있다.

CPU Burst Time

  • CPU Burst Time : CPU가 할당된 후 실행상태에 있다가 입출력 요구까지 걸리는 시간 (CPU를 사용하는 시간)
  • 일반적으로 프로세스들은 CPU Burst와 I/O Burst를 번갈아가면서 수행한다.
  • 이러한 CPU Burst Time을 히스토그램으로 나타내면 주로 hyperexponential 분포를 보인다. 이 히스토그램이 왼쪽으로 치우치면 입출력을 주로 수행하는 I/O-bound 프로세스이고 오른쪽으로 치우치거나 평균적인 Burst time이 크다면 계산을 주로 수행하는 CPU-bound 프로세스이다. 이처럼 CPU Burst Time의 hyperexponential 분포는 프로세스의 성격을 파악할 수 있도록 하여 스케줄링에 도움을 준다(프로세스의 특징을 파악하여 어떤 프로세스를 선정할지 고르는 데에 도움을 준다).
반응형