Real-Time System 은 외부의 이벤트에 대해 정해진 시간 안에 적절하게 반응해야 하는 시스템이다.
디스크 플레이어를 예로 들면, 디스크에 담긴 디지털 음원 데이터를 바로바로 디코딩해야 끊김없이 노래를 들을 수 있다.
자동 조립 로봇, 자동 항법 시스템과 같은 경우도 모두 실시간 시스템의 한 예시이다.
실시간 시스템은 올바른 답을 '정해진 시간 안에' 내놓는 것이 매우 중요하다.
정해진 시간 안에 답을 내놓지 못하는 실시간 시스템은 잘못된 답을 내보내는 시스템과 똑같이 나쁜 시스템이다.
실시간 시스템은 크게 2가지로 구분된다.
1. Hard Real Time : 절대적인 데드라인이 반드시 지켜져야 한다.
2. Soft Real Time : 때때로 데드라인을 못 지켜도 (바람직하지는 않지만) 괜찮다.
미사일이나 항법장치 같은 경우에는 작은 실수가 큰 문제로 이어질 수 있으므로 Hard Real Time 에 속하고,
CD 플레이어같은 경우에는 가끔은 못 지켜도 치명적인 문제는 아니므로 Soft Real Time 에 해당한다.
실시간 시스템은 그 프로그램을 여러 프로세스로 잘게 나누고, 각각의 프로세스들의 동작이 예측 가능하도록 만든다.
실시간 시스템은 외부의 이벤트에 대해 정해진 시간 안에 반응해야 하는 시스템이라고 정리하였다.
이때 '외부의 이벤트'는 크게 2가지로 구분할 수 있다.
1. 주기적인 이벤트
2. 비주기적인 이벤트
이때, 어떤 real-time system 에 대해, 그 시스템이 모든 이벤트를 데드라인 안에 처리할 수 있다면 그 시스템은 schedulable 하다고 표현한다. (Schedulable real-time system)
이제 실시간 시스템의 스케줄링 방법을 정리해본다.
이때 이 시스템에 들어오는 외부 이벤트의 종류는 주기적인 이벤트가 들어오는 경우만 고려한다.
먼저 m개의 주기적인 이벤트가 들어온다고 할 때,
i번째 이벤트는 Pᵢ 주기로 오며, 각 이벤트를 처리하는 데에는 Cᵢ 시간이 소요된다고 해보자.
만약 이 시스템이 schedulable 하다면 (또는 the load can be handled 라고도 한다.) 다음과 같은 수식을 만족한다.
예를 들어 ms 단위의 '주기(처리시간)' 형태로 이벤트를 나열 할 때, 3개의 주기적인 이벤트를 처리하는 시스템이 있다고 해보자.
각 이벤트는 100(50), 200(30), 500(100) 이라고 하면, 이 시스템이 schedulable 한 지 확인할 때는
50/100 + 30/200 + 100/500 = (500 + 150 + 200) / 1000 = 850 / 1000 이므로 1보다 작다.
따라서 이 시스템은 schedulable 하다.
만약 이 상태에서 주기가 1초인 이벤트를 하나 더 추가한다고 하면, 그 이벤트의 CPU time 은 150ms 이하여야 한다.
이번엔 다른 예시를 살펴보자.
2개의 이벤트가 주어지고 각 이벤트는 100(50), 50(25) 라고 해보자.
이 시스템이 schedulable 한 지 확인해보면 1/2 + 1/2 = 1 이므로 schedulable 하다.
이 두 시스템이 처리되는 과정을 그림으로 그려보면 아래와 같이 그릴 수 있다.
먼저 빨간색 영역으로 나타낸 것이 두번째 이벤트이다.
0에 발생한 두번째 이벤트는 데드라인이 50이므로 50 전에 처리해야 한다.
50에 발생한 두번째 이벤트는 데드라인이 100 이므로 100 전에 처리해야 한다.
지금 그림과 같이 처리하면 각각의 데드라인 전에 모두 처리할 수 있다.
이제 여기에 첫번째 이벤트를 처리해보자.
여기에서 첫번째 이벤트를 처리하면 0에 발생한 첫번째 이벤트는 100이 데드라인이므로 100 전에 이렇게 사이사이를 채워서 실행하여 처리하고, 100에 발생한 두번째 이벤트는 200이 데드라인이므로, 200 전에 사이사이를 채워서 실행하여 처리하면 된다.
이렇게 처리하고 보면 전체 처리 영역이 모두 칠해졌음을 확인할 수 있다.
이것이 schedulable 계산 결과가 1 이라는 것의 의미이다.
실시간 시스템의 스케줄링 알고리즘은 정적 스케줄링과 동적 스케줄링으로 나뉜다.
정적 스케줄링은 시스템이 시작하기 전에 이미 스케줄링 알고리즘을 결정해두고, 이를 고정적으로 적용하는 것이고
동적 스케줄링은 시스템이 실행하는 중에 스케줄링을 결정한다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 12. 스레드 (0) | 2024.10.21 |
---|---|
[운영체제] 11. 스케줄링 (5) - Policy vs. Mechanism (0) | 2024.10.21 |
[운영체제] 9. 스케줄링 (3) - Interactive System 스케줄링 (0) | 2024.10.20 |
[운영체제] 8. 스케줄링 (2) - Batch System 스케줄링 (2) | 2024.10.20 |
[운영체제] 7. 스케줄링 (1) - 개요 (0) | 2024.10.20 |