본문 바로가기
컴퓨터 과학/운영체제

[운영체제] 프로세스와 메모리 구조(5): 프로세스 스케줄링(Process Scheduling)

by webcodur 2024. 4. 27.
728x90
반응형

 

목차

     

    1. 스케줄링의 목적

    프로세스 스케줄링은 여러 프로세스가 효율적으로 CPU를 공유하도록 관리하여, 시스템 성능을 최적화하고 사용자에게 더 나은 반응 시간과 컴퓨터 자원 사용률을 제공하는 것이 목적이다.

     

     

    2. 선점형 스케줄링 알고리즘

    선점형 스케줄링은 현재 실행 중인 프로세스를 중단시키고, 다른 프로세스에 CPU를 재할당할 수 있는 방식이다. 이는 특정 상황에서 더 중요하거나 긴급한 프로세스에 빠르게 응답할 필요가 있을 때 유용하다.

    2.1 라운드 로빈 (Round Robin)

    “동일한 시간 할당”

    라운드 로빈 스케줄링은 공정한 시간 분배를 목표로 하여 모든 프로세스가 동일한 시간 동안 CPU를 사용할 수 있게 한다. 프로세스는 준비 큐에서 순환하며, 설정된 시간 할당량 동안 실행된 후 큐의 맨 뒤로 이동한다. 이 방식은 응답 시간이 빠르며, 간단하고 예측 가능한 스케줄링을 제공한다.

    2.2 다단계 큐 스케줄링 (MLQ: Multi Level Queue Scheduling)

    “프로세스를 분류하고, 분류마다 우선순위 지정”

    다단계 큐 스케줄링은 프로세스를 카테고리별로 분류하고, 각 카테고리는 고유의 큐를 갖는다. 예를 들어, 시스템 프로세스, 인터랙티브 프로세스, 배치 프로세스 등으로 분류할 수 있다. 각 큐는 독립적인 스케줄링 정책(예: 라운드 로빈, FCFS)을 가질 수 있으며, 큐 사이에는 일반적으로 우선순위가 지정된다.

    2.3 다단계 피드백 큐 스케줄링 (MLFQ: Multi Level Feedback Queue Scheduling)

    MLQ 확장해 프로세스가 다른 큐로 이동할 수 있게 하고, 동적으로 우선순위 조정”

    다단계 피드백 큐 스케줄링은 프로세스가 실행 중에 큐 사이를 이동할 수 있도록 함으로써, 프로세스의 우선순위를 동적으로 변경한다. 이 방식은 프로세스의 우선순위를 스케줄러가 조정할 수 있으므로, 프로세스의 CPU 사용 패턴에 따라 탄력적으로 대응할 수 있다. 이로 인해 시스템의 효율성과 반응성이 향상될 수 있다.

    2.4 최단 잔여 시간 우선 (SRT: Shortest Remaining Time First)

    “짧은 것부터”

    최단 잔여 시간 우선 스케줄링은 각 프로세스의 남은 실행 시간을 계산하고, 가장 짧은 시간을 요구하는 프로세스에게 CPU를 우선적으로 할당한다. 이 방법은 프로세스의 평균 대기 시간을 최소화할 수 있으나, 실행 시간이 긴 프로세스가 기아 상태에 빠질 위험이 있다.

    2.5 선점형 우선순위 스케줄링 (Priority Scheduling)

    “높은 우선순위부터”

    우선순위 스케줄링은 프로세스마다 중요도에 따라 우선순위를 설정하고, 높은 우선순위를 가진 프로세스가 CPU를 선점한다. 우선순위가 동일한 프로세스가 여럿 있을 경우, FCFS 방식을 적용하여 처리한다. 이 방식은 중요한 작업을 빠르게 처리할 수 있는 장점이 있으나, 낮은 우선순위 프로세스가 기아 상태에 빠질 수 있는 단점도 있다.

     

     

    3. 비선점형 스케줄링 알고리즘

    비선점형 스케줄링은 한번 CPU를 할당받은 프로세스가 완료되거나 대기 상태가 될 때까지 계속 실행된다. 이 방식은 간단하고 예측 가능한 실행 패턴을 제공한다.

    3.1. 선입선출 (FCFS: First-Come, First-Served)

    “먼저 온 프로세스부터”

    FIFO(First In First Out)와 같은 말. 선입선출 스케줄링은 모든 프로세스가 준비 큐에 도착한 순서대로 CPU를 할당받는다. 이 방식은 구현이 간단하며, 각 프로세스에 대한 처리 순서가 명확하다. 하지만, 실행 시간이 긴 프로세스가 먼저 도착하면 짧은 작업들이 대기해야 하는 "컨베이어 벨트" 현상이 발생할 수 있다.

    3.2. 최단 작업 우선 (SJF: Shortest Job First)

    “짧은 것부터”

    최단 작업 우선 스케줄링은 각 프로세스의 실행 시간을 미리 알고 있을 때 효과적으로 사용할 수 있다. 이 방식은 실행 시간이 짧은 프로세스를 우선적으로 처리함으로써 평균 대기 시간을 크게 줄일 수 있다. 하지만, 실행 시간을 정확히 예측하기 어렵거나 실행 시간이 긴 프로세스가 계속 대기하는 문제가 발생할 수 있다.

    3.3. 기한부 스케줄링 (Deadline Scheduling)

    “프로세스별로 명시된 마감시간 내 작업 완료를 목표로”

    기한부 스케줄링은 각 작업에 설정된 마감 시간을 우선순위로 고려하여, 마감 시간 내에 작업을 완료할 수 있도록 스케줄링한다. 이 방식은 시간에 민감한 작업을 처리하는 데 적합하며, 마감 시간을 충족하지 못하는 작업의 경우 스케줄링 실패로 간주될 수 있다.

    3.4. 최고 응답비 우선 (HRRN: Highest Response Ratio Next)

    “대기 시간과 실행 시간의 비율을 고려하여 우선순위를 결정”

    최고 응답비 우선 스케줄링은 대기 시간과 예상 실행 시간을 고려하여 각 프로세스의 응답비를 계산한다. 응답비가 높은 프로세스부터 CPU를 할당받아 실행된다. 이 방식은 프로세스가 긴 대기 시간을 보낼수록 우선순위가 높아지기 때문에, 기아 상태를 예방하면서 공정한 처리가 가능하다.

    3.5. 비선점형 우선순위 스케줄링 (Priority Scheduling)

    “높은 우선순위부터”

    비선점형 우선순위 스케줄링에서는 각 프로세스가 우선순위에 따라 CPU를 할당받는다. 프로세스가 도착하면 가장 높은 우선순위를 가진 프로세스가 먼저 실행되며, 이미 실행 중인 프로세스는 완료될 때까지 중단되지 않는다. 이 방식은 중요한 작업을 빠르게 처리할 수 있으나, 낮은 우선순위의 프로세스가 오랜 시간 대기할 수 있다.

    반응형