1. Event
- 다른 task가 발생시킴, Interrupt일 수도 있음
- extended tasks일때만 제공
- 실행순서를 정해줄때 사용
- preemptible 와 non-preemptible 일때 서로 스케줄링 behavior가 달라짐
1) preemptable(priority : T1 > T2)
- T2가 수행중인 상태에서 이벤트를 발생시키면 스케줄러가 활성화된다.
- T1은 waiting 상태에서 ready상태로 변경된다.
- T1의 우선순위가 T2보다 높고 preemptive이기 때문에 작업이 전환된다.
2) non-preemptable(priority : T1 > T2)
- non-preemptive스케줄링일때 이벤트가 발생하고 스케줄러가 rescheduling을 해도 T2의 작업을 중간에 끝내지 않고 작업을 마치고 나서 T1으로 전환한다.
2. Alarm
Counter
- 시간의 흐름에 따라 증가하는 카운터
- tick 으로 측정하며 1tick = 1msec
Alarm
- 시간의 흐름에 따라 다양한 일을 처리하기 위함(task, event set, callback function등)
- 카운터가 특정수치에 도달하면 알람이 발생한다.
💡 callback function : 개발자가 만든 함수를 라이브러리가 호출하는 경우
3. Hook
1) Hook 개념
- OS가 지정한 특정한 지점에서 특정 동작을 하기 위함
- Hook용도
- 시스템 시작
- system shutdown
- error handling
① : 하드웨어(물리)로 시스템 부팅
② : OS시작
③ : OS초기화
④ : Hook 지점 → 개발자가 특정 기능을 넣을 수 있음(OS초기화, 커널시작지점 사이)
⑤ : 커널 시작 지점
- context switching이 일어날때 2개의 훅 루틴이 발생한다(PreTaskHook, PostTaskHook)
- 두 루틴은 디버깅할때 혹은 context switching시간을 측정할때 사용된다.
4. 실습
OSEK OS구현은 오픈소스인 ERIKA3를 사용했으며 아두이노 우노에 OS를 올려 실습을 진행했다.
1) Alarm
[해석]
- 우선순위는 Task2가 더 높으며 모두 Preemptive이다.
- Alarm을 통해서 두 Task는 정확히 5초에 Task가 발생하며 이때 우선순위가 더 높은 Task2가 시작된다. Task1은 ready상태에 있다.
- 3초후 Task2가 종료됨과 동시에 Task1이 시작한다.
- 다시 3초 후 Task1이 종료된다.
- Task1의 주기가 10이기 때문에 다시 10초에 Task1 실행.
- 3초후 Task종료 후 20초일때 Task2 실행
'OSEK ⁄ VDX' 카테고리의 다른 글
OSEK Real-Time OS : 특징1(Task, 스케줄링, 인터럽트) (0) | 2023.07.16 |
---|---|
OSEK/VDX 개요 (0) | 2023.07.16 |
범용운영체제 (0) | 2023.07.16 |