본문 바로가기 주메뉴 바로가기

기술자료

기술자료

MISRA-C:2023: C 개발자를 위한 안전 표준 강화

FSG-IAR 관리자 2024-09-25 조회수 303

MISRA-C가 다시 진화했습니다! C로 안전이 중요한 시스템을 작업하고 있다면 MISRA-C:2012를 알고 있을 가능성이 높지만 MISRA-C:2023 은 여러분이 알아보고 싶어할

몇 가지 중요한 변화를 제공합니다.

 

MISRA-C 진화하는 이유는 무엇입니까?

MISRA-C는 C 코드를 더 안전하고, 더 안정적이며, 유지 관리하기 쉽게 만들기 위해 설계된 전 세계적으로 인정받는 코딩 지침 세트입니다. MISRA-C:1998에서 시작된 이 지침은 현대 개발의 요구 사항을 충족하도록 진화했습니다. 그렇다면 왜 이렇게 지속적으로 진화하는 것일까요?

 

간단한 답은 C도 진화하고 있다는 것입니다! MISRA-C 지침은 프로그래밍 환경이 변화함에 따라 변경되는 C 언어의 새로운 표준을 다루도록 조정됩니다. 2012년에 주요 표준은 각각 1990년과 1999년에 제정된 C90과 C99였습니다. 그 이후로 C11(2011) 및 C18(2018)과 같은 새로운 표준이 등장하여 멀티스레딩 및 generic 표현식과 같은 강력한 기능을 제공했습니다. 특히 C11에서 이러한 추가 기능은 안전하고 신뢰할 수 있는 코드를 작성하는 데 새로운 과제를 제시합니다. 특히 동시성과 공유 데이터를 처리할 때 그렇습니다.

 

MISRA-C:2012는 더 이상 이러한 새로운 표준의 최신 기능을 완전히 포함할 수 없었습니다. 범위를 C90, C99, C11 및 C18의 네 가지 C 언어 버전으로 축소한 MISRA-C:2023이 등장했습니다. C18은 C11에 비해 최소한의 기능적 변경을 제공하지만 이 업데이트는 지침이 진화하는 언어와 그 기능에 발맞추는 데 필수적이었습니다.

 

MISRA-C:2023 새로운 기능은 무엇입니까?

MISRA-C:2023의 주요 기능 중 하나는 새로운 언어 구문과 함께 제공되는 규칙에 대한 지원입니다. 예를 들어 안전한 멀티스레드 애플리케이션에 필수적인 C11에 도입된 atomic 유형을 고려해 보겠습니다. 이러한 규칙은 여러 스레드에서 공유 변수를 안전하게 관리하는 데 도움이 됩니다. 그러나 잘못 사용하면 잠재적인 위험도 발생하므로 MISRA-C:2023에는 다음과 같은 업데이트된 규칙이 포함됩니다.

 

규칙 9.7 atomic 객체는 액세스하기 전에 적절하게 초기화해야 함

규칙 12.6 atomic 객체의 구조 및 공용체 멤버는 직접 액세스해서는 안 됨

다음 예에서는 C11에서 도입된 atomic 유형 수정자의 사용을 보여줍니다. 그러나 이는 이전에 언급한 규칙을 준수하지 않습니다.

Violation of atomic variable rules


 

이러한 업데이트에 관심을 가져야 하는 이유

개발에 멀티스레딩 또는 멀티코어 시스템이 포함된 경우 주의를 기울여야 합니다. 업계가 이러한 프로그래밍 패러다임을 수용함에 따라 C11 및 C18에서 제공하는 새로운 구문을 활용하는 것이 필수적이 될 것입니다. 이러한 기능은 매우 강력하지만, 당연히 책임도 발생합니다. 최신 MISRA 지침을 따르지 않으면 코드에 미묘한 버그나 정의되지 않은 동작이 발생할 위험이 있습니다. 이러한 문제는 간과될 수 있습니다.


구조에 대한 정적 분석 도구

물론 규칙을 아는 것은 절반의 전투일 뿐입니다. 코드가 규칙을 준수하는지 확인하는 것도 마찬가지로 중요합니다. 정적 분석 도구는 매우 귀중한 도구로, 비용이 많이 드는 버그로 변하기 전에 규칙 위반을 포착하는 데 도움이 됩니다. 임베디드 개발의 선두 주자로서 IAR은 MISRA-C:2023을 신속하게 채택했습니다. 버전 9.60.2에 도입된 IAR Embedded Workbench용 IAR C-STAT 애드온을 

사용하면 이제 최신 지침에 따라 코드를 검증하여 프로젝트가 규정을 준수하는지 확인할 수 있습니다.

MISRA table_Sept24

<추가된 C-STAT 툴 (MISRA-C:2023 관련) >

 

요약 (MISRA-C : 2023 프로젝트 적용을 추천)

MISRA-C:2023은 안전이 중요한 분야에서 일하는 C 프로그래머에게 큰 진전을 의미합니다. 

업데이트된 지침은 C 언어의 최신 기능을 다루어 기능적일 뿐만 아니라 안전하고 안정적이며 미래에 대비한 코드를 작성하는 데 도움이 됩니다. 이미 MISRA-C:2012를 사용하고 있다면 지금이 업그레이드하고 임베디드 프로젝트에 최신 표준을 활용하기에 완벽한 시기입니다.

IAR의 C-STAT와 같은 새로운 가이드라인과 도구를 채택하면 차세대 임베디드 개발 과제를 해결할 수 있습니다.

C-STAT에 대한 자세한 정보는 아래에서 확인하세요.

https://www.iar.com/products/c-stat/

 

작성자 :  Hiroki Akaboshi / FAE / IAR SYSTEMS JAPAN 

위로가기