본문 바로가기
Operating System/RTOS

[OSEK OS] Resource

by 임아톰 2021. 7. 28.

Resource란?

우선순위가 다른 여러 task가 공유된 자원에 동시에 접근하는 것을 조정하는 것을 말합니다. 운영체제에서 mutex와 같은 역할을 합니다. OSEK OS에서는 lock을 걸고 푸는 데 GetResource(), ReleaseResource()가 사용됩니다.

 

Resource 종류

  • Standard
     : GetResource(RedID) - Resource를 획득하는 API
     : ReleaseResource(ResID) - Resource를 반환하는 API

  • Internal
     : OSEK OS 에서 제공하는 특별한 종류의 자원으로, 자원이지만 사용자에게 보이지 않음
       즉, GetResource(ResID)와 ReleaseResource(ResID) 를 통해 잠금과 해제를 할 수 없음
       Task가 running 상태에 진입할 때 자동으로 획득
       동작은 standard 리소스와 동일
      

 

OIL Description of Resource

task와 ISR에서도 해당 resource를 사용한다고 적습니다. GetResource(), ReleaseResource()를 이용하면 lock을 걸고 푸는 작업을 할 수 있습니다.

 

Priority Inversion

 

공유자원을 lock을 걸 때 deadlock 혹은 priority inversion과 같은 문제가 생길 수 있습니다. priority inversion은 우선순위가 낮은 task가 공유자원을 점유함으로써 우선순위가 더 높은 task를 선점하는 상태를 말합니다.

이로인해 우선순위가 높아서 우선적으로 처리되어야 하는 task의 수행 시간이 비결정적으로 바뀌게 됩니다. 

그림에서 task T1은 T4 보다 우선순위가 높지만 공유자원을 먼저 점유한 T4에 의해 waiting 상태가 되고 T2, T3가 실행되고 T4가 실행된 후에야 실행되게 됩니다.

 

 

Priority Ceiling Protocol

 

Priority Ceiling Protocol(PCP)은 resource를 사용할 때 잠시 우선순위를 높임으로써 이를 해결합니다.

  • Resource를 얻는 순간에 resource에 지정된 priority로 task이 priority가 상승
  • Resource를 release 하는 순간에 task는 원래의 priorit로 돌아가고 Scheduling Policy가 preemptive일 경우 scheduling이 발생

T4는 PCP에 의해 자원을 얻었을 때 ceiling priority로 높아지고 자원에 대해 처리해야 할 일을 처리합니다. 자원을 release한 후에는 원래 우선순위로 돌아오고 T1이 실행됩니다.

 

 

Resource 제약사항

  • 동일 Resource 에 대해 중첩해서 획득할 수 없음
  • Task/ISR 은 점유된 리소스를 가지고 종료할 수 없음
     : TerminateTask, ChainTask, Schedule, WaitEvent 이 호출 불가
  • 한 개 task안에서 다중 리소스 점유의 경우, 사용자는 LIFO(=stack)방식으로 리소스를 request/release
  • resource를 사용하는 task의 우선순위는 resource에 할당된 우선순위보다 크지 않아야 함

 

Scheduler as a resource

  • ‘RES_SCHEDULER’ 이라 이름 지어진 Standard Resource 가 자동으로 생성
  • resource를 사용하는 task의 우선순위는 resource에 할당된 우선순위보다 크지 않아야 함.
  • ‘RES_SCHEDULER’의 인터럽트를 제외한 task들의 re-scheduling을 방지
  • ‘RES_SCHEDULER’ 는 GetResource(RES_SCHEDULER), ReleaseResource(RES_SCHEDULER) 를 이용

 

*reference

OSEK specification 2.2.3

김종찬 교수님 실시간 운영체제 및 소프트웨어 강의

OSEK Resource

반응형

'Operating System > RTOS' 카테고리의 다른 글

[OSEK OS] Alarm  (0) 2021.07.28
[OSEK OS] ISR  (0) 2021.07.26
[OSEK OS] Task와 Event  (0) 2021.07.10
RTOS 용어 정리  (0) 2021.06.30