לינוקס 6.12 יכולה לקבל תמיכה ב-"PREEMPT_RT" בזמן אמת

Preempt-RT הוא שינוי המאפשר למשימות עם עדיפות גבוהה יותר להפריע למשימות עם עדיפות נמוכה יותר.

El רעיון של מערכת זמן אמת זה לא משהו שחשבו עליו בשנים האחרונות בלינוקס, מאז הרעיון של זה התחיל לפני כמעט 20 שנה, ליתר דיוק ב-2005 כחלק מפרויקט "Realtime-Preempt" ("-rt") עם פיתוח מצב PREEMPT_RT עבור ליבת לינוקס.

למי שלא יודע PREEMPT_RT, הם צריכים לדעת את זה זה תיקון עבור ליבת לינוקסוממיר את מערכת ההפעלה למערכת בזמן אמת (בזמן אמת). המטרה העיקרית של PREEMPT_RT היא להפחית את זמן ההשהיה ולהבטיח יכולת חיזוי בביצוע המשימות, שהיא חיונית ביישומים הדורשים תגובות מהירות.

במילים פשוטות יותר, אנו יכולים לומר ש-PREEMPT_RT מאפשר להפריע כמעט לכל חלקי הקרנל, מה שמפחית את ההשהיה. בניגוד לגרעין רגיל, לא כל הקטעים ניתנים להפסקה, מה שעלול לגרום לעיכובים בזמני תגובה.

מאז 2015 הפרויקט נמצא בפיקוח של קרן לינוקס ועד עכשיו, היישום של מצב PREEMPT_RT הוצע בצורה של תיקונים חיצוניים. בהתבסס על תיקונים אלה, הפצות כגון RHEL, SUSE ואובונטו יצרו מהדורות בזמן אמת של המוצרים שלהם, מבוקש מאוד במגזרים כמו מערכות פיננסיות, מכשירי עיבוד אודיו ווידאו, מערכות תעופה, רפואה, רובוטיקה, טלקומוניקציה ויישומים תעשייתיים, שבהם חיוני להבטיח זמני תגובה צפויים לאירועים.

En בשנת 2019 החל תהליך הקידום מהטלאים שפותחו בפרויקט PREEMPT_RT לקרנל הראשי של לינוקס. בגרסת ליבה 5.3, האפשרות PREEMPT_RT נכללה בקובץ התצורה כדי לאפשר מצב בזמן אמת.

סיביות ה-printk הנדרשות עבור PREEMPT_RT ממוקמות ב-linux-next. זֶה היה המכשול הידוע האחרון עבור PREEMPT_RT. לתור RT יש גם ה"קונסולה האטומית" ל-UART 8250 שעדיין לא נכנסה linux-next. המשמעות היא התנהגות של "מסוף מדור קודם" כמו אי הדפסה ממנה ההקשר האטומי במקרים של חירום. בקר 8250 UART הוא היחיד אשר מספקת תמיכה ב"קונסולה אטומית" כיום.

כל העבודה הזו עומדת להניב פרי, מאחר והשילוב המלא של השינויים הדרושים נמשך חמש שנים והוא לקראת סיום, מאחר שצפוי כי בגרסה 6.12 ניתן להדר את הליבה במצב PREEMPT_RT ללא צורך בהחלת תיקונים נוספים.

מוזכר כי המכשול האחרון שמנע את הפעלת PREEMPT_RT היה היעדר תמיכה בפלט אטומי לא חוסם באמצעות הפונקציה printk. פונקציונליות זו כבר הייתה אומצה בענף linux-next. בנוסף, קונסולה אטומית לא חוסמת ממתינה להטמעה עבור בקר 8250 UART, שהיעדרה מונעת כעת את הפלט של הודעות חירום לקונסולה מקוד המבוצע בהקשרים אטומיים.

עם מיזוג סיביות printk, PREEMPT_RT יכול להיות מופעל ב-X86, ARM64 ו-Risk-V. שלוש הארכיטקטורות הממוזגות הללו דרשו שינויים במהלך השנים.
שנים, מה שמותיר אותי במצב שבו אין לי שינויים מהותיים ב
תור שישפיע עליהם. ל-ARM ול-POWERPC נותרו כמה תיקונים חיוניים...

מפתחי ליבות לינוקס הכריזו על שילוב השינויים ההכרחיים האחרונים בענף linux-next, אשר ישמש להידור גרסה 6.12. שינויים אלו יאפשרו קומפילציה של הליבה עם אפשרות PREEMPT_RT, שמציגה יכולות בזמן אמת.

ברגע שהשינויים האלה יתקבלו בסניף הראשי, מצב PREEMPT_RT זה יהיה זמין עבור ארכיטקטורות X86, ARM64 ו-RISC-V. תמיכה בארכיטקטורות ARM ו-POWERPC תתווסף מאוחר יותר, מכיוון שהתיקונים הדרושים עדיין לא שולבו במלואם.

ראוי להזכיר שהשינויים המוצעים עדיין אינם סופיים וייתכן שאם PREEMPT_RT לא יגיע לסניף 6.12, הוא ישולב עד השנה הבאה בגרסה 6.13.

לבסוף, אם אתה מעוניין לדעת יותר על כך, אתה יכול לבדוק את הפרטים ב הקישור הבא.