Automotive Software

런어블의 다중 태스크 매핑 (Multiple Task Mapping of a Runnable) 본문

클래식 오토사 (Classic AUTOSAR)/SWC & RTE

런어블의 다중 태스크 매핑 (Multiple Task Mapping of a Runnable)

AutoSW 2022. 3. 14. 20:33
  1. SWC & RTE에서 해야 할 일
    1. 런어블의 다중 태스크 매핑을 위해 알아야 할 두 가지 중요한 속성들과 해야 할 일은
      • supportMultipleInstantiation
        • SoftwareComponent 의 속성으로 해당 컴포넌트 타입이 단일 제어기상에서 여러 번 객체로 만들어져 사용되어야 할 경우 (다중 태스크, 다중 OsApplication)
        • 런어블의 다중 태스크 매핑을 위해 기본적으로 활성화 되어야 함
      •  canBeInvokedConcurrently
        • RunnableEntity의 속성으로 다중 태스크로부터 해당 런어블이 동일한 인스턴스에 의해 다중 태스크에 의해 동시에 수행되어질 수 있는 경우 활성화되어야 함 (예, Server runnable)
        • 보통 SupportMultipleInstantiation 을 지원하는 컴포넌트가 다중 객체화된 경우, 해당 컴포넌트 내의 일반적인 런어블들은 각각의 인스턴스(다중 인스턴스)에 의해 수행되므로 해당 속성은 목적에 따라 선택적으로 활성화 필요
      • supportMultipleInstantiation 가 활성화된 컴포넌트 타입을 이용하여 필요한 수만큼의 객체 생성
        • 예, 2개의 객체생성
        • MySwc_Core0 :: MySwcType
        • MySwc_Core1 :: MySwcType
  2. OS 에서 해야 할 일
    1. 런어블을 매핑할 태스크들을 생성 후 OsApplication 들에 각 태스크를 할당
      • Core0 -> OsApplication_Core0 : Core 0 상의 OsApplication
        • MyTask_Core0 : Core 0상에 런어블을 매핑할 태스크
      • Core1 -> OsApplication_Core1 : Core 1상의 OsApplication
        • MyTask_Core1 : Core 1상에 런어블을 매팅할 태스크
    2. 각 태스크 할당 후 다중 객체로 부터 런어블 매핑
      • MySwc_Core0에 MySwc_Core0MyRunnable 매핑
      • MySwc_Core1에 MySwc_Core1MyRunnable 매핑
      • 객체화된 컴포넌트 명만 차이가 있으며 런어블은 동일한 이름을 유지
  3. Arxml 상에서의 Description 예시
    1. canBeInvokedConcurrently은 Runnable 컨테이너에
    2. supportMultipleInstantiation은 SWC Internal Behavior 컨테이너에 정의됨