✅ CPS란?
- 임베디드를 대체할 용어로, 물리적인 시스템인데 컴퓨터(사이버)로 관리되는 시스템을 말한다.
→ 의료 분야, IOT, 자율주행 등에 이용된다.
✅ CPS Requirements
- 안전
- 시스템의 정확도는 타이밍과 계산 결과에 의존한다.
- 성능
- 한정된 자원 안에서 최대 성능을 내야한다.
- 상호 운용성
- 서로 다른 운영체제, 프로토콜 등을 가진 객체들을 잘 통합해야 한다.
- 보안 이슈도 있다.
✅ Real-Time Systems란?
- 실행결과가 논리적으로 정확해야 하며, 시간적으로도 정확해야 한다.
→ 어떤 연산이 정해진 제한 시간 내에 끝나야 한다.
- 성능의 척도
- 어떤 task가 deadline 안으로 들어와야 한다.!!! (가장 중요)
- 속도에 대한 성능은 비교적 덜 중요하다.
- 핵심은.. 타이밍을 미리 예측할 수 있어야 한다.
✅ Real Time에 대한 오해
- 보통 real time이라는 것이 실시간으로 빠르게 작동하는 것이라고 오해한다.
→ 단순히 “빠르다”가 아니라, 예측 가능해야 한다!
→ 평균이 얼마인지는 중요하지 않다.
![강물의 수심은 평균적으로 보면, 빠지지 않지만 실제로는 빠질 것이다!!](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F7abbfd83-18b1-4f9e-90a3-a946ef4c25c7%252FUntitled.png%3Ftable%3Dblock%26id%3De61015b5-38ec-41c4-bf22-b8f931402469%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
✅ Real Time 시스템의 유형
Hard real-time systems
→ 반드시!! 데드라인을 맞춰야 한다.
- 데드라인을 지키지 못하면 목숨이 위험한 경우.
- ex) 비행기, 자동차 ….
- 명확하게 분석해서 worst case인 경우에서도 데드라인을 무조건 지켜야 한다.
Soft real-time systems
→ 여전히 타이밍은 중요하지만, 데드라인을 못 지켜도 큰 문제가 발생하지 않는다.
- 데드라인이 지켜지지 않더라도 목숨이 위험하지 않은 경우.
- ex) TV, Vedio, 컴퓨터 게임 ….
✅ Real Time Scheduling
근본적인 문제
- 스케쥴링 알고리즘에 대한 고민
- 어떤 스케쥴링 알고리즘을 쓸 것인가?
- 스케쥴링 분석 (데드라인을 지킬 수 있을까?)
- 모든 가능한 조합을 다 탐색했는데도 데드라인을 어기지 않는다면 괜찮다.
- 최악의 경우를 분석한다.
✅ Real Time task
Task: 비슷한 job들의 연속
→ Job이 모이면 Task가 된다.
Periodic task (T, C, D)
- T: 주기
- C: 연산 시간
- D: 데드라인
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Fde792cc0-dbfb-4ab9-9175-6202dfc208bc%252FUntitled.png%3Ftable%3Dblock%26id%3Dda58c5a1-0ae9-41e1-b342-e7361f4a7607%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
✅ RM (Rate Monotonic)
- 주기가 짧을수록 task의 우선순위가 높다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F5b6fe46a-c826-4538-8e47-c988a66f4b17%252FUntitled.png%3Ftable%3Dblock%26id%3D3379d12e-7fd0-4d23-af4b-f8f63a4a2b98%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
→ 모든 task가 데드라인을 지킬 수 없다.
✅ Response Time
→ General Purpose os의 관점에서 response time은 프로세스가 도착하고 처음 실행되기까지의 시간 간격을 말하지만, real time에서는 task의 도착하고 실행이 끝날 때까지의 시간 간격을 말한다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F1a166c57-b018-4a5c-a2db-8ed9557784b4%252FUntitled.png%3Ftable%3Dblock%26id%3D67fa5671-8c52-4114-a51a-218695991d63%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
✅ RM - Utilization Bound
→ RM으로 스케쥴이 가능한 task인지 확인하는 방법!
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252F49e083fd-6fd5-4424-a30b-8e5c2054c1a1%252FUntitled.png%3Ftable%3Dblock%26id%3Dfa89956b-08b5-4f41-8faf-b23614e755c2%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
→ 각 Task의 실행시간을 주기로 나눈 것을 모두 더한 값이 n(2^(1/n) - 1)보다 작거나 같으면 된다.
위 예제에서는 3개의 Task가 있다고 가정하고, ΣUi = 1/4 + 1/5 + 1/10 = 0.55이고 3 * (2 ^ (1/3) - 1) = 0.78이다. 따라서, 0.55 ≤ 0.78이므로 RM으로 스케쥴링이 가능하다.
✅ EDF (Earliest Deadline First)
→ 데드라인에 가장 가까울 수록 Task의 우선순위가 높다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fs3-us-west-2.amazonaws.com%252Fsecure.notion-static.com%252Faf0554a8-a5fa-418d-b755-7d41b9da230f%252FUntitled.png%3Ftable%3Dblock%26id%3D3cca4a30-2ef2-4c24-b78b-fe9eb2ddb4ef%26cache%3Dv2&w=3840&q=75&dpl=dpl_9Fy5DR7iXit8HvYKCDvmsFiYTXKA)
- 데드라인이 가장 가까운 T1을 실행한다.
- 현재 데드라인 안에 실행이 되지 않은 task 중, T2가 가장 가까우므로 T2을 실행한다.
- 그 다음 데드라인 안에 실행되지 않은 건 T3뿐이니, T3를 실행한다.
- 위 과정을 반복한다.
✅ EDF - Utilization Bound
→ EDF로 항상 스케쥴링이 가능할 지 확인하는 방법!
- ΣUi ≤ 1 을 만족하면 EDF로 항상 데드라인을 맞출 수 있다.
Share article