비행기에는 어떤 운영 체제가 사용되며 어떤 프로그래밍 언어로 개발됩니까? [닫은]


113

상용 비행기 (Boeing 또는 Airbus 등)에서 사용되는 운영 체제가 무엇인지 아는 사람이 있는지 궁금합니다.

또한 (선호되는) 실시간 프로그래밍 언어는 무엇입니까? Ada가 Boeing에 사용된다고 들었는데 내 질문은 왜 Ada입니까? 보잉 사람들이이 언어를 선택해야하는 기준은 무엇입니까? (가비지 수집기가 정확하게 해제되면 Java가 훌륭한 선택이 아닌 것 같습니다).


11
이 질문을 처음 보았을 때 기내 영화 등을 실행하는 시스템과 좌석 뒤에서 시스템을 요구하는 것으로 생각했습니다. 나는 한 번 델타 비행 중에 그들이 그 시스템을 재부팅했고, 내가 생각하는 데비안 변형 인 Linux를 실행하고 있다고 말할 수 있었다.
Kris Harper

1
@ root45 : ahhhhhh ... 나는 그것이 내 마음을 넘지 않았다는 것을 인정한다. 그랬을 수도 있습니다. 일부는 내가 생각하는 QNX를 실행하고 다른 일부는 Windows Embedded를 실행하는 것을 보았습니다.
haylem

17
"어떤 종류의 운영 체제를 사용합니까?" "비스타라고 생각합니다." "우리는 죽을거야!"
StuperUser 2016 년

1
@StuperUser : 내가 가장 좋아하는 IT 크라우드 에피소드 중 하나입니다. ( youtube.com/watch?v=8y4akOH8v8Q-2:34 분). 또한 상용 항공사뿐만 아니라 군용 항공기가 동일하지 않은 경우 군용 항공기가 무엇을 사용하는지에 대해 더 많이 아는 것이 흥미로울 것입니다. 비스타, 롤
Bratch

1
@Piskvor : Java 용 실시간 VM이 있습니다 (플랫폼이 아닌 언어로). JavaRT 변형이 심각한 (거주 된) 비행 시스템에 사용되었는지는 모르지만 모델 또는 드론에 사용되는 것을 보았습니다.
haylem

답변:


157

항공 전자

항공기 제어 시스템의 경우 일반적 으로 운영 체제가 아니라 항공 전자 공학 , 통합 항공 전자 공학 또는 컴퓨터 항공 시스템을 말합니다 . 그리고 실제로는 다양한 기능 ( 비행 제어 , 충돌 회피 , 날씨, 통신, 블랙 박스 등) 을위한 다수의 독립적 또는 상호 의존적 시스템의 조합입니다 .

각 컨트롤러는 일반적으로 명백한 보안 및 안전상의 이유로 독립적 인 모듈 (하드웨어 및 소프트웨어)입니다. 이들은 중요한 제어 및 모니터링 시스템이며 그 중 하나가 고장 나거나 손상된 경우에는 항공기에 따라 비행 기계 있을 때 신뢰성 은 모든 의미를 갖습니다 . 보통은

  • 그들의 임무를 위해 만들어진 맞춤형
  • 독립적으로 작동하고 다른 시스템과 인터페이스하도록 구축
  • 파일럿의 사운드 시스템이 엔진 컨트롤을 내리는 것을 원하지 않기 때문에 자체 장애 및 연결된 다른 시스템의 장애에 대해 내결함성갖도록 제작되었습니다 .

모든 것을 실행하는 큰 컴퓨터는 아닙니다. 상업용 항공기가 아닌 군용 항공기의 관점에서 생각하면 (이 점이 비슷할 수도 있지만 이미지가 도움이 될 수 있습니다.) 계속 진행하려면 (통신 및 안전 시스템을 제어하는 ​​부분이 계속 살아남는 것이 흥미로울 수 있습니다 ...) 따라서 다른 시스템의 상태를 추적하기 위해 제트 라이너에 표시되는 많은 버튼이 있습니다.

일반적으로 자체 시스템을 운영하는 사용자 지정 구성 요소로 만들어 지거나 마이크로 커널 (대부분의 경우 실시간 기능 지원)로 실행 및 예약됩니다 .

분명히 공급 업체와 국가에 따라 다르지만 일반적으로 최소한 다음과 같은 엄격한 규제, 설계 요구 사항 및 프로토콜 특정 규칙을 따라야합니다.

  • 보안 및 안전 표준에 대한 엄격한 준수 관리
  • 다른 시스템과의 통신 (레이캬비크에서 이륙 한 비행기가 도쿄의 지상 제어 장비와 "대화"할 수 있다면 훨씬 더 좋습니다.)

표준화 노력

DO-178B (1992 년 개정)과 그 후임 DO-178C (2012 년 개정) (및 관련 문서의 무리), 규정 준수 수준에 대한 참조 인증의 예, 그리고 FAA (미국)에 의해 인식된다 EASA (EU) 및 캐나다 교통부 등이 있습니다. EUROCAE 와 같은 여러 다른 조직이 이러한 문서 작성에 관여합니다 .

이러한 항공 시스템은 일반적으로 맞춤형 소프트웨어이지만 다음과 같은 시스템은 일부 비행기에서 사용되는 것으로 알려져 있습니다.

항공 전자 시스템에 내장 된 요소에 대한 모호한 아이디어를 제공하기 위해, 항공 전자 약어 의이 목록은 일부를 가리 킵니다 (일부 중복 됨).

상업 및 군사 항공에서 사용되는 주목할만한 언어

우리가 "주류"프로그래밍 세계에서 알고있는 일반적인 용의자 외에도 Ada 와 같이 자주 참조되는 이름과 (2010 년 이후로 "현재 사용 중지 된 "날짜) JOVIAL 과 같이 덜 알려진 언어가 나타납니다 .


관련 StackExchange 질문 :


2
@ mattnz : 감사합니다. 그러나 OP가 요구하는 것과 정직하지 않습니다. 설명서 목적으로 유용한 통찰력과 포인터를 제공하려고 시도했지만 실제 구현 세부 정보와 관련하여 하드 데이터를 찾기가 더 어렵습니다.
haylem

"그리고 그들은 실제로 다수의 독립 또는 상호 의존 시스템의 조합입니다"당신은 이것들에 대해 별도의 하드웨어가 있다는 것을 의미합니까?
stijn

2
그렇습니다. 그것들은 특수 목적의 하드웨어 인 경향이 있습니다. 기체를 실행하는 x86 PC 랙이 없습니다.
Rig

3
@stijn : 글쎄요. 이런 식으로 생각하십시오. 이들은 중요한 제어 및 모니터링 시스템입니다. 그들 중 하나가 실패한다면, 그것은 큰 괴물과 같은 문제를 의미합니다. 따라서 일반적으로 a) 임무 목적을 위해 맞춤 제작되었습니다 .b) 독립적으로 작동하고 다른 시스템과 인터페이스하도록 설계되었습니다 .c) 자체 장애 및 인터페이스 된 다른 시스템의 장애에 대해 내결함성을 갖도록 제작되었습니다 ( 예를 들어 파일럿의 사운드 시스템이 엔진 컨트롤을 내리는 것을 원하지 않습니다). 모든 것을 실행하는 큰 컴퓨터는 아닙니다.
haylem

@stijn : 상업용 항공기가 아닌 군용 항공기의 관점에서 생각하십시오. 도움이되는 경우 : 부품이 총에 맞으면 적어도 다른 부품이 계속 작동 할 수 있습니다. 통신 및 안전 시스템을 제어하는 ​​부분은 살아남는 것이 흥미로울 수 있습니다 ...). 따라서 다른 시스템의 상태를 추적하기 위해 제트 라이너에 표시되는 많은 버튼이 있습니다.
haylem

22

대부분의 현대 항공기는 공장 자동화, 발전소, 선박 등에서 사용되는 것과 거의 동일한 범용 RTOS (실시간 운영 체제)를 사용합니다.

Airbus는 Northrop-grumman의 INTEGRITY를 포함하여 몇 가지를 사용하고 C / C ++로 프로그래밍하며 Boeing은 VxWorks를 사용합니다.


2
"... 범용 RTOS ..."라는 문구는 RTOS가 항공 전자 시스템으로 만드는 데 필요한 것을 사소한 것으로 ACME Corps Digital TV Reciever에서 사용하는 RTOS와 거의 같지 않습니다.
mattnz

3
아니하지만, Vx 웍스는 블랙 베리 전화로 월 로버에서 아무것도 사용할 수 있습니다
마틴 베켓

VxWorks가 아닌 Blackberry에서 사용되는 QNX입니다. 그러나 동일한 원칙이 적용됩니다-COTS rtos는 항공기에서 사용될 수 있습니다
Martin Beckett

12

가치있는 것 : 우주선 (위성 및 행성 간 행성)의 경우 C와 C ++는 여전히 지배적이며 일반적으로 VxWorks를 실행하는 ISO 표준을 엄격하게 준수합니다. 랩은 일반적으로 개발자의 친숙성, 컴파일러 툴체인에 대한 확신 및 내부 코딩 표준에 따라 C 또는 C ++을 고수합니다. 실시간 비행 소프트웨어를위한 두 가지 언어에 대한 설득력있는 이유가 있지만 각 조직은 서로를 고집하는 경향이 있습니다. 반면 보조 도구는 일반적으로 Forth, C 및 Lua와 같이 점점 더 현대적인 스크립팅 언어로 프로그래밍됩니다.


3
일반적으로 읽은 한 MISRA C 또는 JSF C ++와 같은 C 또는 C ++의 하위 집합이기도합니다.
Coder

10

또한 제어 시스템은 종종 Simulink를 사용하는 모델 기반 설계를 사용하여 개발됩니다. 그런 다음 디자인은 C 코드로 자동 변환됩니다. 인간은 여전히 ​​코드를 읽고 확인합니다.


교수님은 소프트웨어 엔지니어링의 중요한 시스템에 대해 이야기했을 때 실제로 언급했습니다.
Dielson Sales

Airbus는 비행 제어 시스템에서 하드웨어 및 소프트웨어의 기능 사양에 SCADE 를 사용한다고 생각 합니다. 이 도구는 C 또는 Ada 코드를 생성 할 수 있습니다.
dodgy_coder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.