다중 코어 시스템에서의 실시간 스케줄링은 단일 코어 시스템보다 훨씬 더 복잡한다. 다중 코어 시스템에서는 여러 개의 프로세서가 동시에 작업을 수행할 수 있기 때문에, 스케줄링 알고리즘은 이러한 병렬 처리를 최적화하면서도 실시간 성능 요구 사항을 충족해야 한다.
다중 코어 실시간 스케줄링의 기본 개념
다중 코어 실시간 스케줄링의 주요 목표는 다음과 같다:
- 부하 분산: 작업을 여러 코어에 균등하게 분산하여 한 코어에 과도한 부하가 걸리지 않도록 한다.
- 실시간 응답성: 실시간 작업의 기한(deadline)을 준수하여 작업이 정해진 시간 내에 완료되도록 한다.
- 상호 운용성: 여러 작업이 동시에 실행될 때 서로 간섭하지 않도록 조정한다.
작업 분할
다중 코어 시스템에서 작업을 분할하는 방법에는 여러 가지가 있다. 일반적으로 사용되는 두 가지 접근 방식은 다음과 같다:
- 작업 레벨 분할: 각 작업을 여러 개의 코어에 분할하여 병렬로 실행한다.
- 스레드 레벨 분할: 하나의 작업 내에서 여러 스레드를 생성하여 각각 다른 코어에서 실행한다.
스케줄링 알고리즘
다중 코어 시스템에서 사용되는 주요 실시간 스케줄링 알고리즘은 다음과 같다:
-
전역 스케줄링(Global Scheduling): 모든 코어가 하나의 글로벌 작업 큐를 공유하며, 작업은 필요에 따라 자유롭게 코어 간에 이동한다. 대표적인 알고리즘으로는 글로벌 EDF(Earliest Deadline First)와 글로벌 RM(Rate Monotonic)이 있다.
-
파티션 스케줄링(Partitioned Scheduling): 작업을 사전에 각 코어에 할당하고, 코어는 자신의 작업만 스케줄링한다. 파티션 스케줄링은 오버헤드가 적고 관리가 간편하지만, 부하 분산이 어렵다는 단점이 있다.
-
하이브리드 스케줄링(Hybrid Scheduling): 전역 스케줄링과 파티션 스케줄링의 장점을 결합한 방식으로, 일부 작업은 전역적으로 관리하고, 일부는 파티션에 할당한다.
전역 스케줄링
글로벌 EDF (Earliest Deadline First)
글로벌 EDF는 모든 작업을 하나의 전역 큐에 놓고, 가장 기한이 빠른 작업을 먼저 스케줄링하는 알고리즘이다. 이 방법은 이론적으로 최적의 기한 준수율을 제공하지만, 코어 간 작업 이동에 따른 오버헤드가 존재할 수 있다.
장점: - 높은 유연성 - 최적의 기한 준수율
단점: - 높은 오버헤드 - 작업 이동 비용
글로벌 RM (Rate Monotonic)
글로벌 RM은 작업의 주기(Period)가 짧을수록 높은 우선순위를 부여하는 방식이다. 주기성이 있는 작업에 적합하며, 모든 작업의 주기가 서로 배수 관계일 때 최적의 성능을 발휘한다.
장점: - 단순한 구현 - 일정한 주기 작업에 최적
단점: - 비주기성 작업에 비효율적 - 오버헤드 존재
파티션 스케줄링
파티션 스케줄링에서는 작업을 사전에 각 코어에 할당하여 관리한다. 각 코어는 자신의 작업만 스케줄링하며, 글로벌 큐는 존재하지 않는다.
장점: - 낮은 오버헤드 - 간편한 관리
단점: - 부하 분산 어려움 - 작업 할당 문제
파티션 EDF
각 코어는 자신에게 할당된 작업만을 관리하며, EDF 알고리즘을 사용하여 가장 기한이 빠른 작업을 먼저 실행한다.
장점: - 기한 준수율 보장
단점: - 작업 할당의 복잡성 - 부하 분산 어려움
파티션 RM
각 코어는 자신에게 할당된 작업만을 관리하며, RM 알고리즘을 사용하여 주기가 짧은 작업을 먼저 실행한다.
장점: - 일정한 주기 작업에 최적
단점: - 비주기성 작업에 비효율적 - 작업 할당의 복잡성
하이브리드 스케줄링
하이브리드 스케줄링은 전역 스케줄링과 파티션 스케줄링의 장점을 결합하여, 일부 작업은 전역적으로 관리하고, 일부는 파티션에 할당하는 방식이다. 이는 부하 분산과 관리의 용이성을 동시에 제공하며, 특정 작업의 특성에 맞추어 유연하게 대응할 수 있다.
글로벌-로컬 EDF (Global-Local EDF)
글로벌-로컬 EDF에서는 중요한 실시간 작업을 전역적으로 관리하면서, 덜 중요한 작업은 각 코어에 분할하여 관리한다. 중요한 작업은 전역 큐에서 가장 기한이 빠른 작업을 먼저 스케줄링하고, 각 코어는 로컬 큐에서 자신의 작업을 EDF 알고리즘을 통해 관리한다.
장점: - 중요한 작업의 기한 준수율 보장 - 부하 분산 가능
단점: - 구현의 복잡성 - 전역 큐와 로컬 큐 간의 조정 필요
글로벌-로컬 RM (Global-Local RM)
글로벌-로컬 RM에서는 주기가 짧은 중요한 작업을 전역적으로 관리하고, 덜 중요한 작업은 각 코어에 분할하여 관리한다. 중요한 작업은 전역 큐에서 주기가 짧은 작업을 먼저 스케줄링하고, 각 코어는 로컬 큐에서 자신의 작업을 RM 알고리즘을 통해 관리한다.
장점: - 일정한 주기 작업의 효율적 관리 - 부하 분산 가능
단점: - 구현의 복잡성 - 전역 큐와 로컬 큐 간의 조정 필요
상호 운용성 및 실시간 성능
다중 코어 시스템에서 실시간 작업은 상호 운용성을 유지하면서도 높은 성능을 제공해야 한다. 이를 위해 다음과 같은 요소들을 고려해야 한다:
- 상호 배제: 실시간 작업이 공유 자원을 사용할 때는 상호 배제(Mutual Exclusion)를 통해 다른 작업의 접근을 제어해야 한다.
- 우선순위 역전 방지: 우선순위 역전(Priority Inversion)을 방지하기 위해 우선순위 상속(Priority Inheritance) 또는 우선순위 천정(Priority Ceiling) 프로토콜을 사용할 수 있다.
- 캐시 일관성: 다중 코어 시스템에서 캐시 일관성을 유지하기 위해 적절한 메모리 관리 기법이 필요하다.
- 컨텍스트 스위칭 오버헤드: 코어 간 작업 이동 및 컨텍스트 스위칭의 오버헤드를 최소화하기 위한 최적화가 필요하다.
다중 코어 시스템에서의 실시간 스케줄링은 단일 코어 시스템보다 훨씬 더 복잡하지만, 적절한 스케줄링 알고리즘과 자원 관리 기법을 사용하면 실시간 성능을 보장할 수 있다. 전역 스케줄링, 파티션 스케줄링, 하이브리드 스케줄링 등 다양한 방법을 통해 시스템의 특성에 맞는 최적의 스케줄링 방식을 선택하고, 상호 운용성 및 성능 요구 사항을 충족해야 한다.