Computer Science/Operating System

[운영체제] CPU스케줄링

고고잉93 2024. 3. 5. 01:42
728x90

◈ CPU 스케줄링

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

 

■ CPU우선순위

  ● 프로세스 중 입출력이 많은 프로세스를 입출력 집중 프로세, 연산 및 컴파일, 그래픽 처리작업등 CPU작업이 많은

   프로세스를 CPU집중 프로세스라고 한다.

    → 이를 바탕으로 각 프로세스의 PCB에 우선순위를 명시하고 먼저 처리할 프로세스를 결정한다.

 

  □ 스케줄링 큐

  ○ 운영체제가 일일이 모든 PCB를 검사하여 이용할 프로세스를 결정하는것은 시간이 오래걸리고 비효율적이다.

  

  ○ 이를 위해 메모리에 적재되는 프로세스들을 큐에 줄을 세우고, CPU이용 프로세스들을 큐에 줄을 세워 관리한다.

  

  ○ 대표적인 큐 

     - 준비 큐(ready queue): CPU를 이용하고 싶은 프로세스의 줄

 

     - 대기 큐(waiting queue): 입출력장치를 이용하기 위해 대기상태에 접어든 프로세스의 줄. 

 

  □ 선점 · 비선점 스케줄링

    ○ 선점형 스케줄링: 프로세스가 CPU와 같은 자원을 사용하고 있더라도 운영체제가 프로세스로부터 그 자원을 빼앗아            다른 프로세스에게 할당할 수 있다.

      → 더 급한 프로세스가 언제든 끼어들어 사용할 수 있어, 자원 독점을 막고 골고루 자원을 배분할 수 있다.

        But, 문맥교환과정중 오버헤드가 발생 할 수 있다.

 

    비선점형 스케줄링: 다른 프로세스가 끼어들 수 없는 스케줄링 방식

      ※ 추가적인 정보는 https://gyoogle.dev/blog/computer-science/operating-system/CPU%20Scheduling.html 를 참고하자

 

스케줄링 알고리즘의 종류

 1. 선입 선처리 스케줄링(FCFS)

    Queue에 삽입된 프로세스들을 순서대로 처리하는 비선점형 스케줄링 방식.

    공정해보이지만, CPU를 오래사용하는 프로세스들이 먼저 도착하면 무작정 기다리는 수밖에 없다. → 호위 효과

 

2. 최단 작업 스케줄링(SJF)

  사용기간이 짧은 프로세스들부터 우선 실행한다.

 

3. 라운드 로빈 스케줄링

   선입선처리 스케줄링(FCFS)에 타임슬라이스라는 개념이 더해진 방식.

   타임슬라이스는 프로세스가 CPU를 사용할 수 있는 정해진 시간을 의미하며, 정해진 시간을 모두 사용한 프로세스는

   다시 큐의 맨뒤에 삽입한다.

 

4. 최소 잔여 시간 우선 스케줄링(SRT)

  최단작업 스케줄링 + 라운드 로빈 스케줄링을 합친 방식.

 

5. 우선순위 스케줄링

  우선순위를 프로세스들에게 부여하여 수행하는 방식이나 우선순위가 낮은 프로세스는 실행이 계속되서 연기될 수있다.

    → 기아 현상

   이를 방지하기 위해 에이징을 사용한다. 오랫동안 대기한 프로세스의 우선순위를 높이는 방식이다.

 

6. 다단계 큐 스케일링

   우선순위 별로 Queue를 여러개 사용하는 방식. Queue마다 다른 스케줄링 알고리즘을 사용할 수 있다.

 

7. 다단계 피드백 큐 스케줄링

    6. 다단계 큐에서도 기아 현상이 발생할 수 있다. 이를 업그레이드한것이 다단계 피드백 큐 스케줄링이다.

    해당 프로세스가 타임슬라이스동안 실행되고 실행이 안끝난다면 다음 우선순위의 큐에 삽입되어 실행된다.

 

  핵심은 프로세스들이 Queue사이를 이동할 수 있으며, CPU의 이용시간에 따라 우선순위를 변경하여 기아 현상이 발생

  하지 않도록 한다.

     → 가장 일반적인 CPU스케줄링 알고리즘이라고 한다.

728x90