El แนวคิดของระบบเรียลไทม์ ไม่ใช่สิ่งที่คิดใน Linux ในช่วงไม่กี่ปีที่ผ่านมาเนื่องจากแนวคิดนี้ เริ่มเมื่อเกือบ 20 ปีที่แล้ว จริงๆ แล้วคือปี 2005 เป็นส่วนหนึ่งของโครงการ “Realtime-Preempt” (“-rt”) ด้วยการพัฒนาโหมด PREEMPT_RT สำหรับเคอร์เนล Linux
สำหรับผู้ที่ไม่ทราบ PREEMPT_RTพวกเขาควรจะรู้ว่า มันเป็นแพทช์ สำหรับเคอร์เนล Linuxและแปลงระบบปฏิบัติการให้เป็นระบบเรียลไทม์ (เรียลไทม์) เป้าหมายหลักของ PREEMPT_RT คือการลดเวลาแฝงและรับประกันความสามารถในการคาดการณ์ในการดำเนินงาน ซึ่งเป็นสิ่งสำคัญในแอปพลิเคชันที่ต้องการการตอบสนองที่รวดเร็ว
พูดง่ายๆ ก็คือสามารถพูดได้ว่า PREEMPT_RT อนุญาตให้เคอร์เนลเกือบทุกส่วนถูกขัดจังหวะ ซึ่งช่วยลดความล่าช้า ไม่เหมือนกับเคอร์เนลมาตรฐาน ไม่ใช่ทุกส่วนที่สามารถถูกขัดจังหวะได้ ซึ่งอาจทำให้เกิดความล่าช้าในเวลาตอบสนอง
ตั้งแต่ปี 2015 โครงการนี้อยู่ภายใต้การดูแลของมูลนิธิ Linux และจนถึงขณะนี้ การใช้งานโหมด PREEMPT_RT ได้ถูกนำเสนอในรูปแบบของแพตช์ภายนอก ขึ้นอยู่กับแพตช์เหล่านี้ การกระจายเช่น RHEL, SUSE และ Ubuntu ได้สร้างผลิตภัณฑ์รุ่นเรียลไทม์ เป็นที่ต้องการอย่างมากในภาคส่วนต่างๆ เช่น ระบบการเงิน อุปกรณ์ประมวลผลเสียงและวิดีโอ ระบบการบิน การแพทย์ หุ่นยนต์ โทรคมนาคม และการใช้งานทางอุตสาหกรรม ซึ่งจำเป็นอย่างยิ่งที่จะต้องรับประกันเวลาตอบสนองที่คาดการณ์ได้สำหรับเหตุการณ์ต่างๆ
En 2019 กระบวนการส่งเสริมการขายเริ่มต้นขึ้น ของแพตช์ที่พัฒนาในโครงการ PREEMPT_RT ไปยังเคอร์เนล Linux หลัก ในเคอร์เนลเวอร์ชัน 5.3 ตัวเลือก PREEMPT_RT จะรวมอยู่ในไฟล์การกำหนดค่าเพื่อเปิดใช้งานโหมดเรียลไทม์
บิต printk ที่จำเป็นสำหรับ PREEMPT_RT อยู่ใน linux-next นี้ เป็นอุปสรรคสุดท้ายที่ทราบสำหรับ PREEMPT_RT คิว RT มี ยังเป็น "คอนโซลอะตอมมิก" สำหรับ UART 8250 ซึ่งยังไม่ได้เข้ามาด้วย ลินุกซ์ถัดไป นี่หมายถึงพฤติกรรม "คอนโซลแบบเดิม" เช่นเดียวกับการไม่พิมพ์ บริบทของอะตอมในกรณีฉุกเฉิน คอนโทรลเลอร์ UART 8250 เป็นตัวควบคุมเพียงตัวเดียว ซึ่งให้การสนับสนุน "คอนโซลอะตอม" ในปัจจุบัน
ทั้งหมด งานนี้กำลังจะเกิดผลเนื่องจากการรวมการเปลี่ยนแปลงที่จำเป็นโดยสมบูรณ์ใช้เวลาห้าปีและใกล้จะเสร็จสิ้นแล้ว เนื่องจากคาดว่าในเวอร์ชัน 6.12 เคอร์เนลสามารถคอมไพล์ในโหมด PREEMPT_RT โดยไม่จำเป็นต้องใช้แพตช์เพิ่มเติม
เรียกได้ว่าเป็นอุปสรรคสุดท้าย ที่ป้องกันไม่ให้ PREEMPT_RT เปิดใช้งานคือการขาด รองรับเอาต์พุตอะตอมมิกที่ไม่ปิดกั้นโดยใช้ฟังก์ชัน printk ฟังก์ชั่นนี้มีอยู่แล้ว นำมาใช้ในสาขา linux-next นอกจากนี้ คอนโซลอะตอมมิกที่ไม่มีการปิดกั้นกำลังรอการใช้งานสำหรับคอนโทรลเลอร์ 8250 UART ซึ่งปัจจุบันไม่มีอยู่จะป้องกันเอาต์พุตของข้อความฉุกเฉินไปยังคอนโซลจากโค้ดที่ดำเนินการในบริบทของอะตอมมิก
เมื่อรวมบิต printk เข้าด้วยกัน PREEMPT_RT จึงสามารถเปิดใช้งานบน X86, ARM64 ได้ และ Risc-V สถาปัตยกรรมที่รวมเข้าด้วยกันทั้งสามนี้จำเป็นต้องมีการเปลี่ยนแปลงตลอดหลายปีที่ผ่านมา
ปี ทำให้ฉันอยู่ในตำแหน่งที่ฉันไม่มีการเปลี่ยนแปลงที่สำคัญใน
คิวที่จะส่งผลกระทบต่อพวกเขา ARM และ POWERPC ยังมีแพตช์ที่จำเป็นเหลืออยู่...
นักพัฒนาเคอร์เนลลินุกซ์ ได้ประกาศการรวมการเปลี่ยนแปลงที่จำเป็นล่าสุดในสาขา linux-next ซึ่งจะใช้ในการคอมไพล์เวอร์ชัน 6.12 การเปลี่ยนแปลงเหล่านี้จะทำให้เคอร์เนลสามารถคอมไพล์ด้วยตัวเลือก PREEMPT_RT ซึ่งแนะนำความสามารถแบบเรียลไทม์
เมื่อยอมรับการเปลี่ยนแปลงเหล่านี้แล้ว บนสาขาหลักโหมด PREEMPT_RT จะพร้อมใช้งานสำหรับสถาปัตยกรรม X86, ARM64 และ RISC-V การรองรับสถาปัตยกรรม ARM และ POWERPC จะถูกเพิ่มในภายหลัง เนื่องจากแพตช์ที่จำเป็นยังไม่ได้รับการบูรณาการอย่างสมบูรณ์
เป็นที่น่าสังเกตว่าการเปลี่ยนแปลงที่เสนอนั้นยังไม่สิ้นสุด และอาจเป็นไปได้ว่าหาก PREEMPT_RT ยังไม่มาถึงในเวอร์ชัน 6.12 ก็จะถูกรวมเข้ากับเวอร์ชัน 6.13 จนถึงปีหน้า
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถตรวจสอบรายละเอียดได้ในไฟล์ ลิงค์ต่อไปนี้