상용 비행기 (Boeing 또는 Airbus 등)에서 사용되는 운영 체제가 무엇인지 아는 사람이 있는지 궁금합니다.
또한 (선호되는) 실시간 프로그래밍 언어는 무엇입니까? Ada가 Boeing에 사용된다고 들었는데 내 질문은 왜 Ada입니까? 보잉 사람들이이 언어를 선택해야하는 기준은 무엇입니까? (가비지 수집기가 정확하게 해제되면 Java가 훌륭한 선택이 아닌 것 같습니다).
상용 비행기 (Boeing 또는 Airbus 등)에서 사용되는 운영 체제가 무엇인지 아는 사람이 있는지 궁금합니다.
또한 (선호되는) 실시간 프로그래밍 언어는 무엇입니까? Ada가 Boeing에 사용된다고 들었는데 내 질문은 왜 Ada입니까? 보잉 사람들이이 언어를 선택해야하는 기준은 무엇입니까? (가비지 수집기가 정확하게 해제되면 Java가 훌륭한 선택이 아닌 것 같습니다).
답변:
항공기 제어 시스템의 경우 일반적 으로 운영 체제가 아니라 항공 전자 공학 , 통합 항공 전자 공학 또는 컴퓨터 항공 시스템을 말합니다 . 그리고 실제로는 다양한 기능 ( 비행 제어 , 충돌 회피 , 날씨, 통신, 블랙 박스 등) 을위한 다수의 독립적 또는 상호 의존적 시스템의 조합입니다 .
각 컨트롤러는 일반적으로 명백한 보안 및 안전상의 이유로 독립적 인 모듈 (하드웨어 및 소프트웨어)입니다. 이들은 중요한 제어 및 모니터링 시스템이며 그 중 하나가 고장 나거나 손상된 경우에는 항공기에 따라 비행 기계 에 있을 때 신뢰성 은 모든 의미를 갖습니다 . 보통은
모든 것을 실행하는 큰 컴퓨터는 아닙니다. 상업용 항공기가 아닌 군용 항공기의 관점에서 생각하면 (이 점이 비슷할 수도 있지만 이미지가 도움이 될 수 있습니다.) 계속 진행하려면 (통신 및 안전 시스템을 제어하는 부분이 계속 살아남는 것이 흥미로울 수 있습니다 ...) 따라서 다른 시스템의 상태를 추적하기 위해 제트 라이너에 표시되는 많은 버튼이 있습니다.
일반적으로 자체 시스템을 운영하는 사용자 지정 구성 요소로 만들어 지거나 마이크로 커널 (대부분의 경우 실시간 기능 지원)로 실행 및 예약됩니다 .
분명히 공급 업체와 국가에 따라 다르지만 일반적으로 최소한 다음과 같은 엄격한 규제, 설계 요구 사항 및 프로토콜 특정 규칙을 따라야합니다.
DO-178B (1992 년 개정)과 그 후임 DO-178C (2012 년 개정) (및 관련 문서의 무리), 규정 준수 수준에 대한 참조 인증의 예, 그리고 FAA (미국)에 의해 인식된다 EASA (EU) 및 캐나다 교통부 등이 있습니다. EUROCAE 와 같은 여러 다른 조직이 이러한 문서 작성에 관여합니다 .
이러한 항공 시스템은 일반적으로 맞춤형 소프트웨어이지만 다음과 같은 시스템은 일부 비행기에서 사용되는 것으로 알려져 있습니다.
항공 전자 시스템에 내장 된 요소에 대한 모호한 아이디어를 제공하기 위해, 항공 전자 약어 의이 목록은 일부를 가리 킵니다 (일부 중복 됨).
우리가 "주류"프로그래밍 세계에서 알고있는 일반적인 용의자 외에도 Ada 와 같이 자주 참조되는 이름과 (2010 년 이후로 "현재 사용 중지 된 "날짜) JOVIAL 과 같이 덜 알려진 언어가 나타납니다 .
대부분의 현대 항공기는 공장 자동화, 발전소, 선박 등에서 사용되는 것과 거의 동일한 범용 RTOS (실시간 운영 체제)를 사용합니다.
Airbus는 Northrop-grumman의 INTEGRITY를 포함하여 몇 가지를 사용하고 C / C ++로 프로그래밍하며 Boeing은 VxWorks를 사용합니다.
가치있는 것 : 우주선 (위성 및 행성 간 행성)의 경우 C와 C ++는 여전히 지배적이며 일반적으로 VxWorks를 실행하는 ISO 표준을 엄격하게 준수합니다. 랩은 일반적으로 개발자의 친숙성, 컴파일러 툴체인에 대한 확신 및 내부 코딩 표준에 따라 C 또는 C ++을 고수합니다. 실시간 비행 소프트웨어를위한 두 가지 언어에 대한 설득력있는 이유가 있지만 각 조직은 서로를 고집하는 경향이 있습니다. 반면 보조 도구는 일반적으로 Forth, C 및 Lua와 같이 점점 더 현대적인 스크립팅 언어로 프로그래밍됩니다.
또한 제어 시스템은 종종 Simulink를 사용하는 모델 기반 설계를 사용하여 개발됩니다. 그런 다음 디자인은 C 코드로 자동 변환됩니다. 인간은 여전히 코드를 읽고 확인합니다.