목록분류 전체보기 (102)
Automotive Software
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GRW4i/btqTkhgHboe/55scjtxWAe2N5gRAC9k720/img.png)
쓰레드 사용 시 늘 생각해 볼 부분은 바로 쓰레드의 취소(종료)이다. 좀 더 정확히 말하면 종료 후 아래의 경우에 해당하는 쓰레드의 뒷정리일 것이다. 쓰레드에서 동적 자원을 할당하여 사용할 경우, 종료 후 메모리 누수 (Memory Leakage) 뮤텍스 등의 동기화 메커니즘이 사용된 경우, 다른 쓰레드의 데드락 (Deadlock between Threads) 쓰레드가 어떤 상태를 설정하고 그 상태가 다른 쓰레드 또는 메인 쓰레드에서 참조될 경우, 애플리케이션 상에서 상태 회복 불가능 (Unrecoverable state in an application) 1. 쓰레드 취소 포직스 쓰레드에서는 아래 두 가지의 취소 모드를 제공하는데, 이는 쓰레드의 취소 요청을 어떠한 시점에 처리할지를 결정하게 된다. 지연..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cTK8JM/btqS3JsRlJs/DCK7mW930hMN7sodE3ktJk/img.png)
EM은 아답티브 플랫폼상에서 구동되는 모든 프로세스(애플리케이션, 아답티브 플랫폼 프로세스 등)들의 시작과 종료를 제어하게 되는데, 프로세스 간 연관 관계를 고려하여 프로세스 간 의존성 그리고 연관기능 그룹(Function Group)의 종속여부를 정의할 수 있게 해 준다. 프로세스 실행 의존성 설정 다른 프로세스의 서비스가 필수적으로 필요한 프로세스의 경우, 해당 프로세스와의 의존성을 기술하여 실행 시점을 제어할 수 있다. 예를 들면, DM(진단 매니저)의 경우 통신 서비스와 메모리 서비스를 필요로 하게 되는데, 의존성 설정을 통해 통신 서비스가 실행되고 난 후 DM이 실행되도록 순서를 정의할 수 있다. 의존성 종류 : 의존성 정의 시 언제 프로세스가 실행될 것인지 정의 실행 (Running) : 의존..
포직스에서 정의하는 함수들의 안정성 정도를 나타내기 위한 단계로 MT-Safe (Multi Thread) 메모리 동기기법등이 사용되지 않아 다중 쓰레드 환경에서 사용하여도 안전 AS-Safe (Asynchronous Signal) 비동기화 신호 처리함수에서 사용하여도 안전 AC-Safe (Asynchronous Cancellation) 비동기 철회(Cancellation)시에 호출되어도 안전 원문 출처 : www.gnu.org/software/libc/manual/html_node/POSIX-Safety-Concepts.html
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dbYOc4/btsp92ke0tV/jaMTCmpoxs87pZjyDrALrK/img.png)
개관 클래식 오토사에 EcuM, BswM 그리고 SchM 이 있었다면 아답티브 오토사에는 하나의 기능군(Functional Cluster, 이하 FC)에 속하는 Execution Manager(하위, EM)가 있다. EM은 전반적인 관점에서 플랫폼의 전체적인 초기화 그리고 플랫폼상에서 구동될 애플리케이션들의 시작과 종료를 제어하는 모듈이다. 아답티브 오토사가 POSIX기반 운영체제에서 구동되다 보니 애플리케이션 제어를 위해 구동 운영체제 의존성 (프로세스 제어를 위해 OS API 사용) 을 가지며, 이 제어정보는 매니페스트 파일들(Machine Manifest, Execution Manifest)을 통해 기술되어진다. 아답티브 플랫폼 소프트웨어 중 가장 먼저 실행되며, 실행 중 동적 업데이트를 위해 UC..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/X0a6l/btqTjD5mA7B/hjG8ynnEscrHZ3NFPfJkd1/img.png)
속성 객체 쓰레드 속성 예전 포스트에 이어 뮤텍스와 조건변수 속성을 알아보자. 뮤텍스 속성 포직스에서는 기본적으로 아래의 멤버를 속성으로 정의하고 있지만, 의무적으로 구현해야 하는 속성이 아니므로 사용하는 운영체제에 따라 속성 지원 여부가 상이할 수 있다. pshared(process-shared) : 뮤텍스의 접근 영역 지정 PTHREAD_PROCESS_SHARED : 뮤텍스가 할당된 메모리 공간에 접근할 수 있는 모든 스레드(다른 프로세스에서 생성된)들의 뮤텍스 사용을 허가함 PTHREAD_PROCESS_PRIVATE : 뮤텍스를 초기화한 동일 프로세스 내에서 생성된 스레드들에게만 뮤텍스 사용을 허가함 protocol : 스케줄링 프로토콜 지정 PTHREAD_PRIO_INHERIT : 하나의 쓰레드가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LVZEY/btqTjDxxkZ4/qprhv5mXedkmjPxVM0kZ91/img.png)
차량 제어기 기능 중 가장 중요한 기본 기능을 하나 꼽으라면 단연 통신 기능일 것이다. 차량 통신은 진단 서비스를 제공하기 위해 차량에 적용되기 시작한 이후 현재까지, 지원되는 통신 프로토콜 (Communication Protocol) 이 증가하는 추세이다. 개인적으로는 케이라인(K-Line)이라는 단일 통신선을 사용하는 진단용 통신 프로토콜부터 개발 경험을 하였는데, 어느 순간엔가 국내에도 캔(CAN)이라는 차량통신 프로토콜이 린(LIN)과 함께 차량에 광범위하게 사용되고, 플랙스래이(Flexray)를 거쳐 현재는 일반 PC통신에 사용되는 이더넷(Ethernet)이 차량 통신의 중요한 부분을 차지하고 있다. 이는 차량에서 교환되는 데이터 양에 맞추어 통신기술도 변화하고 있음을 보여주는 것으로, 테스터기..