ข้อดีของการใช้ RTOS เช่น QNX หรือ VxWorks แทน Linux?


15

เมื่อพัฒนาโซลูชันที่ต้องใช้ระบบปฏิบัติการแบบเรียลไทม์ระบบปฏิบัติการเช่น QNX หรือ VxWorks จะมีประโยชน์เหนือ Linux อย่างไร

หรือจะนำไปทางอื่นตั้งแต่ระบบปฏิบัติการเหล่านี้ได้รับการออกแบบมาโดยเฉพาะสำหรับเวลาจริงการใช้ฝังตัว - เมื่อเทียบกับลินุกซ์ซึ่งเป็นระบบที่กว้างขึ้นที่สามารถปรับให้เหมาะสมกับการใช้งานแบบ real-time - เมื่อคุณจะต้องใช้อย่างใดอย่างหนึ่ง ระบบปฏิบัติการเหล่านี้แทน Linux?

คำตอบ:


14

ระบบฝังตัวบางตัว (a) ต้องตอบสนองความต้องการตามเวลาจริงที่ยากลำบากและ (b) มีฮาร์ดแวร์ที่ จำกัด มาก

หากคุณไม่สามารถเปลี่ยนฮาร์ดแวร์ได้มีหลายสถานการณ์ที่คุณถูกบังคับให้ออกกฎ Linux และใช้อย่างอื่นแทน:

  • บางที CPU ไม่มีแม้แต่ MMU ซึ่งทำให้ไม่สามารถรัน Linux ได้ (ยกเว้น uClinux และเท่าที่ฉันทราบ uClinux ไม่ใช่แบบเรียลไทม์)
  • บางทีซีพียูค่อนข้างช้าและเวลาแฝงการขัดจังหวะกรณีที่เลวร้ายที่สุดใน Linux ล้มเหลวในการตอบสนองความต้องการที่ยากและ RTOS อื่น ๆ ที่ปรับจูนสำหรับการแฝงตัวขัดจังหวะกรณีที่เลวร้ายที่สุดที่ต่ำมากสามารถตอบสนองความต้องการได้
  • บางทีระบบอาจมี RAM น้อยมาก ไม่กี่ปีที่ผ่านมามีการติดตั้ง Linux เพียงเล็กน้อยโดยใช้ RAM ประมาณ 2 MB การติดตั้ง eCos ขั้นต่ำ (ด้วยเลเยอร์ที่เข้ากันได้ทำให้แอพพลิเคชั่นบางตัวที่ออกแบบมาเพื่อทำงานบน Linux) ต้องการ RAM ประมาณ 20 kB
  • อาจจะไม่มีพอร์ตของ Linux ไปยังฮาร์ดแวร์ของคุณและไม่มีเวลาพอที่จะพอร์ต Linux ก่อนที่คุณจะต้องเปิดตัว (pun!) ระบบของคุณ RTOS ที่เรียบง่ายจำนวนมากใช้เวลาในการพอร์ตน้อยกว่าฮาร์ดแวร์ใหม่กว่า Linux

รหัสประเภทใดที่สามารถพกพาได้ระหว่าง RTOS ที่แตกต่างกัน ฉันได้ยินมาว่าโซลูชันบางตัวใช้การลดระดับบนลงล่าง (โดยใช้ RTOS) ในขณะที่โซลูชันอื่น ๆ ถูกสร้างจากล่างขึ้นบน
CMCDragonkai

@CMCDragonkai: โปรแกรมที่เขียนไปยังEL / IX APIสามารถทำงานบนระบบปฏิบัติการที่รองรับ EL / IX ใด ๆ โปรแกรมที่เขียนไปยังPOSIX APIสามารถเรียกใช้บนระบบปฏิบัติการที่รองรับ POSIX โปรแกรมที่เขียนไปยังuITRON APIสามารถเรียกใช้บนระบบปฏิบัติการที่รองรับ uITRON
David Cary

@CMCDragonkai: บางทีโปรแกรมเมอร์อาจจะเป็นสถานที่ที่เหมาะสมกว่าในการถามคำถามเกี่ยวกับ RTOS อื่น ๆ ?
David Cary

8

ฉันไม่ได้ทำงานแบบเรียลไทม์เลยดังนั้นเอาเกลือก้อนนี้ไปด้วย ...

ฉันบอกว่า "เรียลไทม์" มีสองประเภทคือ: เรียลไทม์และเรียลไทม์อ่อน

"Soft เรียลไทม์" อย่างไม่เป็นทางการหมายความว่า "ทำให้เสร็จเร็วที่สุด" ฉันคิดว่า Linux บน CPU สมัยใหม่นั้นดีสำหรับสิ่งนี้

"ฮาร์ดเรียลไทม์" อย่างไม่เป็นทางการหมายถึง "ทำให้เสร็จภายในเวลาที่กำหนด" หน้าต่างอาจมีขนาดค่อนข้างเล็กมิลลิวินาทีหรือบางอย่าง ระบบควบคุมการบินสำหรับขีปนาวุธล่องเรือหรือยานพาหนะส่งดาวเทียมดูเหมือนเป็นตัวอย่างที่ยอมรับได้ ระบบควบคุมกระบวนการอุตสาหกรรมอาจต้องใช้สิ่งนี้ เวิร์ม Stuxnet ดูเหมือนว่าจะมีการเชื่อมโยงกับระบบที่ทำการควบคุมแบบนี้

คุณต้องการใช้ RTOS ในสถานการณ์หลัง RTOS มักจะรับประกันว่าการส่งสัญญาณขัดจังหวะในเวลาน้อยกว่าคำแนะนำหรือเห็บนาฬิกาหรืออะไรก็ตาม

ข้อควรพิจารณาอีกประการหนึ่งคือ RTOS ได้รับการออกแบบทดสอบและ / หรือ "พิสูจน์แล้ว" ว่าไม่ใช้พื้นที่สแต็กโดยไม่มีข้อผูกมัด มันสามารถอยู่ในหน่วยความจำขั้นต่ำจำนวนหนึ่งและสิ่งต่าง ๆ เช่น "OOM Killer" ไม่มีอยู่เพราะไม่จำเป็นต้องพิสูจน์ คุณลักษณะบางอย่างของผู้เริ่มต้นเร็ว FORTRAN มาจากความต้องการประเภทนี้ เมื่อคุณรวบรวมโปรแกรม FORTRAN II คุณจะรู้ว่าต้องใช้สแต็คจำนวนเท่าไรและจำนวนฮีปที่ต้องการเนื่องจากคุณไม่สามารถเรียกคืนได้และคุณไม่สามารถจัดสรรอะไรได้แบบไดนามิก

การพิจารณาครั้งที่สอง (การใช้หน่วยความจำสูงสุดที่รับประกัน) อาจมีความสำคัญมากกว่าในบางแอปพลิเคชันที่สำคัญด้านความปลอดภัยมากกว่า

ฉันยังนึกภาพว่าการลอกกระบวนการเลือกฟิก - ฟิกสนับสนุนคุณจะพบว่าวิศวกรเลือก RTOS เพราะ "ข้อกำหนดบอกกับ"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.