Những hệ điều hành nào được sử dụng trong máy bay, và chúng được phát triển ngôn ngữ lập trình nào? [đóng cửa]


113

Tôi đã tự hỏi nếu có ai biết hệ điều hành được sử dụng trong máy bay thương mại là gì (nói Boeing hay Airbus).

Ngoài ra, ngôn ngữ lập trình thời gian thực (ưa thích) là gì? Tôi nghe nói rằng Ada được sử dụng trong Boeing, vì vậy câu hỏi của tôi là - tại sao Ada? các tiêu chí mà các anh chàng Boeing phải chọn ngôn ngữ này là gì? (Tôi đoán Java sẽ không phải là một lựa chọn tuyệt vời nếu chính xác là nhấc bộ thu gom rác thức dậy).


11
Khi tôi lần đầu tiên nhìn thấy câu hỏi này, tôi nghĩ rằng nó đang hỏi về các hệ thống chạy các bộ phim trên máy bay và những thứ tương tự ở phía sau ghế ngồi. Tôi đã từng trên một chuyến bay Delta nơi họ khởi động lại hệ thống đó và bạn có thể nói rằng nó đang chạy Linux, một biến thể Debian mà tôi tin.
Kris Harper

1
@ root45: ahhhhhh ... Tôi thừa nhận nó thậm chí không có trong đầu tôi. Có thể có được. Tôi đã thấy một số chạy QNX tôi nghĩ và những người khác chạy Windows Embedded.
haylem

17
"Nó sử dụng loại hệ điều hành nào?" "Tôi nghĩ đó là Vista." "Chúng ta sẽ chết!"
Người sử dụng Stuper

1
@StuperUser: Một trong những tập phim IT Crowd yêu thích của tôi. ( youtube.com/watch?v=8y4akOH8v8Q - 2:34 phút). Ngoài ra, không chỉ các hãng hàng không thương mại, nhưng sẽ rất thú vị khi biết thêm về những gì máy bay quân sự sử dụng, nếu nó không giống nhau. Vista, lol.
Bratch

1
@Piskvor: có các máy ảo thời gian thực cho Java (như trong ngôn ngữ, không phải nền tảng). Tôi không biết các biến thể JavaRT đã được sử dụng cho các hệ thống bay nghiêm túc (và có người ở) hay chưa, nhưng tôi đã thấy nó được sử dụng cho các mô hình hoặc máy bay không người lái.
haylem

Câu trả lời:


157

Hệ thống điện tử

Đối với các hệ thống điều khiển máy bay, chúng ta không nói về hệ điều hành mà là hệ thống điện tử hàng không , hệ thống điện tử hàng không tích hợp hoặc hệ thống máy bay nói chung. Và chúng thực sự là sự kết hợp của vô số hệ thống độc lập hoặc phụ thuộc lẫn nhau, cho các chức năng khác nhau ( điều khiển chuyến bay , tránh va chạm , thời tiết, thông tin liên lạc, hộp đen ...).

Mỗi bộ điều khiển thường là một mô-đun độc lập (phần cứng và phần mềm) vì lý do an toàn và bảo mật rõ ràng: chúng là các hệ thống giám sát và kiểm soát quan trọng và nếu một trong số chúng bị hỏng hoặc bị hỏng, thì đó là một "sự bất tiện" khá lớn đối với những người tùy thuộc vào máy bay. Độ tin cậy có tất cả ý nghĩa của nó khi bạn ở trong máy bay. Vì vậy, thường là nó

  • tùy chỉnh được xây dựng cho mục đích nhiệm vụ của họ,
  • được xây dựng để hoạt động độc lập và giao diện với các hệ thống khác,
  • được chế tạo để có khả năng chịu lỗi đối với các lỗi của chính nó và các lỗi của các hệ thống khác mà nó bị ảnh hưởng (vì bạn không muốn hệ thống âm thanh của phi công mất kiểm soát động cơ, chẳng hạn).

Nó không phải là một máy tính lớn chạy mọi thứ. Nếu bạn nghĩ về nó từ quan điểm của một chiếc máy bay quân sự chứ không phải là một chiếc máy bay thương mại (mặc dù nó tương tự về mặt này, hình ảnh có thể giúp đỡ): nếu một phần bị bắn vào, ít nhất bạn sẽ có một số phần khác có thể để tiếp tục (phần kiểm soát các hệ thống thông tin liên lạc và an toàn có thể thú vị để duy trì sự sống ...). Do đó cũng có một loạt các nút lớn bạn thấy trong máy bay phản lực, để theo dõi trạng thái của các hệ thống khác nhau.

Chúng thường được xây dựng dưới dạng các thành phần tùy chỉnh vận hành hệ thống của riêng chúng hoặc chúng được chạy và lên lịch bởi một hạt nhân vi mô (trong hầu hết các trường hợp, có hỗ trợ cho các khả năng thời gian thực ).

Rõ ràng, nó phụ thuộc vào các nhà cung cấp và quốc gia, nhưng ít nhất họ thường cần tuân theo các bộ quy định khá nghiêm ngặt, yêu cầu thiết kế và đặc thù giao thức, cho phép:

  • sự kiểm soát tuân thủ nghiêm ngặt của họ đối với các tiêu chuẩn an ninh và an toàn,
  • việc liên lạc với các hệ thống khác (tốt hơn nhiều nếu chiếc máy bay mà bạn cất cánh ở Reykjavik có thể "nói chuyện" với thiết bị điều khiển mặt đất ở Tokyo ...)

Nỗ lực tiêu chuẩn hóa

Các DO-178B (sửa đổi năm 1992) và người kế nhiệm của nó DO-178C (sửa đổi năm 2012) (và một loạt các tài liệu liên quan) là một ví dụ về chứng chỉ tham khảo cho các mức độ tuân thủ như vậy, và được công nhận bởi FAA (Mỹ), EASA (EU) và Giao thông vận tải Canada, trong số những người khác. Nhiều tổ chức khác có liên quan đến việc tạo ra các tài liệu đó, như EUROCAE .

Các hệ thống trên không như vậy thường là phần mềm bespoke, nhưng các hệ thống sau được biết là được sử dụng trong một số máy bay:

Để cung cấp cho bạn một ý tưởng mơ hồ về các yếu tố được xây dựng trong một hệ thống điện tử, danh sách các từ viết tắt hệ thống điện tử này chỉ ra một số trong số chúng (với một số chồng chéo).

Ngôn ngữ đáng chú ý được sử dụng trong thương mại điện tử và quân sự

Ngoài những nghi phạm thông thường mà chúng ta biết trong thế giới lập trình "chính thống", bạn sẽ tìm thấy một số tên thường được nhắc đến như Ada và một số ngôn ngữ ít được biết đến như JOVIAL (ngày và giờ đã "nghỉ hưu" kể từ năm 2010) .


Câu hỏi StackExchange liên quan:


2
@mattnz: Cảm ơn. Nhưng thật ra nó hơi xa so với những gì OP đang hỏi. Tôi đã cố gắng cung cấp cái nhìn sâu sắc và con trỏ hữu ích cho mục đích tài liệu, nhưng khi nói đến chi tiết triển khai thực tế thì việc tìm dữ liệu cứng khó hơn.
haylem

"Và chúng thực sự là sự kết hợp của vô số hệ thống độc lập hoặc phụ thuộc lẫn nhau", ý bạn là có phần cứng riêng biệt cho những hệ thống này không?
stijn

2
Vâng, họ có xu hướng được xây dựng mục đích phần cứng. Không có giá x86 chiếc nào đang chạy máy bay của bạn.
Giàn khoan

3
@stijn: Vâng, vâng. Nghĩ theo cách này. Họ là hệ thống kiểm soát và giám sát quan trọng . Nếu một trong số họ thất bại, điều đó có nghĩa là vấn đề lớn, với một chữ F siêu lớn và kém lịch sự hơn thế. Vì vậy, thông thường, đó là một) tùy chỉnh được xây dựng cho mục đích nhiệm vụ của họ b) được xây dựng để hoạt động độc lập và giao diện với các hệ thống khác c) được xây dựng để có khả năng chịu lỗi với các lỗi của chính nó và các lỗi của các hệ thống khác mà nó gây ra (vì bạn không Chẳng hạn, muốn hệ thống âm thanh của phi công gỡ bỏ các điều khiển động cơ). Nó không phải là một máy tính lớn chạy mọi thứ.
haylem

@stijn: Hãy nghĩ về nó từ quan điểm của một chiếc máy bay quân sự chứ không phải là một chiếc máy bay thương mại, nếu điều đó có ích: nếu một bộ phận bị bắn vào, ít nhất bạn sẽ có một số bộ phận khác có thể tiếp tục (tôi nói phần điều khiển hệ thống thông tin liên lạc và an toàn có thể rất thú vị để duy trì sự sống ...). Do đó cũng có một loạt các nút lớn bạn thấy trong máy bay phản lực, để theo dõi trạng thái của các hệ thống khác nhau.
haylem

22

Hầu hết các máy bay hiện đại đều sử dụng RTOS (hệ điều hành thời gian thực) cho mục đích chung giống như được sử dụng trong tự động hóa nhà máy, nhà máy điện, tàu thủy, v.v.

Airbus sử dụng một số ít, bao gồm INTEGRITY từ Northrop-grumman và lập trình nó trong C / C ++, Boeing sử dụng VxWorks trong số những người khác


2
Tuyên bố "... mục đích chung RTOS ..." tầm thường hóa những gì cần có cho một RTOS để biến nó thành một hệ thống điện tử hàng không, hầu như không phải là RTOS sử dụng trong Bộ thu phát truyền hình kỹ thuật số ACME Corps.
mattnz

3
Không nhưng VxWorks có thể được sử dụng cho mọi thứ từ Mar Rover đến điện thoại Blackberry của bạn
Martin Beckett

Xin lỗi, đó là QNX được sử dụng trong Blackberry, không phải VxWorks. Nhưng nguyên tắc tương tự cũng được áp dụng - COTS rtos's có thể được sử dụng trên máy bay
Martin Beckett

12

Đối với những gì nó có giá trị: Đối với tàu vũ trụ (vệ tinh và liên hành tinh) C và C ++ vẫn chiếm ưu thế (và tuân thủ rất nghiêm ngặt các tiêu chuẩn ISO), thường chạy VxWorks. Các phòng thí nghiệm thường sẽ gắn bó với C hoặc C ++ dựa trên mức độ quen thuộc của nhà phát triển, sự tin tưởng vào chuỗi công cụ trình biên dịch và các tiêu chuẩn mã hóa nội bộ. Có những lý do thuyết phục cho cả hai ngôn ngữ cho phần mềm bay thời gian thực, nhưng mỗi tổ chức có xu hướng gắn bó với cái này hoặc cái kia. Mặt khác, các công cụ phụ trợ, thường được lập trình bằng tiếng Forth, C và các ngôn ngữ kịch bản ngày càng hiện đại như Lua.


3
Thông thường, nó cũng là một tập hợp con của C hoặc C ++, như MISRA C hoặc JSF C ++, theo như tôi đã đọc.
Coder

10

Cũng đáng lưu ý rằng các hệ thống điều khiển thường được phát triển bằng cách sử dụng thiết kế dựa trên mô hình bằng Simulink. Thiết kế sau đó được chuyển đổi thành mã C tự động. Con người vẫn đọc và xác nhận mã.


Giáo sư của tôi thực sự đã đề cập đến nó khi nói về các hệ thống quan trọng trong Kỹ thuật phần mềm.
Doanh số Dielson

Tôi tin rằng Airbus sử dụng SCADE cho đặc điểm kỹ thuật chức năng của phần cứng và phần mềm trong các hệ thống điều khiển chuyến bay của họ. Công cụ này có thể tạo mã C hoặc Ada.
dodgy_coder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.