운영체제

혼자 공부하는 운영체제 읽고 면접 준비 - CPU 스케쥴링(23.2.11)

dodo4723 2024. 2. 15. 23:34
728x90
반응형

사용자가 특정 차트를 고르면, 전 종목의 과거(10년) 차트들을 모두 탐색하여 가장 유사한 차트 10개를 골라 사용자에게 보여줍니다.

 

웹프로젝트 링크

 

비슷한 차트 검색기

전 종목의 최근 10년간 모든 차트를 탐색합니다. 내 종목의 차트는 과연 상승하는 차트일까요?

www.similarchart.com

 

 

 

 

 

 

 

 

 




CPU 스케쥴링

운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것

대부분의 프로세스는 입출력 장치를 자주 사용하기 때문에 실행 상태와 대기 상태를 반복하며 실행

CPU 집중 프로세스와 입출력 집중 프로세스가 동일한 빈도로 CPU를 사용하는 것은 비효율적이라 우선순위 부여



스케쥴링 큐

PCB에 우선순위가 적혀있지만, 운영체제가 일일이 PCB를 뒤적거리는 것은 비효율적임.

CPU를 사용하고 싶은 프로세스(준비 큐), 메모리에 적재되고 싶은 프로세스, 입출력장치를 사용하고 싶은 프로세스(대기 큐)들을 모두 줄을 세우는데 이 줄을 스케쥴링 큐로 구현하고 관리합니다.

 



선점형 / 비선점형 스케쥴링

선점형 스케쥴링

더 급한 프로세스가 언제든 끼어들 수 있음

  • 장점 : 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원 배분
  • 단점 : 문맥 교환 과정에서 오버헤드 발생할 수 있음

비선점형 스케쥴링

  • 장점 : 문맥 교환의 오버헤드는 적음
  • 단점 : 당장 자원을 사용해야 해도 기다리는 수밖에 없음



스케쥴링 알고리즘의 종류

1. 선입 선처리 스케쥴링 = FCFS(First Come First Served Scheduling)

단순히 준비 큐에 삽입된 순서대로 처리하는 비선점형 방식

예를 들어 A(17초), B(5초), C(2초) 프로세스가 차례로 삽입되면 C는 고작 2초를 실행하기 위해 22초를 기다려야 합니다. 이런 현상을 호위 효과(convoy effect)라고 합니다.

 

2. 최단 작업 우선 스케쥴링 = SJF(Shortest Job First Scheduling)

CPU 이용 시간이 가장 짧은 프로세스부터 실행하는 방식

 

3. 라운드 로빈 스케쥴링 = RR(round robin scheduling)

각 프로세스가 CPU를 사용할 수 있는 정해진 시간인 타임 슬라이스만큼동안 돌아가며 CPU를 이용하는 선점형 스케쥴링

타임 슬라이스가 너무 크면 선입 선처리 스케쥴링과 다를 바 없고, 너무 작으면 문맥 교환의 비용이 너무 클 수 있음.

 

4. 최소 잔여 시간 우선 스케쥴링 = SRT(Shortest Remaning Time)

SJF와 RR를 합친 방식. 정해진 타임 슬라이스만큼 CPU를 사용하되, 다음엔 남아있는 작업 시간이 가장 적은 프로세스를 선택

 

5. 우선순위 스케쥴링 = priority scheduling

가장 높은 우선순위를 가진 프로세스부터 실행하는 방식으로 SJF, SRT는 우선순위 스케쥴링의 일종으로 볼 수 있음.

우선순위가 낮은 프로세스는 높은 프로세스들에 의해 실행이 계속해서 연기될 수 있는데 이를 기아 현상이라고 합니다.

기아 현상을 방지하기 위해 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 에이징 기법이 있습니다.

 

6. 다단계 큐 스케쥴링 = multilevel queue scheduling

우선순위별로 준비 큐를 여러 개 사용하는 방식.

프로세스 유형별로 우선순위를 구분하여 실행하는 것이 편리해짐.

큐마다 타임 슬라이스를 여러 개 지정할 수도 있고, 큐마다 다른 스케쥴링 알고리즘을 사용할 수도 있음

7. 다단계 피드백 큐 스케쥴링 = multilevel feedback queue scheduling

다단계 큐 방식은 기아 현상이 발생할 수 있는 문제가 있는데, 이 방식은 프로세스들이 큐 사이를 이동할 수 있음.

 

어떤 프로세스의 CPU 이용 시간이 길면 낮은 우선순위 큐로 이동시키고, 어떤 프로세스가 낮은 우선순위 큐에서 너무 오래 기다리면 높은 우선순위 큐로 이동시킬 수 있는 알고리즘.

가장 일반적인 CPU 스케쥴링 알고리즘으로 알려져 있다고 합니다.

반응형