비율 단조 스케줄링
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
비율 단조 스케줄링(RMS)은 고정 우선순위 스케줄링 알고리즘 중 하나로, 프로세스의 주기가 짧을수록 높은 우선순위를 할당하여 실시간 시스템의 데드라인을 준수하도록 설계되었다. 1973년 Liu와 Layland에 의해 이론적 배경이 제시되었으며, CPU 사용률이 특정 한계 이하일 때 모든 데드라인을 충족할 수 있음을 증명했다. RMS는 데드라인 단조 스케줄링(DMS)과 함께 고정 우선순위 스케줄링 알고리즘의 최적성을 보장하며, 자원 공유와 우선순위 역전 문제를 해결하기 위해 우선순위 상속 프로토콜이 사용된다. RMS는 인터럽트 서비스 루틴(ISR)의 스케줄링에도 적용될 수 있으며, 시스템의 스케줄 가능성을 분석하고, 다양한 예시를 통해 알고리즘의 동작을 설명한다.
더 읽어볼만한 페이지
- 스케줄링 알고리즘 - 스케줄링 (컴퓨팅)
스케줄링은 운영 체제가 시스템의 목적과 환경에 맞춰 작업을 관리하는 기법으로, 장기, 중기, 단기 스케줄러를 통해 프로세스를 선택하며, CPU 사용률, 처리량 등을 기준으로 평가하고, FCFS, SJF, RR 등의 알고리즘을 사용한다. - 스케줄링 알고리즘 - 선입 선출
선입 선출(FIFO)은 먼저 들어온 데이터가 먼저 나가는 큐(Queue) 형태의 자료 구조로, 컴퓨터 과학, 전자 공학, 네트워크 장비 등에서 널리 활용된다. - 운영체제 기술 - 프로세스
프로세스는 컴퓨터에서 실행되는 프로그램의 인스턴스로, 운영 체제가 시스템 자원을 효율적으로 관리하며 멀티태스킹 환경에서 독립적인 실행 흐름을 유지한다. - 운영체제 기술 - 커널 (컴퓨팅)
커널은 운영 체제의 핵심으로, 하드웨어와 소프트웨어 간 상호 작용을 관리하며 시스템 보안, 자원 관리, 하드웨어 추상화, 프로세스 스케줄링, 프로세스 간 통신, 다중 작업 환경 지원 등의 기능을 제공하고, 모놀리식, 마이크로, 혼합형 커널 등으로 구현되며 가상화 및 클라우드 컴퓨팅 환경에서 중요성이 커지고 있다.
| 비율 단조 스케줄링 | |
|---|---|
| 개요 | |
| 종류 | 스케줄링 알고리즘 |
| 분류 | 실시간 스케줄링 |
| 특징 | 고정 우선순위, 선점형 |
| 활용 분야 | 실시간 운영 체제(RTOS) |
| 세부 사항 | |
| 우선순위 할당 | 주기가 짧을수록 높은 우선순위 부여 |
| 최적성 | 단일 프로세서 시스템에서 최적의 고정 우선순위 알고리즘 |
| 스케줄 가능성 분석 | 류-레이랜드 한계(Liu-Layland bound) 활용 |
| 장점 | 구현 용이, 예측 가능성 높음 |
| 단점 | CPU 활용률 제한, 주기적인 작업에 적합 |
| 관련 개념 | |
| 관련 개념 | 최단 시간 우선 스케줄링(Earliest Deadline First, EDF) |
| 상호 배제 | 우선순위 역전 현상(Priority Inversion) |
| 상속 프로토콜 | 우선순위 상속 프로토콜(Priority Inheritance Protocol) |
2. 이론적 배경
비율 단조 스케줄링(Rate-Monotonic Scheduling|RMSeng)은 수행 주기가 가장 짧은 프로세스에 가장 높은 우선순위를 부여하는 실시간 시스템 스케줄링 알고리즘이다. 프로세스의 수행 주기 역수인 비율(rate, 단위 시간당 프로세스 수행 횟수)이 높을수록 우선순위가 높아지므로, 비율과 우선순위의 관계는 단조적으로 증가하는 형태를 띤다. 이러한 특성 때문에 '비율 단조'라는 이름이 붙었다.
RMS는 각 프로세스에 부여된 우선순위가 실행 중에 변하지 않는 정적 스케줄링 정책이다. 일반적으로 RMS를 사용하는 운영체제는 선점형으로 동작하며, 이는 우선순위가 높은 프로세스가 실행 준비가 되면 즉시 현재 실행 중인 우선순위가 낮은 프로세스를 중단시키고 CPU를 차지할 수 있음을 의미한다. 이러한 특징 덕분에 응답 시간을 예측하기 용이한 결정적(deterministic) 시스템 구현에 유리하며, 비교적 단순하면서도 효율성이 높아 현재까지도 널리 사용되고 있다.
이 스케줄링 방식은 1973년 Liu와 Layland에 의해 처음 제안되었으며[16], 특정 가정 하에서 시스템의 모든 프로세스가 데드라인을 만족하며 실행될 수 있는지 분석하는 이론적 토대를 마련했다. 주요 가정으로는 프로세스 간 자원 공유가 없고, 데드라인이 주기와 일치하며, 우선순위는 비율 단조 원칙에 따라 정적으로 할당된다는 점 등이 있다. 이러한 가정 하에서 RMS는 정적 우선순위 스케줄링 방식 중 최적(optimal)임이 증명되었다. 즉, 어떤 정적 우선순위 방식으로 스케줄링이 가능한 작업 집합이 있다면, RMS로도 항상 스케줄링이 가능하다는 의미이다.
RMS는 통계적 모델을 기반으로 하며, 특히 라운드 로빈이나 타임 셰어링 방식이 적합하지 않은 실시간 시스템 환경에서 예측 가능한 스케줄링을 제공하는 데 중점을 둔다.
2. 1. 시스템 모델
비율 단조 스케줄링(RMS) 이론에서는 시스템을 아래와 같이 비교적 단순한 모델로 가정한다. 이러한 가정 또는 전제 조건 하에서 RMS의 동작 방식과 성능 분석이 이루어진다.- 모든 프로세스는 단일 CPU에서 주기적으로 구동된다.
- 프로세스의 수행 시간은 일정하며 변하지 않는다.
- 마감시각(데드라인)은 각 프로세스의 실행 주기가 끝나는 시점과 동일하다. 즉, 다음 주기가 시작되기 전까지 이번 실행을 마치면 된다.
- 프로세스들은 서로 자원(하드웨어 자원, 큐, 세마포어 등)을 공유하지 않으며, 자료 종속성이 없다.
- 우선순위는 정적으로 할당되며, 실행 주기가 짧은 프로세스일수록 더 높은 우선순위를 갖는다 (비율 단조 원칙).
- 준비 상태에 있는 프로세스 중 가장 우선순위가 높은 것이 즉시 CPU를 점유하여 실행된다 (선점형).
- 문맥 교환에 걸리는 시간이나 기타 스레드 관련 작업 시간은 무시할 정도로 작다고 가정하여 모델에 고려하지 않는다.
이러한 가정들은 실제 시스템 환경과는 다소 차이가 있을 수 있지만, RMS 알고리즘의 기본적인 특성과 스케줄링 가능성을 분석하기 위한 기반을 제공한다.
2. 2. 스케줄링 가능성 분석
1973년, Liu와 Layland는 고유한 주기를 가진 n개의 주기적 태스크 집합의 경우, CPU 사용률이 특정 경계 미만이면 항상 마감일을 준수하는 스케줄이 존재함을 증명했다.[16] 비율 단조 스케줄링(RMS)에 대한 스케줄링 가능성 검사(충분 조건)는 다음과 같다.:
여기서 U는 총 CPU 사용률, 는 프로세스 의 최악 실행 시간(computation time), 는 프로세스 의 주기(period)이며, n은 스케줄링할 프로세스의 수이다. 이 공식은 각 프로세스의 마감일(deadline)이 주기의 끝과 일치한다고 가정한다.
예를 들어, 두 개의 프로세스(n=2)가 있는 경우, 스케줄링 가능성을 보장하는 CPU 사용률 상한은 이다. 프로세스의 수가 무한대로 증가하면(), 이 상한은 자연로그 2 값으로 수렴한다.
:
따라서, 프로세스 수가 많은 시스템에서는 일반적으로 총 CPU 사용률 U가 약 69.3% 미만이면 RMS 스케줄링이 모든 마감일을 준수할 수 있다고 예측할 수 있다. CPU의 나머지 약 30.7%는 우선순위가 낮은 비실시간 태스크 등에 할당될 수 있다. 그러나 이 69.3%라는 값은 어떤 태스크 조합에서도 스케줄링 가능함을 보장하는 충분조건일 뿐이며, 상당히 보수적인 값이다. 실제 시스템에서는 이보다 높은 사용률에서도 스케줄링이 가능한 경우가 많다. 예를 들어, 임의로 생성된 주기적 태스크 시스템은 활용률이 85%[16] 또는 88%[6] 이하일 때 모든 데드라인을 충족하는 것으로 나타났다는 연구 결과도 있지만, 이는 특정 태스크 집합의 통계적 특성에 의존하며 모든 경우에 보장되는 것은 아니다.
다음은 3개의 프로세스가 있는 시스템의 예시이다.
| 프로세스 | 실행 시간 () | 주기 () |
|---|---|---|
| P1 | 1 | 8 |
| P2 | 2 | 5 |
| P3 | 2 | 10 |
위 표로부터 구한 총 CPU 사용률(U)은 다음과 같다.
:
3개의 프로세스(n=3)에 대해 스케줄링 가능성을 보장하는 Liu-Layland 상한()은 다음과 같다.
:
계산된 총 CPU 사용률 가 상한 보다 작으므로 (), 이 시스템은 RMS로 스케줄링 가능하다고 결론 내릴 수 있다.
하지만 이 Liu-Layland 조건은 충분조건일 뿐 필요조건은 아니다. 즉, 시스템의 총 CPU 사용률이 이 상한을 초과하더라도 스케줄링이 불가능하다고 단정할 수는 없다.
'''조화 태스크 집합 (Harmonic Task Set)'''
만약 태스크 집합의 모든 태스크 주기가 다른 모든 태스크 주기의 정수배 관계에 있다면 (예: 주기가 [2, 6, 12]인 경우), 이를 조화 작업 집합(harmonic task set)이라고 한다. Liu와 Layland는 이러한 조화 태스크 집합의 경우, 스케줄링 가능성 상한이 1.0 (즉, 100%)까지 완화될 수 있음을 보였다. 즉, 조화 태스크 집합은 CPU 자원을 완전히 활용하면서도 스케줄링이 가능하다.
Kuo와 Mok[5]은 이를 일반화하여, 태스크 집합이 K개의 조화 태스크 부분 집합(harmonic chains)으로 구성될 경우, 스케줄링 가능성 검사 상한은 다음과 같음을 보였다.
:
만약 모든 태스크가 서로 조화 관계에 있다면 K=1이 되어 상한은 1.0이 되고, 각 태스크가 자신만의 조화 부분 집합을 형성한다면 K=n이 되어 원래의 Liu-Layland 상한과 같아진다.
'''쌍곡선 경계 (Hyperbolic Bound)'''
Liu-Layland 조건보다 더 정확한(덜 보수적인) 스케줄링 가능성 충분 조건으로 쌍곡선 경계[7]가 제안되었다.
:
여기서 는 각 개별 태스크의 CPU 사용률이다. 이 조건은 개별 태스크 사용률만을 사용하여 스케줄링 가능성을 판단하는 가장 엄밀한 충분 조건 중 하나이다.
다음 예시를 통해 Liu-Layland 경계와 쌍곡선 경계를 비교해 보자.
| 프로세스 | 실행 시간 () | 주기 () | 사용률 () |
|---|---|---|---|
| P1 | 3 | 16 | 3/16 = 0.1875 |
| P2 | 2 | 5 | 2/5 = 0.4 |
| P3 | 2 | 10 | 2/10 = 0.2 |
총 사용률 이다.
3개 프로세스에 대한 Liu-Layland 상한은 이다.
이므로, Liu-Layland 경계만으로는 이 시스템의 스케줄링 가능성을 보장할 수 없다.
이제 쌍곡선 경계를 적용해 보자.
:
계산 결과 이므로, 쌍곡선 경계 조건은 만족한다. 따라서 이 태스크 집합은 RMS로 스케줄링 가능하다는 것을 알 수 있다.
다른 예시를 보자.
| 프로세스 | 실행 시간 () | 주기 () | 사용률 () |
|---|---|---|---|
| P1 | 7 | 32 | 7/32 = 0.21875 |
| P2 | 2 | 5 | 2/5 = 0.4 |
| P3 | 2 | 10 | 2/10 = 0.2 |
총 사용률 이다.
Liu-Layland 상한 보다 크므로(), 스케줄링 가능성을 보장할 수 없다.
쌍곡선 경계를 적용하면,
:
계산 결과 이므로, 쌍곡선 경계 조건도 만족하지 못한다. 이 경우, 스케줄링 가능성을 보장할 수 없다.
하지만 이 예시에서 P2(주기 5)와 P3(주기 10)는 주기가 정수배 관계()이므로 조화 태스크 부분 집합을 이룬다. P1은 자체적으로 하나의 부분 집합을 형성한다. 따라서 이 태스크 집합은 K=2개의 조화 태스크 부분 집합으로 볼 수 있다. Kuo-Mok의 공식을 적용하면,
:
총 사용률 는 이 상한보다 작으므로(), 이 시스템은 스케줄링 가능하다는 결론을 내릴 수 있다.
이처럼 다양한 스케줄링 가능성 분석 방법을 통해 시스템의 특성에 맞는 더 정확한 판단을 내릴 수 있다. Liu-Layland 조건은 가장 간단하지만 보수적이며, 조화 태스크 집합 조건이나 쌍곡선 경계는 특정 경우에 더 높은 CPU 사용률에서도 스케줄링 가능성을 증명할 수 있게 해준다.
2. 3. 최적성
비율 단조 스케줄링(RMS)의 우선순위 할당 방식은 주어진 가정 하에서 '''최적'''(optimal)이다. 이는 다른 어떤 정적 우선순위 스케줄링 알고리즘이 모든 데드라인을 만족시킬 수 있다면, RMS 역시 모든 데드라인을 만족시킬 수 있다는 의미이다.기한 단조 스케줄링(Deadline-Monotonic Scheduling, DMS)은 데드라인이 주기와 같거나 짧을 때 최적의 알고리즘이다.[3][17] 특히 데드라인과 주기가 같다면 RMS와 DMS는 사실상 동일한 알고리즘으로 간주될 수 있으며, 데드라인이 주기보다 짧을 때는 DMS가 최적이다.[3]
데드라인이 주기보다 길 수 있는 작업 모델에서는, Audsley의 알고리즘이 최적의 우선순위 할당을 찾는 데 사용될 수 있다.[4]
1973년 Liu와 Layland는 개의 독립적인 주기적 작업이 있을 때, CPU 사용률()이 특정 한계() 이하이면 RMS를 통해 모든 데드라인을 만족하며 스케줄링할 수 있음을 증명했다. 이 한계는 작업 수()가 무한히 커질 경우 , 즉 약 69.3%로 수렴한다.
:
:
따라서, RMS가 어떤 작업 조합에서든 스케줄링 가능함을 보장하는 CPU 사용률의 하한선은 약 69.3%이다. 하지만 이는 '''충분 조건'''일 뿐이며, 실제로는 이보다 높은 사용률에서도 스케줄링이 가능한 경우가 많다. 예를 들어, 무작위로 생성된 작업 집합의 경우 CPU 사용률이 85% 이하일 때 대부분 스케줄링 가능하다는 연구 결과도 있다.[16] 그러나 이는 통계적인 결과이며 모든 경우에 보장되는 것은 아니다.
데드라인이 주기보다 긴 경우에 대한 최적의 고정 우선순위 스케줄링 방법은 아직 완전히 해결되지 않은 문제로 남아 있다.
3. 한계 및 개선
비율 단조 스케줄링(RMS)은 이론적으로 효율적이지만 몇 가지 중요한 한계점을 가지고 있으며, 이를 보완하기 위한 개선 방안들이 연구되었다.
RMS의 주요 가정 중 하나는 태스크들이 서로 독립적이며 자원을 공유하지 않는다는 것이지만, 실제 시스템에서는 자원 공유가 빈번하게 발생한다. 이로 인해 우선순위 역전 현상이나 교착 상태가 발생할 수 있다. 이러한 문제는 시스템의 예측 가능성을 저해하고 심각한 오작동을 유발할 수 있으며, 이를 해결하기 위해 선점 금지 구간 설정, 우선순위 상속 프로토콜, 락 프리 알고리즘 사용 등 다양한 기법이 적용된다. (자세한 내용은 하위 문단 참고)
또한, RMS는 모든 태스크의 데드라인이 자신의 주기와 같다고 가정한다. 하지만 실제로는 데드라인이 주기보다 짧거나 긴 경우가 존재한다. 데드라인과 주기가 같은 경우에는 RMS가 최적의 고정 우선순위 스케줄링 알고리즘이지만, 데드라인이 주기보다 짧은 경우에는 데드라인 모노토닉 스케줄링(DMS)이 최적이다.[17] 데드라인이 주기보다 긴 경우에 대한 최적 고정 우선순위 스케줄링 방법은 아직 명확히 정립되지 않은 문제이다.
1973년 Liu와 Layland는 RMS가 주어진 태스크 집합을 성공적으로 스케줄링할 수 있는지 판단하는 충분 조건을 제시했다. n개의 주기적인 태스크가 있을 때, 총 CPU 이용률()이 다음 조건을 만족하면 모든 태스크가 데드라인을 만족하며 스케줄링될 수 있다.
:
여기서 는 태스크 의 실행 시간, 는 태스크 의 주기이다. 태스크의 수가 무한히 많아질 경우, 이 상한값은 , 즉 약 69.3%로 수렴한다.
:
이는 어떤 태스크 조합이 주어지더라도 RMS가 스케줄링 가능함을 보장하는 충분 조건이다. 즉, CPU 이용률이 69.3% 이하면 항상 스케줄링이 가능하지만, 69.3%를 넘는다고 해서 반드시 스케줄링이 불가능한 것은 아니다. 실제로 많은 경우, 특히 태스크들의 주기가 조화롭게 분포되어 있다면, 훨씬 높은 CPU 이용률(예: 85% 이상[16])에서도 모든 데드라인을 만족하며 스케줄링될 수 있다. 그러나 이는 특정 조건 하에서의 통계적인 결과이며, 모든 경우에 보장되는 것은 아니다. 따라서 시스템 설계 시에는 이 충분 조건을 기준으로 안정성을 확보하거나, 개별 시스템의 특성을 고려한 정밀한 스케줄링 가능성 분석이 필요하다.
3. 1. 자원 공유 및 우선순위 역전
실용적인 많은 응용 분야에서는 프로세스들이 자원을 공유해야 하는 경우가 많다. 이로 인해 수정되지 않은 '''RMS'''는 우선순위 역전 및 교착 상태의 위험에 노출될 수 있다. 이러한 문제는 주로 선점(preemption)을 금지하거나 우선순위 상속 기법을 사용하여 해결한다. 또는 락 프리 알고리즘을 사용하거나, 서로 다른 우선순위를 가진 스레드 간에 뮤텍스나 세마포어 공유를 피하는 방법을 통해 애초에 자원 충돌이 발생하지 않도록 설계할 수도 있다.우선순위 상속은 낮은 우선순위의 태스크가 높은 우선순위 태스크가 필요로 하는 자원(락)을 점유하고 있을 때, 일시적으로 낮은 우선순위 태스크의 우선순위를 해당 높은 우선순위 태스크만큼 높여주는 방식이다. 이를 통해 높은 우선순위 태스크가 불필요하게 오래 기다리는 상황을 방지한다.
주요 우선순위 상속 관련 기법 및 프로토콜은 다음과 같다.
- '''CPU 인터럽트 잠금''': 실시간 커널(uC-OS II 등)에서 ''OSIntEnter()'' 및 ''OSIntExit()''와 같은 함수를 사용하여 CPU 인터럽트를 일시적으로 비활성화한다.
- '''장치 인터럽트 잠금''': 리눅스 커널 등에서 ''splx()''와 같은 함수를 사용하여 특정 장치 인터럽트를 잠근다.
- '''최고 로커 프로토콜''' (Highest Locker Protocol): 모든 태스크 간의 자원 충돌 가능성을 미리 분석하여 각 자원에 접근할 수 있는 태스크 중 가장 높은 우선순위를 "상한 우선순위"로 설정한다.
- '''기본 우선순위 상속 프로토콜''' (Basic Priority Inheritance Protocol)[18]: 낮은 우선순위 태스크가 보유한 락을 높은 우선순위 태스크가 요청하면, 락을 해제할 때까지 낮은 우선순위 태스크의 우선순위를 높은 우선순위 태스크의 수준으로 올린다.
- '''우선순위 상한 프로토콜''' (Priority Ceiling Protocol)[19]: 기본 우선순위 상속 프로토콜을 개선한 방식으로, 각 세마포어에 해당 세마포어를 사용할 가능성이 있는 모든 태스크 중 가장 높은 우선순위를 "상한 우선순위"로 할당한다. 낮은 우선순위 태스크가 세마포어를 획득하면, 그 태스크의 현재 우선순위를 상한 우선순위와 자신의 우선순위 중 더 높은 값으로 즉시 올린다. 이를 통해 상한 우선순위보다 낮은 다른 태스크가 선점하는 것을 막는다.
우선순위 상속 알고리즘은 두 가지 기준으로 분류할 수 있다. 첫째는 상속이 필요한 시점에만 '지연'되어 발생하는지, 아니면 충돌 가능성이 있을 때 미리 '즉시' 발생하는지 여부이다. 둘째는 상속 범위를 최소한으로 '낙관적'으로 적용하는지, 아니면 필요 이상으로 넓게 '비관적'으로 적용하는지 여부이다.
| 비관적 | 낙관적 | |
|---|---|---|
| 즉시 | OSIntEnter/Exit() | splx(), 최고 로커 프로토콜 |
| 지연 | (해당 없음) | 우선순위 상한 프로토콜, 기본 우선순위 상속 프로토콜 |
수학적으로는 지연 알고리즘과 즉시 알고리즘 간에 큰 차이가 없으나, 즉시 알고리즘이 구현하기 더 효율적이어서 많은 실제 시스템에서 사용된다.
기본 우선순위 상속 프로토콜은 "블로킹 연쇄"(chain blocking) 문제를 일으킬 수 있다. 즉, 높은 우선순위 태스크가 임계 구역(critical section)에 진입하기 위해 여러 개의 낮은 우선순위 태스크들이 순차적으로 자원을 점유하고 해제하기를 기다려야 하는 상황이 발생하여 대기 시간이 길어질 수 있다. 반면, 우선순위 상한 프로토콜 등 다른 프로토콜들은 높은 우선순위 태스크가 임계 구역 진입 전에 최대 하나의 낮은 우선순위 태스크의 임계 구역 실행만 기다리도록 보장한다.
우선순위 상한 프로토콜은 VxWorks와 같은 실시간 운영체제에서도 사용 가능하지만, 실제로는 자주 사용되지 않는 경향이 있다.
기본 우선순위 상속 기법이 문제 해결에 사용된 대표적인 사례로 마스 패스파인더 탐사선의 소프트웨어 버그 해결 과정이 있다. 화성 탐사 중 발생한 시스템 리셋 문제를 해결하기 위해 우선순위 상속 기법이 적용되었다.
3. 2. 우선순위 상속 프로토콜
실제 많은 응용 분야에서 자원은 공유되며, 수정되지 않은 RMS는 우선 순위 역전 및 교착 상태 위험에 노출될 수 있다. 실제로 이러한 문제는 선점 금지 또는 우선 순위 상속 프로토콜을 통해 해결된다. 대안적인 방법으로는 락 프리 알고리즘을 사용하거나, 서로 다른 우선 순위를 가진 스레드 간의 뮤텍스/세마포어 공유를 피하여 애초에 자원 충돌이 발생하지 않도록 하는 방법이 있다.- '''기본 우선 순위 상속 프로토콜'''(Basic Priority Inheritance Protocol)[8][18]은 낮은 우선순위 태스크가 자원을 점유하고 있을 때, 더 높은 우선순위의 태스크가 해당 자원을 요청하면, 자원을 점유한 낮은 우선순위 태스크의 우선순위를 요청한 높은 우선순위 태스크의 수준으로 일시적으로 승격시키는 방식이다. 자원이 해제되면, 해당 태스크는 원래의 우선순위로 복원된다. 이 방법은 교착 상태를 방지하지 못하며, '''체인 블로킹'''(chain blocking)으로 인해 어려움을 겪는다. 즉, 높은 우선 순위의 태스크가 여러 공유 자원에 순차적으로 접근하는 경우, 각 자원에 대해 낮은 우선 순위의 태스크를 기다려야(블로킹) 할 수 있다.[9] Linux 커널의 [https://rt.wiki.kernel.org/index.php/Main_Page 실시간 패치]에는 이 프로토콜의 구현이 포함되어 있다.[10] 마스 패스파인더 탐사선의 재설정 버그[13][14]는 이 프로토콜과 관련된 유명한 사례로, 화성 현지에서 세마포어 생성 플래그를 변경하여 우선순위 상속을 활성화함으로써 문제를 해결했다.
- 우선 순위 천장 프로토콜(Priority Ceiling Protocol)[11][19]은 기본 우선 순위 상속 프로토콜을 개선한 방식이다. 각 세마포어에 ''천장 우선순위''(priority ceiling)를 할당하는데, 이는 해당 세마포어에 접근할 수 있는 가장 높은 태스크의 우선 순위이다. 태스크는 해당 섹션의 천장 우선 순위보다 우선 순위가 낮으면 낮은 우선 순위의 임계 섹션을 선점할 수 없다. 이 방법은 교착 상태를 방지하고 블로킹 시간을 최대 하나의 낮은 우선 순위 임계 섹션 실행 시간으로 제한한다. 하지만 때로는 불필요한 블로킹을 유발할 수 있어 최적이 아닐 수 있다. 우선 순위 천장 프로토콜은 VxWorks 실시간 커널에서 사용할 수 있으며, '''가장 높은 로커의 우선 순위 프로토콜'''(Highest Locker's Priority Protocol, HLP)이라고도 한다.[12] 그러나 실제 사용 빈도는 낮은 것으로 알려져 있다.
우선 순위 상속 알고리즘은 두 가지 매개변수로 특징지을 수 있다. 첫째, 상속이 지연(필수적인 경우에만)되는지 아니면 즉시(충돌 전에 우선 순위가 높아짐)되는지 여부이다. 둘째, 상속이 낙관적(최소량만큼 증가)인지 비관적(최소량 이상으로 증가)인지 여부이다.
| 비관적 | 낙관적 | |
|---|---|---|
| 즉시 | OSIntEnter() / OSIntExit() (CPU 인터럽트 잠금, 예: uC-OS II) | splx() (장치 인터럽트 잠금, 예: Linux) 최고 로커 우선순위 프로토콜 (HLP) |
| 지연 | (해당 없음) | 우선 순위 천장 프로토콜, 기본 우선 순위 상속 프로토콜 |
실제로 지연 알고리즘과 즉시 알고리즘 사이에는 수학적 차이가 없으며, 즉시 알고리즘이 구현하기에 더 효율적이므로 대부분의 실제 시스템에서 사용되는 경향이 있다.
4. 인터럽트 서비스 루틴 (ISR)
모든 인터럽트 서비스 루틴(ISR)은 하드 실시간 데드라인 유무와 관계없이, ISR의 우선순위가 모든 스케줄러 제어 작업보다 높다면 RMS 분석에 포함되어 스케줄 가능성을 결정해야 한다.
ISR의 처리 주기가 가장 짧은, ISR이 아닌 작업의 주기보다 짧으면, RMS 규칙에 따라 이미 적절하게 우선순위가 지정될 수 있다. 그러나 중요한 데드라인을 가진 ISR이 아닌 작업의 주기보다 긴 주기/데드라인을 가진 ISR은 RMS 규칙을 위반하며, 작업 세트의 스케줄 가능성 분석을 어렵게 만든다.
이렇게 잘못된 우선순위를 가진 ISR 문제를 해결하는 방법은 다음과 같다.
- 주기 조정 분석: 분석 과정에서 ISR의 주기를 실제보다 짧게, 즉 가장 짧은 주기를 가진 작업의 주기와 같다고 가정하는 방법이다. 이렇게 하면 분석상으로는 RMS 규칙을 만족하는 우선순위를 부여할 수 있다. 다만, 이 경우 ISR의 사용률 계수()와 전체 시스템의 총 사용률 계수가 실제보다 높게 계산된다. 이 계산된 총 사용률이 스케줄 가능성 상한선보다 낮다면, 시스템은 스케줄 가능하다고 판단할 수 있다.
- 예시: ISR의 계산 시간()이 500 마이크로초이고 주기()가 4 밀리초라고 가정하자. 만약 가장 짧은 주기를 가진 스케줄러 제어 작업의 주기()가 1 밀리초라면, ISR은 우선순위는 높지만 주기가 더 길어 RMS 규칙을 위반한다. 스케줄 가능성을 분석하기 위해 ISR의 주기를 밀리초로 가정한다. 그러면 ISR의 사용률 계수 는 원래 에서 로 증가한다. 이 증가된 사용률 계수를 사용하여 총 사용률을 계산하고 스케줄 가능성 상한과 비교한다.
- 주의: 이 주기 조정은 어디까지나 분석을 위한 가정일 뿐, 실제 ISR의 실행 주기가 바뀌는 것은 아니다.
5. 예제
RMS가 적용된 시스템에서 스케줄링 가능성을 분석하는 예시는 다음과 같다.
=== 예제 1 ===
다음과 같이 3개의 프로세스가 있다고 가정한다.
| 프로세스 | 실행 시간 (C) | 주기 (T) |
|---|---|---|
| P1 | 1 | 8 |
| P2 | 2 | 5 |
| P3 | 2 | 10 |
RMS에서는 주기가 가장 짧은 프로세스에 가장 높은 우선순위를 부여한다. 따라서 우선순위는 P2(주기 5) > P1(주기 8) > P3(주기 10) 순서가 된다.
| 프로세스 | 실행 시간 C | 주기 T | 우선순위 |
|---|---|---|---|
| P1 | 1 | 8 | 2 |
| P2 | 2 | 5 | 1 |
| P3 | 2 | 10 | 3 |
이 프로세스들의 총 CPU 사용률(Utilization Factor)은 다음과 같이 계산된다.
:
Liu와 Layland의 정리에 따르면, n개의 프로세스가 있을 때 스케줄링이 가능하기 위한 충분조건은 다음과 같다.
:
이 예제에서는 프로세스가 3개(n=3)이므로, 스케줄링 가능성을 보장하는 CPU 사용률의 상한(, Least Upper Bound)은 다음과 같다.
:
계산된 총 CPU 사용률 는 상한 보다 작으므로 (), 이 프로세스 집합은 RMS에 의해 스케줄링이 가능하다고 결론 내릴 수 있다.
=== 예제 2 ===
다음과 같이 3개의 프로세스가 주어졌다고 가정한다.
| 프로세스 | 실행 시간 C | 주기 T | 우선순위 |
|---|---|---|---|
| P1 | 3 | 16 | 3 |
| P2 | 2 | 5 | 1 |
| P3 | 2 | 10 | 2 |
RMS에 따라 우선순위는 P2(주기 5) > P3(주기 10) > P1(주기 16) 순서가 된다. 총 CPU 사용률은 다음과 같다.
:
Liu와 Layland의 스케줄링 가능성 충분조건 상한은 예제 1과 같이 이다. 계산된 총 CPU 사용률 는 이 상한보다 크므로 (), Liu와 Layland의 조건만으로는 스케줄링 가능성을 보장할 수 없다.
이 경우, 더 정확한 분석 방법인 쌍곡선 경계(Hyperbolic Bound) 조건을 사용할 수 있다.
:
여기서 이다.
:
계산 결과 이므로, 쌍곡선 경계 조건에 따라 이 프로세스 집합은 스케줄링이 가능하다고 판단할 수 있다.
=== 예제 3 ===
다음과 같이 3개의 프로세스가 주어졌다고 가정한다.
| 프로세스 | 실행 시간 C | 주기 T | 우선순위 |
|---|---|---|---|
| P1 | 7 | 32 | 3 |
| P2 | 2 | 5 | 1 |
| P3 | 2 | 10 | 2 |
RMS에 따른 우선순위는 P2(주기 5) > P3(주기 10) > P1(주기 32) 순서이다. 총 CPU 사용률은 다음과 같다.
:
Liu와 Layland의 충분조건 상한 보다 크므로(), 이 조건으로는 스케줄링 가능성을 보장할 수 없다.
쌍곡선 경계 조건을 적용해 본다.
:
계산 결과 이므로, 쌍곡선 경계 조건으로도 스케줄링 가능성을 보장할 수 없다.
하지만 이 경우, 프로세스 P2와 P3의 주기가 각각 5와 10으로, P3의 주기가 P2 주기의 정확히 2배()인 조화 관계(harmonic relationship)에 있음을 알 수 있다. 이렇게 주기가 서로 정수배 관계인 프로세스들을 조화 태스크 부분 집합(harmonic task subset)으로 묶을 수 있다. 여기서는 {P2, P3}가 하나의 조화 부분 집합을 이루고, P1은 자체적으로 또 다른 부분 집합을 형성한다. 따라서 조화 태스크 부분 집합의 수 K는 2이다.
조화 태스크 부분 집합을 고려한 스케줄링 가능성 충분조건 상한은 다음과 같다.
:
이 예제에서는 K=2이므로,
:
계산된 총 CPU 사용률 는 조화 태스크 부분 집합을 고려한 상한 보다 작으므로 (), 이 프로세스 집합은 스케줄링이 가능하다고 결론 내릴 수 있다.
이처럼 Liu & Layland 조건이나 쌍곡선 경계 조건으로 스케줄링 가능성이 보장되지 않더라도, 조화 태스크 부분 집합 분석 등 더 세밀한 분석을 통해 스케줄링 가능성을 확인할 수 있는 경우가 있다.
참조
[1]
논문
Scheduling algorithms for multiprogramming in a hard real-time environment
[2]
간행물
Understanding the Linux Kernel
http://oreilly.com/c[...]
2014-09-21
[3]
논문
On the complexity of fixed-priority scheduling of periodic, real-time tasks
[4]
서적
Real-Time Systems and Programming Languages
Addison-Wesley
[5]
서적
"[1991] Proceedings Twelfth Real-Time Systems Symposium"
[6]
간행물
IEEE Real-Time Systems Symposium
[7]
논문
Rate Monotonic Analysis: the Hyperbolic Bound
[8]
논문
Experience with processes and monitors in Mesa
[9]
서적
Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications
Springer
[10]
웹사이트
Real-Time Linux Wiki
https://rt.wiki.kern[...]
kernel.org
2008-03-26
[11]
논문
Priority inheritance protocols: an approach to real-time synchronization
[12]
서적
Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications
Springer
[13]
웹사이트
Mike Jones at Microsoft Research
http://research.micr[...]
[14]
웹사이트
Mars Pathfinder Reset Bug - Anthology of Interest
http://anthology.spa[...]
2008-09-09
[15]
논문
Scheduling algorithms for multiprogramming in a hard real-time environment
[16]
간행물
The Rate monotonic scheduling algorithm: exact characterization and average case behavior
1989-12
[17]
논문
On the complexity of fixed-priority scheduling of periodic, real-time tasks
1982-12
[18]
논문
Experience with Processes and Monitors in Mesa
1980-02
[19]
논문
Priority inheritance protocols: an approach to real-time synchronization
1990-09
[20]
웹사이트
경성 실시간 태스크를 위한 확장된 스케줄 가능성 검사를 갖는 비율단조 스케줄러
http://www.dbpia.co.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com