[OS] 프로세스 스케줄링 알고리즘

2025. 5. 26. 23:33·공부기록/CS

프로세스 스케줄링 목적

  • throughput의 증대
  • 프로세스에 대한 fairness 유지
  • 중요한 프로세스에 대한 우선처리가 가능하도록 함
  • 시스템 내 자원의 공평한 할당

CPU 스케줄링 알고리즘을 구현할 때 주의 사항

  1. 프로세스의 형태
    1. 일괄처리 (Batch) 형태
    2. 대화형 (TSS)
  2. 프로세서의 CPU 사용 비율과 I/O 사용 비율 = Burst
  3. 프로세스에게 우선순위를 부여했는지 여부
  4. 우선순위가 높은 프로세스에 의해서 선점 or 비선점 프로세스
  5. 페이지 부재(page fault)의 발생 빈도
👻 페이지와 페이지 부재 Page Fault
- 페이지
가상 메모리 시스템에서 사용하는 고정 크기의 데이터 블록이다.효율적인 메모리 관리를 위해 가상 메모리 공간을 일정하게 나눈 단위이다.
- 페이지 부재
프로세스가 접근하려는 페이지가 주기억장치에 존재하지 않을 때 발생하는 현상실행하려는 페이지가 주기억장치에 없다면 page fault가 발생하고, 하드디스크에서 가져와야 한다.하드디스크에서 가져오려고 하는데 주기억장치가 꽉 차있다면 주기억장치에서 다른거를 swap out하고 다시 가져와야 한다.
- Thrashing
빈번한 페이지 부재로 인해 시스템의 대부분의 시간이 스왑 작업에 소모되는 상태를 의미한다.

 


CPU 스케줄리의 세 가지 유형

  1. 장기 스케줄링 (long-term)
  2. 중기 스케줄링 (medium-term)
  3. 단기 스케줄링 (short-term)

 

1. 단기 스케줄링

분배기 dispatcher라고도 한다.

주기억 장치 내의 준비 상태(ready)에 들어와 있는 프로세스들 중에서 다음에 실행시킬 프로세스를 선택하여

CPU를 할당시켜 주는 일을 담당한다

→ 프로세스가 연기되거나 선점 당하는 경우, 다음에 CPU에 할당시킬 프로세스를 선택해주는 일을 한다.

(=그냥 어떤 상황에서든 CPU 할당 시켜주는 거라고 보면 될 듯)

 

선점 : 더 우선순위가 높은 프로세스에 CPU를 양보하는 것을 의미한다. (=인터럽트 허용)

해당 프로세스가 갖고있는 PCB의 정보 관리와 사용자모드로의 전환 작업도 담당한다. (문맥전환)


2. 중기 스케줄러 (Medium-term Scheduler)

중기 스케줄러는 메모리에 적재된 프로세스의 수를 관리하며, 시스템 성능을 최적화하기 위해

프로세스를 스왑 인(Swap In) 또는 스왑 아웃(Swap Out)하는 작업을 수행한다.

→ suspended ready queue, suspended block queue를 주기억장치로 가져오는 일을 담당한다고 보면 됨.

 

역할

  1. 메모리 관리:
    • 메모리에 너무 많은 프로세스가 적재되어 시스템 성능이 저하될 경우 일부 프로세스를 디스크의 스왑 영역으로 내보낸다.(Swap Out).
    • 메모리에 여유가 생기면 디스크에 있던 프로세스를 다시 메모리로 가져온다.(Swap In).
  2. 우선순위 기반 조정:
    • 우선순위가 낮거나 일정 시간 동안 활성화되지 않은 프로세스를 선택해 메모리에서 제거한다.
  3. 프로세스 상태 전환:
    • 준비 상태(Ready)에서 중단 상태(Suspended)로 전환하거나, 중단 상태에서 다시 준비 상태로 복귀시킨다.

특징

  • 중기 스케줄러는 장기 및 단기 스케줄링 사이에서 작동하며, 시스템의 안정성을 유지하는 데 중요한 역할을 한다.
  • 현대 운영체제에서는 가상 메모리 관리 기술이 발달하면서 중기 스케줄러의 사용이 줄어드는 추세이다.

3. 장기 스케줄러 (Long-term Scheduler)

장기 스케줄러는 어떤 프로세스를 준비 큐(Ready Queue)에 넣을지 결정하는 역할을 한다. 이를 통해 시스템에 동시에 실행되는 프로세스의 수를 조절한다. (시작과 끝을 담당한다고 보면 된다.)

역할

  1. 프로세스 선택:
    • 디스크에 있는 작업(Job) 중에서 실행할 프로세스를 선택하고, 이를 메모리에 적재하여 준비 큐에 등록한다.
    • I/O 중심 프로세스와 CPU 중심 프로세스의 비율을 조절하여 시스템 자원의 균형을 유지한다.
  2. Degree of Multiprogramming 조정:
    • 메모리에 동시에 존재하는 활성 프로세스의 수를 제어하여 시스템 과부하를 방지한다.
  3. 프로세스 상태 전환:
    • 새로운(New) 상태에서 준비(Ready) 상태로 전환시킨다.

특징

  • 장기 스케줄러는 호출 빈도가 낮으며, 수십 초 또는 수 분 단위로 작동한다.

 

스케줄링 알고리즘

선점 vs 비선점 개념

1️⃣ 비선점
:하나의 프로세스가 직접 반납하기 전까지 다른 프로세스가 CPU를 선점할 수 없는 것

장점

: 할당 받은 순선대로 처리된다는 fairness

: 대기 중인 프로세스에 관계없이 응답 시간 예측 가능

단점 (문제점)

: 기아현상 (starvation) 발생 가능 = CPU 배정받지 못하는 현상

: 무한 대기 발생 가능 - 어떤 프로세스가 오류로 인하여 CPU를 계속 사용하는 경우

2️⃣ 선점 
: 높은 우선순위를 갖는 프로세스에게 CPU를 양보한다.
- 대화형으로 처리되는 시분할 시스템

    → 일정 시간이 지나면 무조건 다른 프로세스에게 CPU의 사용을 양보한다.
- 문맥 교환

    → 선점의 경우, 우선순위 높은애에게 양보하므로, 중단 직전까지 수행한 모든 내용을 보관하여 둔 후, 새로 시작되는 프로세스와 관련된 내용을 시스템에 새로 적재 시켜준다.

    → 문맥 교환은 멀티태스킹 환경에서 필수적인 작업이지만, 오버헤드를 유발하여 시스템 성능에 부정적인 영향을 미칠 수 있다

 


비선점 스케줄링

1. FCFS (FIFO) 알고리즘

큐를 활용하여 프로세스 실행 순서 결정

CPU를 차지하면, 그 프로세스가 CPU를 반납할 때까지 다른 프로세스가 CPU를 독점한다.

반환시간 = 대기시간 + CPU 요구 시간

 

- 장점 : 간단하다

- 단점

: 기아현상 발생 가능 & 프로세스의 도착 순서의 영향이 크다.

: 특정 프로세스가 오류? → 계속 사용하는 문제 발생

 

2. SJF (Shortest Job First) 알고리즘 [선점 가능]

실행시간을 예측하여, 짧은 프로그래밍을 먼저 실행한다

장점 : 효율적인 알고리즘 중 하나이다.

단점 : 프로그램의 실행 시간을 예측하기 힘들고, 기아 현상이 발생할 수 있다.

 

3. HRRN (Highest Response Ration Next) 알고리즘

실행시간 (CPU Time,Run Time)과 대기시간 (Wait Time)을 고려하여 스케줄링한다.

처리 우선 순위(응답비율) = (대기시간 + CPU 요구 시간) / CPU 요구 시간

응답 비율이 큰 프로세스부터 실행한다

  • CPU Time이 같다면, 대기시간이 큰 프로세스를 먼저 처리한다.
  • 대기시간이 같다면, CPU Time이 작은 프로세스를 먼저 처리한다.
  • → 당연한 것. 식에 넣어보면 됨.

장점 : SJF에서 발생하는 기아 현상을 줄일 수 있다.

 

4. 우선 순위(Priority) 알고리즘 [선점 + 비선점]

우선 순위가 높은 프로세스를 먼저 처리한다. 우선 순위가 같은 경우에는 FCFS (FIFO)로 한다.

각 프로세스의 우선순위는 내부적 요소 또는 외부적 요소에 의해 정의된다.

- 내부적 우선 순위

기계 내부의 성능에 영향을 미치는 작업 처리의 제한 시간

기억 장소의 요구량

사용되는 파일의 수

평균 CPU 버스트에 대한 평균 I/O 버스트의 비율 고려

 

- 외부적 우선 순위

기계 외적인 요인으로 인한 정책적 배려

시스템 운영의 유연성이 좋지만, 기아 현상이 발생한다.

 

- 동적 우선 순위 

우선 순위가 낮아도 대기 시간이 길면 우선 순위를 높여 준다.

→ 기아 현상 개선이 가능하다

cf. 정적 우선 순위 : 프로세스 생성 시 우선순위를 정한다. 실행 중에는 변하지 않는다.

 

선점에서 우선순위 알고리즘 :
높은 우선순위 프로세스가 도착하면 현재 실행 중인 프로세스를 중단하고 CPU를 할당
비선점에서 우선순위 알고리즘 :
CPU를 할당받은 프로세스는 종료될 때까지 실행된다. 새로운 높은 우선순위 프로세스는 대기한다.

 

📍 비선점에서 우선순위 알고리즘 예시 

5. 기한부(deadline) 스케줄링 알고리즘 [선점도 가능하다]

시스템에 제출된 작업의 최종 처리 시간을 명시하고, 명시된 기한 내에 처리되도록 한다.

→ 실시간 처리 시스템이 적용된다.

 

1. 하드 실시간 시스템

프로세스에 시간 제한을 두고, 시간 내에 처리되도록 CPU를 독점 사용하도록 한다. → 기한을 넘기면 시스템 오류로 간주한다.

2. 소프트 실시간 시스템 

시간적 제약이 다소 약소한 형태이다. 중요한 작업에 대해서는 다른 작업에 비해 높은 우선순위를 부여하여 이 작업이 끝날 때까지 높은 우선 순위를 계속 유지시키는 방식이다.

→ 기한을 넘겨도 결과가 유효할 수 있지만, 중요한 작업이 우선적으로 처리

다른 스케줄링 알고리즘 (RR, 우선순위 등)과 복합적인 사용을 목표로 한다.

 

기한부 알고리즘을 적용 시, 프로세스가 요구하는 자원을 정확히 파악해야 한다.

저작자표시 비영리 변경금지 (새창열림)

'공부기록 > CS' 카테고리의 다른 글

[정처기 실기 대비] 라우팅 프로토콜 - RIP, OSPF  (6) 2025.07.13
[정처기 실기 대비] 네트워크 보안 관련 프로토콜, IPsec, SSL, S-HTTP  (1) 2025.07.12
[OS] 프로세스 관리와 CPU 스케줄링  (0) 2025.05.23
[디자인패턴] 오퍼레이션 패턴 - 템플릿 메소드 패턴, 상태 패턴, Strategy 패턴  (0) 2025.05.22
[OS] Operating System Intro 2  (0) 2025.05.18
'공부기록/CS' 카테고리의 다른 글
  • [정처기 실기 대비] 라우팅 프로토콜 - RIP, OSPF
  • [정처기 실기 대비] 네트워크 보안 관련 프로토콜, IPsec, SSL, S-HTTP
  • [OS] 프로세스 관리와 CPU 스케줄링
  • [디자인패턴] 오퍼레이션 패턴 - 템플릿 메소드 패턴, 상태 패턴, Strategy 패턴
Lyv
Lyv
  • Lyv
    inimizi
    Lyv
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 이것저것 도전 (5)
        • 공모전 (0)
        • 우테코 (5)
      • PS (16)
        • 삼성기출 (2)
        • LeetCode & Codility (4)
        • Programmers (6)
        • BaekJoon (4)
      • 공부기록 (33)
        • CS (16)
        • 영어 (1)
        • iOS (1)
        • 프로그래밍 언어 (0)
        • Web (4)
        • Linux (1)
        • Docker (2)
        • Network (4)
        • IaC (3)
      • 프로젝트 경험 (0)
      • DailyLog (4)
      • 취준Log (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    PS
    공부기록
    네트워크
    IAC
    디자인패턴
    리눅스
    c언어
    DP
    manifest
    FastAPI
    프로그래머스
    운영체제
    ansible
    문제풀이
    프리코스회고
    정처기
    우테코
    C++
    백준
    스케줄링
    os
    이미지
    til
    대학생
    정처기실기
    운영체제intro
    우테코프리코스
    컨테이너
    자동화
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Lyv
[OS] 프로세스 스케줄링 알고리즘
상단으로

티스토리툴바