김종찬 교수님 실시간 운영체제 및 소프트웨어 강의를 정리한 내용입니다. RTOS를 접하다 보면 Task, deadline, period와 같은 용어들을 자주 만나게 됩니다. 주로 RTOS의 특징인 시간 제약과 관련된 용어인 경우가 많습니다. 강의 내용을 바탕으로 해당 용어들을 정리해보려 합니다.
TOC
RTOS 스케줄링
Task and jobs
Task offset
Release time and deadline
More about Release time
More about deadline
Execution time
RTOS 스케줄링
- 프로세서가 resource가 되서 workload를 해결
- Workload: 해야할 일. Task를 workload라 부른다
- RTOS Schedluer는 CPU를 잘 활용해서 Task N개를 어떻게 잘 실행시켜줄지 결정
RTOS의 workload는 static합니다. 미리 무슨 프로그램을 실행시킬지 결정되어 있습니다. 정해진 일을 반복하고 새로운 프로그램이 올라가지 않습니다.
자동차 제어 분야에서는 아직 싱글코어 CPU를 많이 사용하지만 차츰 멀티코어가 사용되는 추세입니다.
RTOS의 스케줄러의 목적은 모든 task의 timing requirement를 만족시키는 것입니다.
프로그래머가 보는 Workload
프로그래머 관점에서 workload는 Task, ISR과 같은 것입니다. RTOS에서 프로그래밍을 할 때 프로그래머는 main function을 건드리지 않습니다. main function은 OS가 가지고 있고 프로그래머는 Task, ISR을 function 형태로 작성하여 OS에게 제공합니다. OS는 이 function을 가지고 스케줄링을 하게 됩니다.
Task와 ISR의 차이
Task는 정해진 주기 마다 OS가 trigger 시켜줍니다. OS에게 주기를 알려주면 OS가 정해진 시간이 되면 이 함수를 호출해줍니다. 반면 ISR은 OS가 아니라 HW intterupt로 호출됩니다.
Task and jobs
- A job is a unit of work
- A task is a sequence of the same type of jobs
job은 박스 하나 하나를 말합니다. job의 묶음을 task라 합니다. Task A가 10ms 마다 한 번씩 실행된다고 하면 각 주기 마다 실행되는 instance를 job이라 부르고 그 모음을 task라 부릅니다.
Task offset
- Time between the system initialization and the first job release
시스템이 시작을 하면서 시간을 처음 초기화했을 때 task를 동시에 release할 수 있지만 각각을 shifting 시켜서 release 할 수도 있습니다. 위 그림에서 task B는 시작하자마자 실행했지만 task A는 약간 쉬었다가 실행시켰는 데 이를 offset이라 합니다. offset은 대부분의 경우 0입니다.
Release time and deadline
- Release time of job: The time instant at which the job becomes ready to run
- Deadline of a job: The time instant by which the job should complete
그림에서 release 되는 시점은 위로 올라가는 화살표로 표현하고 deadline은 내려오는 화살표로 표현되었다.
Task는 주기적으로 release 됩니다. 여기서 release 된다는 건 OS가 해당 task를 실행해야겠다고 인식하는 것을 말합니다. 어떤 job이 release된 시점에 다른 job도 동시에 release될 수 있습니다. 이 때 cpu가 하나라면 둘 중 하나는 실행이 미뤄져야 됩니다. 'job의 실행은 밀릴 수 있지만 어디까지 밀려도 되는가' 이와 관련된 것이 deadline입니다. Real-Time System에서 말하는 시간 제약이 이 deadline을 말하는 것이며 task가 deadline 이상 밀리면 위험합니다. 그렇기 때문에 Task는 deadline 이전, release time 이후에 실행되면 됩니다.
More about release time
periodic task
- periodic task는 주기적으로 release 되는 task
sporadic task
- sporadic task는 릴리즈와 그 다음 릴리즈까지의 minimum gap을 정의
aperiodic task
- aperiodic task는 규칙이 없는 task
More about deadlines
Absolute deadline
- deadline은 절대적인 단위로 표현
Relative deadline
- deadline을 release time과 상대적인 비교
Implicit deadline
- deadline에 대한 별도의 얘기가 없으면 deadline은 다음 job의 release time(주기)가 된다
- 대부분 여기에 해당
Constrained deadline
- deadline이 period 보다 작은 경우
Execution time
- Each job's execution time
- Jobs may have different execution times even when the jobs belong to the same task - Each task's execution time
- Then, how to model each task's execution time?
execution time은 얼마 동안 job을 cpu에 올려 실행시켜야 일이 끝날 수 있는가 입니다. job을 실행시킬 때 마다 cache의 상태, 분기문의 실행이 달라지므로 같은 task의 서로 다른 job은 실행 시간이 달라질 수 있습니다. 그렇기 때문에 task의 execution time을 정의할 방법이 필요합니다.
Task's execution time
- Deterministic execution time
- Meaning that we have the worst-case execution time(WCET) - Each task's execution time
- When WCET is far from the average, task's execution time should be expressed as a probabilistic function
Task의 실행시간을 측정하기 위해 다양한 입력 값을 주어 정규분포를 그립니다. 그림에서 하얀색 분포가 실제 실행시켜 측정한 실행시간(measured execution time)입니다. 하지만 이 하얀색 분포는 모든 경우를 커버한다고 할 수 없습니다. 이 때 검은색 분포(possible execution time)는 해당 task의 실제 실행 시간입니다. 우리가 알고 싶은 건 이 검은색 분포이지만 이를 아는 건 불가능합니다. 이 중 우리가 특히 관심 있는 건 WCET(Worst-Case Execution Time) 입니다. 어떤 task의 WCET를 분석해주는 SW도 존재합니다.
Reference
'Operating System > RTOS' 카테고리의 다른 글
[OSEK OS] ISR (0) | 2021.07.26 |
---|---|
[OSEK OS] Task와 Event (0) | 2021.07.10 |
RTOS (Real-Time OS) 란? (0) | 2021.06.27 |
OSEK OS란 - OSEK OS overview (1) | 2021.04.07 |