- QNX คือ ระบบปฏิบัติการเรียลไทม์แบบไมโครเคอร์เนล ที่เริ่มต้นขึ้นในแคนาดาช่วงต้นทศวรรษ 1980
- รองรับฮาร์ดแวร์ที่หลากหลาย เช่น IBM PC มีความสามารถในการพอร์ตสูง ใช้การส่งข้อความแบบกระจาย และมอบความน่าเชื่อถือกับสภาพแวดล้อมมัลติทาสก์ที่ยอดเยี่ยม
- ถูกนำไปใช้ใน คอมพิวเตอร์เพื่อการศึกษา โครงสร้างพื้นฐานอุตสาหกรรม และระบบยานยนต์ จนมีอิทธิพลอย่างมาก
- เสริม ความเข้ากันได้กับ Unix ผ่านการรองรับ POSIX และพัฒนาต่อด้วย GUI แบบเบา (Photon) พร้อมความสามารถด้านเครือข่ายที่หลากหลาย
- ปรับตัวต่อการเปลี่ยนแปลงของตลาดสมัยใหม่ เช่น ยานยนต์ ระบบฝังตัว และมือถือ พร้อมยกระดับ เสถียรภาพ ประสิทธิภาพ และความปลอดภัย อย่างต่อเนื่อง
จุดเริ่มต้นของระบบปฏิบัติการ QNX
- ในปี 1979 Gordon Bell และ Dan Dodge จาก University of Waterloo ได้สั่งสมประสบการณ์ผ่านโครงการระบบปฏิบัติการเรียลไทม์ชื่อ Thoth
- Thoth มีจุดเด่นด้านความสามารถในการพอร์ตสูง ใช้ การส่งข้อความแบบซิงโครนัส และทำงานได้โดยไม่ผูกกับฮาร์ดแวร์
- หลังจบการศึกษา Bell และ Dodge ได้ก่อตั้ง Quantum Software Systems (ซึ่งภายหลังกลายเป็น QNX Software Systems) และเริ่มพัฒนา OS ของตนเองบนไมโครคอมพิวเตอร์ต้นแบบ (พื้นฐาน 6809)
QUNIX — จุดกำเนิดก่อนเป็น QNX
- เวอร์ชันแรก QUNIX 0.1 พัฒนาขึ้นเป็นระบบปฏิบัติการเรียลไทม์แบบไมโครเคอร์เนลสำหรับ IBM PC รุ่นแรก โดยเป็นการผสมองค์ประกอบของ CP/M และ UNIX
- ต่างจาก Unix แบบดั้งเดิม โดยใช้ โครงสร้างไดเรกทอรีเฉพาะอย่าง /cmds, /config, /sys และมีชุดคำสั่งเฉพาะ เช่น คำสั่ง
help
- ช่วงแรกยังมีข้อจำกัด เช่น การรองรับฮาร์ดดิสก์ (QUNIX 0.4 รองรับ HDD 5MB) และการบูตจากฟลอปปีดิสก์
การเปลี่ยนมาเป็น QNX และการเติบโต
- เนื่องจากปัญหาเครื่องหมายการค้าของ AT&T จึง เปลี่ยนชื่อจาก QUNIX เป็น QNX ในปี 1982 และเปิดตัว QNX 1.0 อย่างเป็นทางการในปี 1983
- เคอร์เนล: โค้ดภาษา C ราว 10,000 บรรทัด มีคุณลักษณะของไมโครเคอร์เนล เช่น การจัดตารางงาน การส่งผ่านข้อความ และการจัดการลำดับความสำคัญ
- บริการส่วนใหญ่ (ระบบไฟล์ ไดรเวอร์ เครือข่าย ฯลฯ) ใช้สถาปัตยกรรมการสื่อสารแบบ message-based
- รองรับ network-transparent message queue, งานพร้อมกันสูงสุด 250 งาน และการใช้งานหลายผู้ใช้
- จำหน่ายในราคา $650 (ข้อมูลปี 1983) พร้อม C compiler, editor และการรองรับเครือข่าย
- QNX 1.2 (1984): เพิ่ม pattern matching, ความสามารถด้าน shell programming, รองรับ IBM AT และปรับราคาลง เป็นต้น
รุกเข้าสู่ภาคการศึกษา: Burroughs ICON
- ได้รับเลือกในโครงการคอมพิวเตอร์มาตรฐานเพื่อการศึกษาของ กระทรวงศึกษาธิการรัฐออนแทรีโอ จนนำไปสู่การพัฒนา คอมพิวเตอร์ ICON (80186, RAM 512K, ใช้ QNX)
- บูตผ่าน file server บนเครือข่าย (ARCNET) ไม่มีอุปกรณ์จัดเก็บข้อมูลเฉพาะเครื่อง และผู้ใช้ใช้โฮมไดเรกทอรีบนเซิร์ฟเวอร์
- มีความพยายามใช้ ‘lessonware’ แบบไฮเปอร์เท็กซ์ รวมถึงสร้างระบบล้ำสมัยที่มีซอฟต์แวร์เพื่อการศึกษาหลากหลาย ระบบเครือข่าย เสียง และความสามารถในการขยายระบบ
การขยายสู่ตลาดอุตสาหกรรมและเชิงพาณิชย์
- ช่วงกลางถึงปลายทศวรรษ 1980 มีการตอบสนองต่อความต้องการตลาด เช่น รองรับ IBM PS/2, LAN, GUI และ DOS emulation (QDOS, RUNDOS)
- ปี 1987 QNX 2: อัปเกรดด้วย IBM AT protected mode, BSD networking, ไฟล์ขนาด 1TB, serial port 32 พอร์ต และ GUI แบบเรียบง่าย (House)
- องค์กรเติบโตขึ้น ทั้งการขยายสำนักงานและย้ายไปยังอาคารสำนักงานใหญ่แห่งใหม่
การนำ POSIX มาใช้และ Photon GUI
- ปี 1991 QNX 4.0: รองรับ POSIX, ทำให้เคอร์เนลเล็กลง (7K, 605 LOC), ปรับปรุง IPC, networking และประสิทธิภาพ
- ปี 1994 เปิดตัว QNX Photon microGUI: GUI แบบเบาบนพื้นฐานไมโครเคอร์เนล มี network transparency และรองรับอุปกรณ์หลากหลาย
- Photon ขยายได้ตั้งแต่สภาพแวดล้อมที่ทรัพยากรจำกัดไปจนถึง GUI ความสามารถสูง พร้อม API ที่เข้ากันได้กับ X Window
- เดโมสภาพแวดล้อมเต็มรูปแบบทั้งหมด (เครือข่าย เว็บเบราว์เซอร์ การจัดการไฟล์ ฯลฯ) มีขนาดเบาพอจะรันได้จากฟลอปปีดิสก์ 1.44MB เพียงแผ่นเดียว
ระบบฝังตัวและระบบกระจายศูนย์ กับวิวัฒนาการสู่ Neutrino
- จนถึง QNX 4.25 (1997) มีการปรับปรุงหลายด้าน และก้าวขึ้นเป็นผู้นำด้านระบบปฏิบัติการเรียลไทม์ในองค์กรขนาดใหญ่และภาคอุตสาหกรรม (โรงไฟฟ้า การแพทย์ การคมนาคม อวกาศ ฯลฯ)
- ปี 1996 QNX Neutrino 1.0: SMP, POSIX ที่เสริมความสามารถ, รองรับ CPU อย่างกว้างขวาง, นำ GNU/GCC มาใช้ และปรับปรุงการจัดการ process/thread
- มีการจัดการหน่วยความจำและการแยก process ที่เข้มงวดยิ่งขึ้น พร้อมนำโค้ดเครือข่ายจาก NetBSD มาใช้เพื่อเพิ่มความเป็นระบบทั่วไป
พันธมิตรและการเข้าสู่ตลาด
- ปี 1998 เดินหน้าความร่วมมือกับ Amiga (แต่สุดท้าย Amiga เลือกใช้ Linux)
- ปี 1999 Neutrino 2.0/2.1: UPM (กลไกการป้องกันระดับเคอร์เนล), รองรับหลายสถาปัตยกรรม เช่น PowerPC/MIPS/ARM และเพิ่มความหลากหลายของสภาพแวดล้อมการพัฒนา
- ปี 1999 ร่วมมือกับ Motorola เพื่อเข้าสู่ระบบอินโฟเทนเมนต์ในรถยนต์ (ระบบนำทาง เสียง ฯลฯ)
ทศวรรษ 2000: จากมัลติมีเดีย ยานยนต์ สู่มือถือ
- ปี 2001 QNX 6.0: รองรับการสตรีมมัลติมีเดีย, web package manager และรวมสภาพแวดล้อมการพัฒนาสำหรับ CPU/สถาปัตยกรรมที่หลากหลาย
- มีการปรับสมัยใหม่ด้วย Momentics Tool Suite บนพื้นฐาน Eclipse (2002), network clustering และ IPv6
- หลังถูก Harman International เข้าซื้อในปี 2004 ก็ มุ่งเน้นตลาดระบบฝังตัวและยานยนต์ พร้อมเปิดตัวแพลตฟอร์ม QNX CAR และถูกนำไปใช้โดยผู้ผลิตรถยนต์รายสำคัญ
- การใช้งานเชิงพาณิชย์ขนาดใหญ่: ภายในปี 2010 มีรถยนต์ 17 ล้านคัน และมากกว่า 200 รุ่นที่ติดตั้งใช้งาน
การเข้าซื้อโดย BlackBerry และวิวัฒนาการด้านมือถือ/ความปลอดภัย
- ปี 2010 Research in Motion (BlackBerry) เข้าซื้อ QNX และ ขยายไปเป็นระบบปฏิบัติการของ BlackBerry PlayBook และ BB10 (=BBX)
- QNX Safety kernel (การรับรอง ISO/IEC, ความปลอดภัยสำหรับงาน mission-critical) ช่วยขยายตลาดระบบฝังตัวที่ต้องการการรับรอง
- Photon ได้รับการปรับปรุงอย่างต่อเนื่อง รวมถึงเครือข่าย มัลติมีเดีย และ UI/UX
- BBX (2013): UI ที่เน้น gesture, มัลติทาสก์ และเฟรมเวิร์กแอปที่หลากหลาย พร้อมฮาร์ดแวร์สมรรถนะสูง
- แต่ไม่ประสบความสำเร็จในการแข่งขันเนื่องจาก ข้อจำกัดของ ecosystem แอป และ การตัดคีย์บอร์ดออก แม้อายุการใช้งานจะถูกยืดไปจนถึงปี 2022
บทสรุป
- QNX โดดเด่นด้านความเป็นเรียลไทม์ การออกแบบเคอร์เนลแบบอะตอมมิก การประมวลผลหลายโปรเซสแบบ network-transparent ความสามารถในการขยายตัว และความปลอดภัย
- สร้างพื้นที่เฉพาะของตนเองได้จากความเข้ากันได้กับ Unix และการใช้งานในภาคอุตสาหกรรม ยานยนต์ และระบบฝังตัว
- แม้จะไม่ประสบความสำเร็จในการแข่งขันด้านโอเพนซอร์สและการเข้าสู่สภาพแวดล้อมมือถือกระแสหลัก แต่ก็ยัง รักษาชื่อเสียงระดับมาตรฐานอุตสาหกรรมในงาน mission-critical ไว้ได้
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ฉันมีความทรงจำสนุก ๆ เกี่ยวกับ OS นี้ ตอนประถมมีคอมพิวเตอร์ ICON อยู่ในห้องเรียน และจำได้ว่าแข่งกับเพื่อน ๆ ว่าใครจะหมุนแทร็กบอลได้เร็วที่สุด ตอนทำงานที่ BlackBerry ฉันเคยพัฒนาฟีเจอร์ให้ QNX BlackBerry ใช้งานเป็นอุปกรณ์ Bluetooth HID ได้ ทำให้ควบคุมโน้ตบุ๊กจากระยะไกลด้วยแทร็กแพดและคีย์บอร์ดจริงได้ ซึ่งมีประโยชน์มากตอนพรีเซนต์ แต่แล้วก็มี PM คนหนึ่งสั่งให้จำกัดฟีเจอร์นี้ไว้สำหรับ Playbook เท่านั้น จนแทบไร้ประโยชน์ ฉันจำได้ชัดว่า Dan Dodge ยืนกรานว่าเมื่อเป็นมาตรฐานแล้วก็ไม่ควรใส่ข้อจำกัดแบบนั้น นั่นทำให้ฉันยิ่งเคารพ Dan Dodge และไม่อยากร่วมงานกับ PM คนนั้นอีก
น่าทึ่งที่คอมพิวเตอร์ ICON ใช้ OS นี้เป็นฐาน ตอนนั้นมันล้ำหน้ากว่า PC ทั่วไปมาก ยกเว้นอย่างเดียวคือฟังก์ชันให้ ICON คุยกันเองสามารถทำให้ระบบอื่นหรือทั้งเครือข่ายล่มได้ง่ายมาก
สุดท้าย QNX ก็กลายมาเป็น BlackBerry 10 มันคือ mobile OS ที่ดีที่สุดที่ฉันเคยใช้มาเลย น่าเสียดายที่มีคนใช้กันน้อยมาก
ฉันเคยใช้ฟีเจอร์ HID ที่คุณทำไว้ และชอบมันมากจริง ๆ
KDE Connect ทำสิ่งเดียวกันนี้ได้ดีกว่าแทบทั้งหมด ยอดเยี่ยมจริง ๆ
อยากให้ประสบการณ์ ICON ถูกเก็บรักษาไว้ในรูปแบบ emulator เดี๋ยวนี้น่าจะถึงขั้นจำลองทั้งเครือข่าย ICON ในเบราว์เซอร์ได้แล้ว
ฉันชอบความงามแบบมินิมอลของ QNX Photon มาก ถึงขั้นคงค่า FVWM ที่ซับซ้อนไว้เพื่อรักษากลิ่นอายของ Photon ให้มากที่สุด อ้างอิงเป็นภาพหน้าจอเดสก์ท็อป Gentoo ปี 2004 ภาพหน้าจอเดสก์ท็อป
ฉันก็เอาค่าตั้งของคุณมาใช้และรักษาไว้นานกว่า 15 ปีแล้ว
ดูตอนนี้ก็ยังเท่มาก สงสัยว่ายังเก็บ dotfiles ไว้อยู่ไหม
เหนือกว่า WindowMaker theme ของฉันมาก FVWM theme ของคุณเจ๋งจริง
ของในภาพหน้าจอคือ Winamp เลียนแบบใช่ไหม
ฉันชอบแนวคิดของ QNX มากจนคาดหวังไว้สูงมาก ตอนนั้นทีมของเรากำลังย้าย optical food processor จาก DSP ไปยังฮาร์ดแวร์ทั่วไป (FireWire, 1394) การแยก process ของ QNX นั้นยอดเยี่ยมมาก แต่ overhead ของการส่งข้อมูลแบบ message-based ไม่น่าพอใจนัก สุดท้ายเราจ่าย 2,000 ดอลลาร์เพื่อให้ไดรเวอร์ 1394 บน Linux รองรับ isochronous mode/dma และใช้ร่วมกับ RT extensions บทเรียนที่ได้จากเรื่องนี้คือ “กฎการอนุรักษ์ความน่าเกลียด” ในระบบซอฟต์แวร์จะมี “ความน่าเกลียด” ที่ไม่มีวันทำให้สวยได้หมดอยู่บางจุดเสมอ และเมื่อคุณแก้ให้ด้านหนึ่งดีขึ้น ความน่าเกลียดนั้นก็จะย้ายไปอยู่ที่อื่น
ฉันคิดว่า “กฎการอนุรักษ์ความน่าเกลียด” โดยแก่นแล้วคล้ายกับ “หลักการเตียงน้ำ” มาก ในระบบที่มีความซับซ้อนระดับหนึ่ง ถ้ากดปัญหาตรงหนึ่งลง มันจะปูดขึ้นที่อื่นแน่นอน ถ้าอยากรู้เพิ่มเติมเกี่ยวกับหลักการเตียงน้ำ ดูได้ที่นี่
มีแนวคิดที่จะทำให้การส่งข้อความใน QNX เร็วขึ้น โดยใช้กลไก paging ในการส่งข้อความ คืออัปเดตแค่ page table โดยไม่ต้องคัดลอกข้อมูล แน่นอนว่ายังมี overhead ของ double TSS load เมื่อเทียบกับ macro kernel แต่ก็ถือว่าเร็ว ถึงอย่างนั้นความสง่างามก็ต้องแลกด้วยต้นทุน เมื่อคิดถึง latency, reliability, stability และ correctness แล้ว ปัจจัยเหล่านี้หนักกว่าความเร็วในการประมวลผลล้วน ๆ มาก
ทุกวันนี้ DSMP (Direct System Memory Protection) รองรับได้สมบูรณ์แล้ว และประสิทธิภาพของระบบก็ดีขึ้นกว่ามาก ดังนั้น overhead ของการส่งข้อความคงไม่ใช่ปัญหาใหญ่ขนาดนั้นแล้ว ตรงกันข้าม ฉันคิดว่าข้อดีด้านอื่นมีน้ำหนักมากกว่า
สงสัยว่า “optical food processor” เป็นคำเปรียบเปรย หรือเป็นอุปกรณ์ที่ใช้ภาพมาช่วยหั่นอาหารจริง ๆ
รูป ICON ในบล็อกนี้ก็คือ ICON ของฉันเอง และเขานำมาจากบล็อกของฉัน (ขอบคุณที่ให้เครดิต) ขอแชร์โพสต์ของฉันเกี่ยวกับคอมพิวเตอร์ ICON บน QNX โดยโพสต์แรกมีลิงก์ YouTube วิดีโอเดโม QNX ด้วย
โพสต์ ICON
โพสต์ LEXICON
ราวปี 2002 ฉันเคย telnet เข้าไปที่เคเบิลโมเด็ม แล้วพบว่ามันรัน QNX อยู่ ตื่นเต้นมาก
ราวปี 1996 ฉันเคยได้ QNX ที่ใส่ทั้ง RTOS GUI และ network stack ไว้ในฟลอปปีดิสก์แผ่นเดียว และทึ่งกับขนาดที่เล็กมาก แค่ติดตั้ง Slackware ก็ต้องใช้หลายแผ่นแล้ว แต่ QNX กลับอัดทุกอย่างไว้ได้อย่างเหลือเชื่อ
ฉันก็จำได้ demo ตัวเล็กนั้นมีแม้กระทั่งเว็บเบราว์เซอร์อยู่ด้วย ถ้าอยากลองใช้งานเอง ดูได้ที่นี่
เวอร์ชันเดโมแบบนี้จริง ๆ แล้วมีไว้เพื่อโชว์ศักยภาพ ตอนนั้น QNX น่าประทับใจมากจนเป็นที่พูดถึงกันพร้อมหน้าในตลาด live CD อีกอย่าง ตอนนั้นก็มี Linux ที่บูตจากฟลอปปีดิสก์และมีทั้ง X11 กับเว็บเบราว์เซอร์ด้วย ซึ่งน่าทึ่งมากเหมือนกัน ลิงก์คอมเมนต์ HN
ราวปี 2000 ตอนที่ฉันเพิ่งเริ่มลองใช้ Linux desktop ฉันดาวน์โหลด QNX demo มาดูแล้วตกใจมาก
ฉันเคยสร้างระบบหุ่นยนต์ในมหาวิทยาลัยด้วย QNX 4 โดยใช้การ์ด CPU 486/Pentium ที่เชื่อมต่อกันผ่านเครือข่าย จนทำระบบหุ่นยนต์แบบ hard real-time ได้สมบูรณ์ สิ่งที่น่าประทับใจคือ system call พื้นฐานของ QNX (
send/receive/reply) ถูกทำเป็น inline assembly แค่ประมาณ 3 บรรทัดใน header file จากประสบการณ์นี้ ฉันได้เรียนรู้อีกมากในสาย robotics โดยไปลงมือทำความสามารถคล้ายกันด้วยตัวเองบน vxWorks, SunOS และ Linuxบทความระบบหุ่นยนต์
ถ้าอยากลอง QNX บน Raspberry Pi ขอแชร์บทความที่น่าอ้างอิง คู่มือติดตั้ง QNX บน Raspberry Pi
ที่นี่มี image ฟรีของ QNX 8.0 ด้วย สามารถแฟลชลง Pi 4 ใช้งานได้ทันที และยังปรับให้เข้ากับ Pi 400 และ CM4 ได้ด้วย
image ฟรีของ QNX 8.0 และคำแนะนำ
ถ้าอยากใช้ใน virtual machine ก็สามารถหา image เวอร์ชันเก่าได้จาก archive.org
image QNX เวอร์ชันเก่า
ฉันเคยสร้าง audio server บน QNX และพอร์ตทั้งการเข้ารหัส MP3 กับฟังก์ชันเล่นกลับมาด้วย ตอนที่ได้ไปเยี่ยมสำนักงานใหญ่ Dan Dodge สั่งทีมงานให้ช่วยเราอย่างเต็มที่โดยตรง นั่นช่วยให้เราตั้งต้นสตาร์ตอัปได้อย่างมั่นคง และได้รับประโยชน์อย่างมากจนกระทั่งย้ายไป Linux ในอีก 6 ปีต่อมา
ที่ Quantum พวกเขาพูดว่าตนเองเคารพ Unix แต่ก็โปรโมต QNX ว่าเป็นการออกแบบแบบยุค 1980 ที่จะกลายเป็น OS ของยุค 1990 ในเวลานั้นพวกเขาไม่ได้มองถึง GNU, อินเทอร์เน็ต, Microsoft Windows, third-party development, อุปสรรคการเข้าสู่ตลาดของแอปบน Windows, เว็บ, shareware, BBS, VAR และขบวนการซอฟต์แวร์เสรีเลย พวกเขายังพลาดเรื่องที่ว่าตลาดระบบปฏิบัติการเป็นเกมแบบผู้ชนะกินรวบ และนโยบายราคาหลายร้อยดอลลาร์ก็เป็นความผิดพลาดสำคัญ แม้จะหลีกเลี่ยงได้ยากในยุคนั้น แต่ก็เป็นปัญหาที่มองเห็นได้ชัด แน่นอนว่าพวกเขายังตระหนักถึงความสำคัญของ GUI ช้าไปด้วย เพราะ Photon GUI เพิ่งมาถึงใน QNX 4.1 (1994)