OS-ApplicationAUTOSAR OS(SC3 이상)에서 도입된 OS 객체의 기능적 그룹 단위. Task, ISR, Alarm, Schedule Table, Counter를 하나의 application으로 묶어 메모리 보호·접근 권한·재시작 단위로 취급한다. OSEK/VDX에는 없는 개념으로, AUTOSAR가 Memory Protection·Service Protection·IOC를 구현하기 위한 토대 역할을 한다.

정의와 특징

  • 구성: Task / ISR / Alarm / Schedule Table / Counter 등 OS object의 모음
  • OS-Application을 사용하면 모든 OS object는 어떤 OS-Application에 속해야 한다 (Resource는 예외 — 어느 App.에도 속하지 않고, object별로 접근 권한만 명시)
  • 하나의 OS-Application의 object는 모두 동일한 core에 있어야 한다 (Multi-Core에서 App. 단위로 core 배치)

상태 모델

상태의미
APPLICATION_ACCESSIBLEApp.의 object들에 접근 가능 (OS 시작 시 default)
APPLICATION_RESTARTINGApp. object에 접근 불가능한 상태. AllowAccess()ACCESSIBLE로 복귀 가능
APPLICATION_TERMINATEDApp. 종료. 재진입 불가

전이는 TerminateApplication(ApplicationID, RestartOption)으로 유발된다:

  • RestartOption = RESTARTAPPLICATION_RESTARTING
  • RestartOption = NO_RESTARTAPPLICATION_TERMINATED

APPLICATION_RESTARTINGProtection HookPRO_TERMINATEAPPL_RESTART 반환 시에도 진입하며, App. 초기화가 끝나면 내부에서 AllowAccess()를 호출해 서비스를 재개한다.

접근 권한

  • 동일 OS-Application 내부 — object 간 자유 접근
  • 다른 OS-Application의 object 접근 — 명시적 설정 필요. object별로 어떤 App.이 자신에게 접근할 수 있는지 선언

이 접근 제어는 Service Protection과 맞물려 권한 없는 cross-App 접근 시 E_OS_ACCESS 반환으로 이어진다.

Trusted vs Non-Trusted

속성Trusted OS-ApplicationNon-Trusted OS-Application
동작 모드PrivilegedNon-privileged
Memory Protection다른 App./OS module data에 접근 가능자기 code·data만 접근, 다른 App. data 쓰기 불가
Timing/Memory monitoringdisable 가능항상 활성
OS API 접근제한 없음제한적 (예: ShutdownOS 호출 무시)
제공 역할다른 App.에 service 제공 가능 (Call Trusted Function)제공 불가. Call Trusted Function으로 Trusted 서비스를 호출

Call Trusted Function

Non-Trusted OS-App.이 Trusted OS-App.의 함수를 호출하기 위한 메커니즘. Trusted App.이 자기 함수를 “Trusted function”으로 외부에 노출하면, Non-Trusted App.은 CallTrustedFunction API로 호출할 수 있다. 호출 중에는 Trusted App. 컨텍스트로 privilege가 상승한다.

사용 제한: 동일 core 내의 App. 간에만 사용 가능. Cross-core 통신은 IOC를 사용해야 한다.

주요 API

권한 검사

ApplicationType CheckObjectOwnership(ObjectTypeType ObjectType, ObjectID ID);
// 특정 object가 어느 App.에 속해 있는지 반환
 
ApplicationType CheckObjectAccess(ApplicationType AppID, ObjectTypeType ObjectType, ObjectID ID);
// 주어진 App.이 특정 object에 접근 권한이 있는지 확인

상태 관리

StatusType GetApplicationState(ApplicationType ApplicationID, ApplicationStateRefType Value);
// 현재 App. 상태 조회
 
StatusType TerminateApplication(ApplicationType ApplicationID, RestartOption);
// App. 종료. RESTART이면 APPLICATION_RESTARTING, NO_RESTART이면 APPLICATION_TERMINATED
 
StatusType AllowAccess(void);
// 현재 동작 중인 App.의 상태를 RESTARTING → ACCESSIBLE 로 전이

설정 구성 요소

OS-Application 설정 시 다음 항목을 지정한다:

  • Application 이름·동작 Core·Trusted/Non-Trusted
  • 소속 Task / ISR / Alarm / Counter / Schedule Table
  • App. 전용 Hook (App ErrorHook, App StartupHook, App ShutdownHook)
  • Partition — RTE partition과 1:1 매칭 (SW-C 배치와 OS-App.의 대응)
  • Restart 시 activation 될 Task

같이 보기