1 điểm bởi GN⁺ 2025-10-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • QNX là một hệ điều hành thời gian thực dựa trên vi nhân ra đời tại Canada vào đầu những năm 1980
  • Hỗ trợ nhiều loại phần cứng như IBM PC, cung cấp khả năng chuyển đổi nền tảng cao, truyền thông điệp phân tán, độ tin cậy vượt trội và môi trường đa nhiệm
  • Được ứng dụng trong máy tính giáo dục, hạ tầng công nghiệp, hệ thống xe hơi và có ảnh hưởng lớn
  • Thông qua việc tuân thủ POSIX, hệ thống tăng cường khả năng tương thích với Unix, đồng thời phát triển với GUI nhẹ (Photon) và nhiều tính năng mạng đa dạng
  • Liên tục nâng cao độ ổn định, hiệu năng và bảo mật để thích ứng với những thay đổi mới của thị trường như ô tô, hệ thống nhúng, di động

Khởi đầu của hệ điều hành QNX

  • Năm 1979, Gordon BellDan Dodge tại University of Waterloo đã tích lũy kinh nghiệm thông qua dự án hệ điều hành thời gian thực mang tên Thoth
    • Thoth có đặc điểm là tính di động cao, truyền thông điệp đồng bộ, và hoạt động độc lập với phần cứng
  • Sau khi tốt nghiệp, Bell và Dodge thành lập Quantum Software Systems (sau này là QNX Software Systems), bắt tay phát triển hệ điều hành riêng trên máy vi tính nguyên mẫu (dựa trên 6809)

QUNIX — tiền thân của QNX

  • Phiên bản đầu tiên QUNIX 0.1 được phát triển như một hệ điều hành thời gian thực dựa trên vi nhân, kết hợp các yếu tố của CP/M và UNIX, đồng thời là hệ điều hành thời gian thực vi nhân đầu tiên cho IBM PC
  • Khác với Unix truyền thống, hệ thống đưa vào cấu trúc thư mục riêng như /cmds, /config, /sys cùng hệ thống lệnh đặc trưng như lệnh help
  • Có những giới hạn ban đầu như hỗ trợ ổ cứng (QUNIX 0.4 với HDD 5MB), khởi động dựa trên đĩa mềm

Chuyển đổi sang QNX và tăng trưởng

  • Do vấn đề thương hiệu với AT&T, năm 1982 tên được đổi từ QUNIX thành QNX, và năm 1983 QNX 1.0 chính thức phát hành
    • Kernel: khoảng 10.000 dòng mã C, mang đặc trưng vi nhân như lập lịch, message passing, xử lý ưu tiên
    • Phần lớn dịch vụ (hệ thống tệp, driver, mạng...) sử dụng cấu trúc giao tiếp dựa trên thông điệp
    • Hỗ trợ hàng đợi thông điệp trong suốt qua mạng, tối đa 250 tác vụ đồng thời, cho phép nhiều người dùng
  • Được bán với giá $650 (theo mức giá năm 1983), bao gồm trình biên dịch C, trình soạn thảo và hỗ trợ mạng
  • QNX 1.2 (1984): tăng cường pattern matching, lập trình shell, hỗ trợ IBM AT, giảm giá...

Tiến vào lĩnh vực giáo dục: Burroughs ICON

  • Được chọn cho dự án máy tính tiêu chuẩn dùng trong giáo dục của Bộ Giáo dục Ontario, từ đó phát triển máy tính ICON (80186, 512K RAM, chạy QNX)
  • Khởi động qua file server dựa trên mạng (ARCNET), không có thiết bị lưu trữ riêng, người dùng sử dụng thư mục home trên server
  • Thử nghiệm ‘lessonware’ dựa trên hypertext và xây dựng kinh nghiệm với hệ thống tiên tiến có phần mềm giáo dục đa dạng, mạng, âm thanh và khả năng mở rộng

Mở rộng sang thị trường công nghiệp và thương mại

  • Vào nửa sau thập niên 1980, hệ thống phản ánh nhu cầu thị trường như hỗ trợ IBM PS/2, LAN, GUI, giả lập DOS (QDOS, RUNDOS)
  • Năm 1987, QNX 2: nâng cấp với chế độ bảo vệ của IBM AT, mạng BSD, tệp 1TB, 32 cổng serial, GUI đơn giản (House)
  • Tổ chức phát triển với việc mở rộng văn phòng, chuyển sang trụ sở mới

Áp dụng POSIX và Photon GUI

  • Năm 1991, QNX 4.0: tuân thủ POSIX, thu nhỏ kernel (7K, 605 LOC), cải thiện IPC, mạng và hiệu năng
  • Năm 1994 phát hành QNX Photon microGUI: GUI nhẹ dựa trên vi nhân, tính trong suốt qua mạng, hỗ trợ nhiều thiết bị
    • Photon có thể mở rộng từ môi trường hạn chế tài nguyên đến GUI nhiều tính năng, đồng thời có API tương thích X Window
    • Toàn bộ môi trường demo (mạng, trình duyệt web, quản lý tệp...) được tối ưu nhẹ tới mức chạy trên một đĩa mềm 1.44MB

Hệ thống nhúng và phân tán, tiến hóa thành Neutrino

  • Tới QNX 4.25 (1997), hệ thống có nhiều cải tiến và dẫn đầu mảng hệ điều hành thời gian thực tại các doanh nghiệp lớn và hiện trường công nghiệp (nhà máy điện, y tế, giao thông, vũ trụ...)
  • Năm 1996, QNX Neutrino 1.0: SMP, POSIX tăng cường, hỗ trợ CPU rộng rãi, áp dụng GNU/GCC, tăng cường quản lý tiến trình/luồng
    • Quản lý bộ nhớ và cách ly tiến trình chặt chẽ hơn, đồng thời tích hợp mã mạng của NetBSD để nâng cao tính phổ dụng

Quan hệ đối tác và thâm nhập thị trường

  • Năm 1998 thúc đẩy quan hệ đối tác với Amiga (cuối cùng Amiga chọn Linux)
  • Năm 1999, Neutrino 2.0/2.1: UPM (cơ chế bảo vệ ở cấp kernel), hỗ trợ đa kiến trúc như PowerPC/MIPS/ARM, đa dạng hóa môi trường phát triển
  • Năm 1999 hợp tác với Motorola, tiến vào hệ thống infotainment ô tô (điều hướng, âm thanh...)

Thập niên 2000: tới đa phương tiện, ô tô và di động

  • Năm 2001, QNX 6.0: streaming đa phương tiện, web package manager, tích hợp môi trường phát triển cho nhiều CPU/kiến trúc
  • Momentics Tool Suite dựa trên Eclipse (2002), network clustering, IPv6 và các bước hiện đại hóa khác
  • Sau khi được Harman International mua lại năm 2004, công ty tập trung vào thị trường nhúng và ô tô, giới thiệu nền tảng QNX CAR và được các hãng xe lớn áp dụng
  • Thương mại hóa quy mô lớn: tới năm 2010, được triển khai trên 17 triệu xe và hơn 200 mẫu xe

BlackBerry mua lại và tiến hóa về di động/bảo mật

  • Năm 2010, Research in Motion (BlackBerry) mua lại QNX, mở rộng thành hệ điều hành cho BlackBerry PlayBook và BB10 (=BBX)
    • QNX Safety kernel (chứng nhận ISO/IEC, bảo mật cho hệ thống mission-critical), mở rộng thị trường chứng nhận nhúng
    • Photon tiếp tục được cải tiến, cùng với mạng, đa phương tiện, UI/UX...
  • BBX (2013): UI tập trung vào cử chỉ, đa nhiệm, nhiều framework ứng dụng, tích hợp phần cứng hiệu năng cao
    • Tuy nhiên đã thất bại trong cạnh tranh do hệ sinh thái ứng dụng hạn chế, loại bỏ bàn phím..., dù vòng đời được kéo dài tới năm 2022

Kết luận

  • QNX nổi bật ở tính thời gian thực, thiết kế kernel nguyên tử, multiprocessing trong suốt qua mạng, khả năng mở rộng và bảo mật
  • Xây dựng được vị thế riêng với khả năng tương thích Unix cùng các lĩnh vực công nghiệp, ô tô và hệ thống nhúng
  • Dù thất bại trong cạnh tranh với mã nguồn mở và môi trường di động đại chúng, hệ thống vẫn duy trì danh tiếng ở tầm tiêu chuẩn ngành trong các lĩnh vực mission-critical

1 bình luận

 
GN⁺ 2025-10-07
Ý kiến trên Hacker News
  • Tôi có vài kỷ niệm thú vị liên quan đến OS này. Hồi tiểu học, trong lớp có máy tính ICON, và tôi nhớ mình cùng bạn bè thi xem ai xoay trackball nhanh nhất. Khi làm ở BlackBerry, tôi đã phát triển một tính năng biến QNX BlackBerry thành thiết bị Bluetooth HID. Nhờ đó có thể điều khiển từ xa laptop bằng trackpad và bàn phím vật lý, rất hữu ích khi thuyết trình. Nhưng rồi có một PM yêu cầu giới hạn tính năng này chỉ cho Playbook, khiến nó gần như vô dụng. Tôi vẫn nhớ rất rõ Dan Dodge đã lập luận rằng vì đó là tiêu chuẩn nên không nên áp đặt hạn chế. Từ đó tôi càng kính trọng Dan Dodge, còn PM kia thì tôi không muốn làm việc cùng lần nào nữa

    • Thật bất ngờ khi biết máy tính ICON chạy trên nền OS này. Nó tiến bộ hơn PC phổ thông thời đó rất nhiều. Chỉ có điều tính năng cho các máy ICON "nói chuyện" với nhau lại có thể dễ dàng làm sập hệ thống khác hoặc cả mạng

    • QNX cuối cùng đã trở thành BlackBerry 10. Đó là mobile OS tốt nhất mà tôi từng dùng. Chỉ tiếc là rất ít người được sử dụng nó

    • Tôi đã dùng tính năng HID mà bạn làm, và thực sự rất thích nó

    • KDE Connect về cơ bản làm cùng chức năng đó nhưng còn tốt hơn. Thật lòng là quá xuất sắc

    • Tôi ước gì trải nghiệm ICON có thể được bảo tồn bằng emulator. Giờ chắc có thể mô phỏng cả mạng ICON ngay trong trình duyệt

  • Tôi thực sự thích phong cách tối giản của QNX Photon. Tôi từng giữ một cấu hình FVWM khá phức tạp chỉ để tái hiện cảm giác Photon nhiều nhất có thể. Đây là ảnh chụp desktop Gentoo năm 2004 của tôi ảnh chụp desktop

    • Tôi cũng đã lấy cấu hình của bạn và giữ nó suốt hơn 15 năm

    • Đến giờ nhìn vẫn rất đẹp. Không biết bạn còn giữ dotfiles không

    • Vượt xa theme WindowMaker của tôi. Theme FVWM của bạn thật sự rất đẹp

    • Thứ trong ảnh chụp màn hình kia chẳng phải bản nhái Winamp sao?

  • Tôi cực kỳ thích ý tưởng QNX nên đã kỳ vọng rất nhiều. Khi đó nhóm chúng tôi đang chuyển một optical food processor từ DSP sang phần cứng phổ thông (FireWire, 1394). Cơ chế cô lập tiến trình của QNX rất ấn tượng, nhưng overhead của việc truyền dữ liệu dựa trên message thì không được như mong đợi. Cuối cùng chúng tôi đã trả 2.000 đô để có hỗ trợ isochronous mode/dma cho driver 1394 của Linux, rồi dùng nó cùng RT extensions. Bài học tôi rút ra từ chuyện đó là “định luật bảo toàn sự xấu xí”. Trong một hệ thống phần mềm, luôn có một phần nào đó không thể thanh lịch được; nếu bạn cải thiện chỗ này thì cái “xấu xí” đó sẽ chuyển sang chỗ khác

    • Tôi nghĩ “định luật bảo toàn sự xấu xí” về bản chất rất giống “nguyên lý waterbed”. Trong các hệ thống có mức độ phức tạp nhất định, nếu bạn ấn xuống một vấn đề ở chỗ này thì nó sẽ lồi lên ở chỗ khác. Nếu muốn tìm hiểu thêm về nguyên lý waterbed, có thể xem ở đây

    • Có một ý tưởng để tăng tốc truyền message trên QNX: dùng cơ chế paging để gửi message, tức là chỉ cập nhật page table mà không cần copy dữ liệu. Dĩ nhiên vẫn còn overhead double TSS load so với macro kernel, nhưng vẫn khá nhanh. Dù vậy, sự thanh lịch luôn có cái giá của nó. Nếu xét cả độ trễ, độ tin cậy, độ ổn định và tính chính xác, thì các yếu tố này nặng ký hơn nhiều so với tốc độ xử lý đơn thuần

    • Ngày nay DSMP (Direct System Memory Protection) đã được hỗ trợ đầy đủ, và hiệu năng hệ thống cũng vượt trội hơn hẳn, nên tôi không nghĩ overhead của việc truyền message còn là vấn đề lớn nữa. Ngược lại, tôi cho rằng các ưu điểm khác đáng giá hơn nhiều

    • Tôi tò mò liệu “optical food processor” là cách nói ẩn dụ hay thật sự là một thiết bị dùng hình ảnh để cắt thực phẩm

  • Bức ảnh ICON trong blog này chính là máy ICON của tôi, và họ lấy từ blog của tôi (cảm ơn vì đã ghi nguồn). Tôi chia sẻ bài viết của mình về máy tính ICON chạy QNX. Bài đầu tiên cũng có link YouTube đến video demo QNX
    bài viết về ICON
    bài viết về LEXICON

    • Tôi muốn hỏi liệu bạn có định sao lưu phần mềm hoặc ROM lên archive.org không. Việc làm emulator cho hệ thống này từng bị chặn lại vì vấn đề khó tiếp cận ROM
  • Khoảng năm 2002, tôi telnet vào cable modem của mình và rất ngạc nhiên khi thấy nó đang chạy QNX

  • Khoảng năm 1996, tôi đã nhận được QNX trên đúng một đĩa mềm, với cả RTOS GUI lẫn network stack, và kinh ngạc trước dung lượng nhỏ bé đó. Chỉ riêng cài Slackware đã cần nhiều đĩa, nên QNX thực sự khó tin

    • Tôi cũng nhớ điều đó. Bản demo bé xíu ấy thậm chí còn có cả web browser. Nếu muốn tự trải nghiệm thì có thể xem ở đây

    • Các bản demo như thế thực ra được tạo ra để phô diễn tính năng. Thời đó QNX gây ấn tượng mạnh đến mức ở thị trường live CD ai cũng trầm trồ khen ngợi. Nhân tiện, khi ấy cũng có Linux chạy từ đĩa mềm với X11 và web browser, và nó cũng thật sự đáng nể liên kết bình luận HN

    • Khoảng năm 2000, đúng lúc đang mày mò Linux desktop thì tôi tải bản demo QNX và bị sốc vì độ ấn tượng của nó

  • Tôi đã xây dựng một hệ thống robot ở đại học bằng QNX 4. Sử dụng các CPU card 486/Pentium kết nối qua mạng, chúng tôi đã tạo được một robot hoàn chỉnh với hard real-time thực thụ. Điều gây ấn tượng là system call cơ bản của QNX (send/receive/reply) được triển khai inline trong header file chỉ với gần như 3 dòng assembly. Từ trải nghiệm đó, tôi đã học được rất nhiều khi tự triển khai các tính năng tương tự trong lĩnh vực robotics trên vxWorks, SunOS, Linux và các hệ khác
    bài báo về hệ thống robot

    • QNX từng là chuẩn mực “biến điều bất khả thành khả thi” cho microkernel OS thực sự được dùng ngoài đời. Tôi tò mò không biết ngày nay nó đứng ở đâu nếu so với các OS hiện đại như Nintendo Switch Horizon, seL4 hay HarmonyOS NEXT
  • Nếu muốn trải nghiệm QNX trên Raspberry Pi, tôi chia sẻ một bài viết đáng tham khảo hướng dẫn cài QNX trên Raspberry Pi

  • Tôi từng làm một audio server bằng QNX và còn port cả chức năng mã hóa lẫn phát MP3. Khi đến thăm trực tiếp trụ sở chính, Dan Dodge đã chỉ đạo cả nhóm hỗ trợ chúng tôi hết mức. Nhờ vậy chúng tôi có thể khởi động startup một cách ổn định, và nó đã giúp ích rất nhiều cho đến khi chuyển sang Linux sau 6 năm

    • Một câu chuyện quá tuyệt. Chúng tôi dự định khơi lại tinh thần đó thông qua QNX Everywhere. Kế hoạch là cung cấp quyền truy cập miễn phí cho cộng đồng và hỗ trợ tối đa có thể
  • Ở Quantum, họ nói rằng họ tôn trọng Unix nhưng lại quảng bá QNX như một OS của thập niên 90 được thiết kế từ thập niên 1980. Khi đó họ đã không tính đến GNU, Internet, Microsoft Windows, phát triển bên thứ ba, rào cản gia nhập của ứng dụng nền Windows, web, shareware, BBS, VAR, phong trào phần mềm tự do, v.v. Thị trường hệ điều hành vốn là cấu trúc winner-takes-all, và chính sách giá vài trăm đô là một nước đi sai. Có lẽ thời đó điều này khó tránh khỏi, nhưng rõ ràng họ đã có vấn đề trong nhận thức. Dĩ nhiên, họ cũng nhận ra tầm quan trọng của GUI khá muộn, và Photon GUI chỉ xuất hiện từ QNX 4.1 (1994)

    • Đây là một hệ thống độc đáo: tương thích POSIX, có thể mở rộng lên desktop/server, cực kỳ ổn định và còn hỗ trợ điều khiển thời gian thực. Nhờ đặc tính real-time mà tương tác rất mượt, và trong giai đoạn 1990~2000 từng có một thị trường ngách đủ để công ty tồn tại. Bản demo năm 1999 nhồi cả GUI hoàn chỉnh, networking lẫn web browser vào 1.44MB đến giờ tôi vẫn chưa thấy mức độ nén tính năng nào tương đương. Ngày nay real-time Linux đã cho hiệu năng ngang ngửa QNX, còn từ QNX 6.6 trở đi thì việc self-hosting development cũng bị dừng, khiến sức hút giảm đi. Về mặt kinh doanh, tập trung vào ô tô/embedded là hợp lý, nhưng với dân mê công nghệ thì vẫn thấy tiếc. Với license đắt đỏ và sự cạnh tranh từ real-time Linux (cao cấp), Zephyr/FreeRTOS (cấp thấp), tôi thật sự không nghĩ ra lý do nào để chọn QNX cho dự án mới. Nếu gần đây ai đã chọn QNX, tôi rất muốn nghe lý do