4. CPU 스케줄링

2023. 4. 14. 18:09운영체제

728x90

1. 스케줄링의 개요

 

CPU 스케줄러

: 여러 프로세스의 상황을 고려하여 CPU와 시스템 자원의 배정을 결정

 

 

고수준 스케줄링

  • 전체 시스템의 부하를 고려하여 작업의 개수를 조절

 

저수준 스케줄링

  • 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 결정

 

중간 수준 스케줄링

  • 중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막음

 

 

 

 


2. 스케줄링 시 고려 사항

 

2-1 선점형 스케줄링과 비선점형 스케줄링

 

선점형 스케줄링

  • 실행 상태에 있는 프로세스의 작업을 중단시키고 새로운 작업을 시작할 수 있는 방식
  • 문맥 교환의 오버헤드가 많다. 

 

비선점형 스케줄링

  • 그 프로세스가 종료되거나 자발적으로 대기 상태에 들어가기 전까지는 계속 실행되는 방식
  • 과거의 일괄 작업 시스템에서 사용하던 방식
  • 전체 시스템의 처리율이 떨어짐
  • 문맥 교환의 오버헤드가 적다.

 


2-2 프로세스 우선순위

 

* 우선순위가 높은 프로세스가 CPU 를 먼저 더 오래 차지한다. 

 

 

CPU 집중 프로세스

  • CPU를 많이 사용하는 프로세스

 

입출력 집중 프로세스

  • 입출력을 많이 사용하는 프로세스

 

스케줄링을 할 때 입출력 집중 프로세스의 우선순위를 CPU 집중 프로세스보다 높이면 시스템의 효율이 향상

 

 


2-3 전면 프로세스와 후면 프로세스

 

 

전면 프로세스

  • 화면의 맨 앞에 놓인 프로세스 
  • 현재 입력과 출력 사용
  • 사용자와 상호작용 가능

 

후면 프로세스

  • 사용자와 상호작용이 없음
  • 사용자의 입력 없이 작동 
    -> 일괄 작업 프로세스
  • 전면 프로세스의 우선순위가 후면 프로세스보다 높음

 


3. 다중 큐

 

3-1 준비 상태의 다중 큐

  • 준비 상태에 들어올 때 자신의 우선순위에 해당하는 큐의 마지막에 삽입

 

프로세스의 우선순위를 배정하는 방식

 

1. 고정 우선순위 방식

  • 그 프로세스는  끝날 때까지 우선순위 바뀌지 않음
  • 구현은 쉽지만 작업 효율 떨어짐

2. 변동 우선순위 방식

  • 작업 중간에 우선순위 바뀜
  • 효율성 향상

3-2  대기 상태의 다중 큐

  • 효율을 높이기 위해 대기 상태에서는 같은 입출력을 요구한 프로세스끼리 모아 놓음 
  • 동시에 끝나는 인터럽트를 처리하기 위해 인터럽트 벡터라는 자료 구조 사용
    -> 준비 큐로 옮김

 

4. 스케줄링 알고리즘

4-1  FCFS (First Come First Served) 스케줄링

  • 준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 방식
    -> 효율성 떨어짐
  • 큐가 하나라 모든 프로세스는 우선순위가 동일
  • 현재 작업 중인 프로세스가 입출력 작업을 요청하는 경우 CPU 가 작업하지 않고
    쉬는 시간이 많아져 작업 효율이 떨어짐
    -> 콘보이 효과

 

4-2  SJF(Shortest Job First) 스케줄링

  • 최단 작업 우선 스케줄링이라고도 함
  • 준비 큐에 있는 프로세스 중 실행 시간이 가장 짧은 작업부터  CPU를 할당하는 비선점형 방식
    ->  콘보이 효과 완화
  • 그러나 실행 시간이 긴 이유로 계속 두로 밀려 공평성이 떨어짐
    -> 아사 현상
    -> 에이징 기법으로 아사 현상 완화.
    프로세스가 자신의 순서를 양보할 때마다 나이를 한 살씩 먹어 최대 몇 살까지 양보하도록 규정하는 것
  • 운영체제가 프로세스의 종료 시간을 정확하게 예측하기 어려움

 

 

4-3 HRN(Highest Response ratio Next) 스케줄링

  • SJF 스케줄링에서 발생할 수 있는 아사 현상을 해결하기 위해 만들어진 비선점형 알고리즘
  • 최고 응답률 우선 스케줄링이라고도 함
  • 프로세스의 우선순위를 결정하는 기준 : (대기 시간+ CPU 사용 시간) / CPU 사용 시간

 

4-4  라운드 로빈 스케줄링

  • 선점형 알고리즘 중 가장 단순하고 대표적인 방식
  • 프로세스들이 작업을 완료할 때까지 계속 순환하면서 실행
  • 효과적으로 작동하려면 문맥 교환에 따른 추가 시간을 고려하여 타임 슬라이스를 적절히 설정해야 함
    -> 타임 슬라이스가 너무 길지도 짧지도 않게 

 

4-5  SRT(Shortest Remaining Time) 우선 스케줄링

  • 기본적으로 라운드 로빈 스케줄링을 사용하지만 
    CPU 를 할당받을 프로세스를 선택할 때 남아 있는 작업 시간이 가장 적은 프로세스를 선택
  • 운영체제가 프로세스의 종료 시간을 예측하기 어렵고 아사 현상이 일어나기 때문에 잘 사용하지 않음

 

4-6  우선순위 스케줄링

  • 프로세스의 중요도에 따른 우선순위를 반영한 스케줄링 알고리즘
  • 비선점형 방식과 선점형 방식에 모두 적용할 수 있음
  • 준비 큐에 있는 프로세스의 순서를 무시하고 우선순위가 높은 프로세스에 먼저
    CPU 를 할당하므로 공평성을 위배하고 아사 현상을 일으킴

 

4-7  다단계 큐 스케줄링

  • 우선순위에 따라 준비 큐를 여러 개 사용하는 방식
  • 우선순위는 고정형 우선순위를 사용
  • 상단의 큐에 있는 모든 프로세스의 작업이 끝나야 다음 우선순위 큐의 작업이 시작됨
  • 프로세스가 CPU 를 한 번씩 할당받아 실행될 때마다 프로세스의 우선순위를 낮춤으
    로써 다단계 큐에서 우선순위가 낮은 프로세스의 실행이 연기되는 문제를 완화
  • 우선순위에 따라 타임 슬라이스의 크기가 다름
    -> 한번 CPU 를 잡을 때 많이 작업하라고 낮은 우선순위의 타임 슬라이스를 크게 함
  • 마지막 큐는 들어온 순서대로 작업을 마치는 FCFS 스케줄링 방식으로 동작

 

5. 동기적 인터럽트와 비동기적 인터럽트

 

동기적(synchronous) 인터럽트

  • 프로세스가 실행 중인 명령어로 인해 발생
  • 예) 어떤 수를 0으로 나눔
    ctrl + C로 프로세스를 중단
    프로그램상의 문제(오버플로우, 메모리 잘못 접근)

 

비동기적(asynchronous) 인터럽트

  • 하드웨어적인 오류로 발생하거나 또는 키보드,마우스 입력
  • 예) 하드디스크 읽기 오류
    메모리 불량
    키보드, 마우스 인터럽트
728x90

'운영체제' 카테고리의 다른 글

교착상태 (deadlock)  (1) 2023.05.29
5. 프로세스 동기화  (0) 2023.04.14
3. 프로세스와 스레드  (2) 2023.04.13
2. 컴퓨터 구조와 성능 향상  (2) 2023.04.13
1. 운영체제 개요  (1) 2023.04.13