CS/운영체제

[운영체제] CPU 스케줄링

연듀 2022. 12. 22. 11:34

CPU 스케줄링

 

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

 

 

프로세스 우선순위

 

우선순위가 높은 프로세스란 빨리 처리해야하는 프로세스들을 의미한다. (ex 입출력이 많은 프로세스)

상황에 맞게, 프로세스의 중요도에 맞게 프로세스가 CPU를 이용할 수 있도록 운영체제는 프로세스마다 우선순위를 부여한다.

운영체제는 각 프로세스의 PCB에 우선순위를 명시하고, 이를 기준으로 먼저 처리할 프로세스를 결정한다.

 

 

 

스케줄링 큐

 

연결리스트로 구현

각 PCB는 다음 PCB를 가리키는 포인터를 포함

 

 

 

 

운영체제가 매번 PCB를 검사하여 자원을 이용할 프로세스를 결정하는 것은 번거롭기 때문에,

효율적인 스케줄링을 위해 스케줄링 큐를 사용한다.

 

스케줄링 큐는 크게 두가지가 있다.

 

  • 준비 큐: CPU를 이용하고 싶은 프로세스들이 서는 줄
    • 큐에 삽입된 순서대로 프로세스를 꺼내 실행하되 우선순위가 높은 프로세스를 먼저 실행한다.
  • 대기 큐: 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
    • 같은 장치를 요구한 프로세스들은 같은 대기 큐에서 기다린다.
    • 입출력이 완료되면 작업이 완료된 PCB는 준비 상태로 변경된 뒤 대기 큐에서 제거돼 준비 큐로 이동한다.

 

 

선점형과 비선점형 스케줄링

 

  • 선점형 스케줄링
    • 운영체제가 프로세스가 이용중인 자원을 빼앗아 다른 프로세스에게 할당할 수 있는 스케줄링 방식
    • 프로세스의 자원 독점을 막고 골고루 자원할 수 있다.
    • 컨텍스트 스위칭때 오버헤드가 발생할 수 있다.
  • 비선점형 스케줄링
    • 하나의 프로세스가 자원을 사용하고 있다면 종료되거나 대기 상태가 되기전까진 다른 프로세스가 끼어들수 없는 스케줄링 방식
    • 컨텍스트 스위칭에서 발생하는 오버헤드가 적다.
    • 하나의 프로세스가 자원을 사용 중이면 당장 자원을 사용해야 하는 상황에서도 기다릴 수 밖에 없다.

 

스케줄링 알고리즘

 

  1. 선입 선처리 스케줄링(FCFS)
    • CPU를 먼저 요청한 프로세스부터 CPU를 할당
  2. 최단 작업 우선 스케줄링(SJF)
    • CPU 이용 시간이 가장 짧은 프로세스부터 실행
  3. 라운드 로빈 스케줄링
    • 정해진 타임 슬라이스만큼의 시간동안 돌아가며 CPU를 이용하는 선점형 스케줄링
  4. 최소 잔여 시간 우선 스케줄링(SRT)
    • 프로세스들은 정해진 타임 슬라이스만큼 CPU를 사용하되, 남아있는 작업 시간이 가장 적은 프로세스가 CPU를 실행할 다음 프로세스로 선택
  5. 우선순위 스케줄링
    • 높은 우선순위를 가진 프로세스부터 실행
    • 우선순위가 낮은 프로세스가 실행이 연기되는 기아 현상이 발생할 수 있어 오래 대기한 프로세스의 우선순위를 점차 높이는 에이징 기법을 사용한다.
  6. 다단계 큐 스케줄링
    • 우선순위별로 준비 큐를 여러 개 사용해 우선순위가 높은 큐에 있는 프로세스들을 먼저 처리
  7. 다단계 피드백 스케줄링
    • 다단계 큐 스케줄링에서 발전된 형태로 우선순위에 따라 프로세스들이 큐 사이를 이동할 수 있음
    • 가장 일반적인 CPU 스케줄링 알고리즘

 

 

 

 

책 혼자서 공부하는 컴퓨터구조 + 운영체제

https://clownhacker.tistory.com/23