CS/운영체제

운영체제 - 스케줄링

개발 일기92 2024. 6. 12. 12:57

스케줄링의 단계?

  • 장기 스케줄링 : 준비 큐에 어떤 프로세스를 넣을지 결정하여 메모리에 올라가는 프로세스 수를 조절한다. 잡 스케줄링, 승인 스케줄링이라고도 한다. 현대 운영체제에서는 시분할 시스템을 사용하기 때문에 대부분 사용하지 않음.
  • 중기 스케줄링 : 메모리에 로드된 프로세스 수를 동적으로 조절한다. 많이 로드되면 스왑 아웃해서 일부 프로세스를 통째로 저장한다. 아웃된 프로세스는 중단 상태(suspended)가 된다. 준비 상태에서 스왑아웃 - '중단된 준비 상태', 대기 상태에서 스왑 아웃 - '중단된 대기 상태'
  • 단기 스케줄링 : 준비 큐에 있는 대기 상태 프로세스 중 어떤 프로세스를 다음 실행할지 알고리즘으로 결정한다. 즉, 어떤 프로세스를 디스패치할지 결정. CPU 스케줄링이라고도 한다.

시분할 시스템?

시분할 시스템이란 여러명의 프로세스가 사용하는 시스템에서 컴퓨터가 자원을 시간적으로 분할해주어 사용자들의 프로그램을 번갈아가며 처리해줌으로써 각 프로세스에게 독립된 컴퓨터를 사용하는 느낌을 주는 것이다

특징

  • 여러 사용자가 각자의 단말장치를 통하여 동시에 운영체제와 대화하면서 각자의 프로그램을 실행한다
  • 하나의 CPU는 같은 시점에서 여러 개의 작업을 동시에 실행할 수 없기 때문에 CPU의 전체 사용시간을 작은 작업 시간량으로 쪼개어 그 시간량 동안만 번갈아가며 CPU사용이 할당되 각 작업을 처리한다
  • 다중 프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리가 가능하다
  • 시스템의 전체 효율은 좋아지나 개인별 사용자 입장에서는 반응 속도가 느려질 수 있다
  • 각 작업에 대한 응답 시간을 최소한으로 줄이는 것을 목표로 하며, 하드웨어를 보다 능률적으로 사용할 수 있다

시분할 시스템 출처 : https://velog.io/@weweweme/1731-221217

 

스왑 아웃 :  메모리 공간 보다 많은 프로세스가 로드 되었을 때 중기 스케줄러가 이벤트 발생을 기다리고 있는 프로세스를 통째로 다른 저장공간(ex SSD)으로 옮겨 저장 하는 것.

스왑 인 : 스왑 아웃한 프로세스를 다시 메모리에 로드 하는 것.

스와핑 : 스왑 아웃과 스왑 인처럼 프로세스를 통째로 저장공간을 옮기는 것 자체를 스와핑이라고 한다.

 

스케줄링 알고리즘

CPU 스케줄러(단기)가 준비 큐에 있는 프로세스중 어떤 프로세스를 실행시킬지 결정하는 데 사용.

 

비선점형 스케줄링

실행 중인 프로세스가 종료될 때까지 다른 프로세스를 실행할 수 없음을 의미한다.

FCFS, SJF, HRRN 스케줄링이 예로 있다.

 

  • FCFS(First Come First Served) : 준비 큐에 먼저 들어온 프로세스가 우선순위가 높다. 
  • SJF (Shortest Job First) : 실행 시간이 짧은 프로세스가 우선순위를 갖는 알고리즘.(SJN 이라고도 한다.) 평균 대기시간이 가장 짧지만, 긴 실행시간이 필요한 프로세스는 실행 시간으로 인해 우선순위에 밀려 기아 상태가 될 수 있다.
  • HRRN(Highest Response Ratio Next) : 준비 큐에 있는 프로세스들 중에서 응답률(Response Ratio)이 가장 높은 프로세스에게 높은 우선순위를 주며, 비선점식 방식이다. 
    응답률 = (대기시간 + CPU요구량) / CPU요구량 즉, 대기시간이 올라갈 수록 응답률이 높아진다.
    이 기법을 사용하면 프로세스가 기다리는 시간이 길어질수록 우선순위가 높아지므로 수행시간이 긴 프로세스도 머지않아 CPU를 할당받을 수 있게 된다.

 

선점형 스케줄링(preemprive Shcduling)

스케줄러가 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있음.

RR, SRTF, 멀티 레벨 스케줄링이 예로 있다.

 

  • RR(Round Robin) : 프로세스간 우선순위가 없다. 모든 프로세스를 순서대로 일정 시간동안 실행하며, 이정 시간을 초과하면 다른 프로세스를 실행한다. 일반적으로 일정 시간(시간 단위)는 10 ~ 100밀리초다. 콘텍스트 스위칭이 빈번하게 일어나서 오버헤드가 크다는 단점이 있지만 응답 속도가 빠르다는 장점이 있다.
  • SRTF(Shortest Remaining Time First) : 준비 큐에서 대기 시간이 가장 짧게 남은 프로세스를 우선수행하는 알고리즘이다. A프로세스가 실행 줄일때 실행시간이 더 짧은 B가 들어오면 B부터 CPU를 차지하게 된다. (장점 - 평균 대기시간이 짧다.  단점 - 수행시간이 긴 프로세스는 기아 상태가 될 수 있다.)
  • 멀티 레벨 : 준비 큐를 여러 개로 분리해 사용하는 알고리즘. 분리 큐는 각각 우선순위가 있고 각각 다른 알고리즘을 적용 시킬 수 있다. foreground, background 큐로 나뉜다.

foreground : 응답 속도가 중요한 프로세스가 들어간다.

background : 응답 속도 보다는 성능을 중요시하는 프로세스가 들어간다.