⚒️ Real-time Task
- 시스템이 처리하는 일이 deadline이 존재하거나 특정 시간 내로 처리해야 하는 류의 specification이 정해지는 일들을 뜻한다.
- Real-time Task들이 있는 System을
Real-time System
이라고 한다.
Soft Real-time Systems
ex) linux
- Real-time Task 와 Non-Real-time Task들이 혼재되어 있는 상황에서, 시스템이 Real-time Task를 조금 더 신경써서 처리해 주기는 하지만, 무조건 deadline에 맞춰서 끝내줄거라는 보장이 없는 시스템이다.
Hard Real-time Systems
- Real-timeness를 무조건 만족시켜야 하는 시스템이다.
만족하지 못하는 경우 그 시스템은 그냥 망한 것이라고 보면 된다. ex) 비행기, 자동차, 로봇 등
- 보통 hard deadline이 정해져 있다. deadline 넘어가면 안한 것만 못한다.
- 운영체제가 만들어질 때 부터 job들을 describe 하는데, 이 task는 반드시 언제 끝날 수 있다는 것이 보장된다.
Real-time CPU Scheduling
- 긴 task들을 작은 task로 쪼갠 다음에, 각각의 deadline이 정해져 있는 작은 task들이 쫙 하나씩 들어오는 형태.
어떤 순으로 처리해야 deadline을 놓치는 애 없이 시스템을 모두 완료 시킬 수 있을까?
- priority-based 스케줄링이 기본이 될 수 밖에 없을 것이다. 온 순서대로 처리하면 보통 deadline 맞추기 어려움.
RMS (Rate Monotonic Scheduling)
rate
가 제일 높은 애가 priority가 높다.
: 주기가 가장 짧은 프로세스를 먼저 스케줄링하겠다. (rate는 period의 역수)
- priority-based (rate가 priority로 정의)
static priority
: 우선순위가 중간에 바뀌지 않는다.
- preemptive
- 모든 task들이 데드라인을 놓치지 않고 모두 스케줄링 다 됐다!
: RMS로 real-time schedulable한 task들이다.
어떤 한 방식의 스케줄링으로 만족 못시킨다고 해서 real-timeness를 보장하지 못하는 것은 아니다. 다른 스케줄링 방식으로 찾아보면 됨.
- RMS로 스케줄링이 안되면 다른 어떤 static priority 형태를 가진 스케줄링 방식이 오더라도 처리 안됨.
- RMS로 처리 안됐던게 다른 방식으로 처리 됐으면 그것은 static priority 형태가 아니였던 것임.
EDF (Earliest Deadline First)
deadline
이 빠른 애들이 priority가 높다.
- priority-based (deadline이 priority로 정의)
dynamic priority
: 우선순위가 중간에 바뀐다.
- preemptive
- EDF는 CPU 백퍼센트를 써서 스케줄러블이 가능한가 안가능한가를 결정짓는다.
-> CPU Utilization을 100%까지 끌어올릴 수 있는 효율적인 스케줄링 방식이다.