Το Linux 6.12 θα μπορούσε να έχει υποστήριξη "PREEMPT_RT" σε πραγματικό χρόνο

Το Preempt-RT είναι μια τροποποίηση που επιτρέπει σε εργασίες με υψηλότερη προτεραιότητα να διακόπτουν εργασίες με χαμηλότερη προτεραιότητα.

El έννοια ενός συστήματος σε πραγματικό χρόνο Δεν είναι κάτι που έχει σκεφτεί τα τελευταία χρόνια στο Linux, από τότε που έγινε η ιδέα ξεκίνησε πριν από σχεδόν 20 χρόνια, για την ακρίβεια το 2005 ως μέρος του έργου "Realtime-Preempt" ("-rt") με την ανάπτυξη της λειτουργίας PREEMPT_RT για τον πυρήνα του Linux.

Για όσους δεν ξέρουν PREEMPT_RT, πρέπει να το γνωρίζουν αυτό είναι ένα μπάλωμα για τον πυρήνα του Linuxκαι μετατρέπει το λειτουργικό σύστημα σε πραγματικό χρόνο (σε πραγματικό χρόνο). Ο κύριος στόχος του PREEMPT_RT είναι να μειώσει τον λανθάνοντα χρόνο και να εξασφαλίσει προβλεψιμότητα στην εκτέλεση εργασιών, κάτι που είναι κρίσιμο σε εφαρμογές που απαιτούν γρήγορες αποκρίσεις.

Με πιο απλά λόγια, μπορούμε να πούμε ότι PREEMPT_RT επιτρέπει τη διακοπή σχεδόν όλων των τμημάτων του πυρήνα, που μειώνει την καθυστέρηση. Σε αντίθεση με έναν τυπικό πυρήνα, δεν μπορούν να διακοπούν όλες οι ενότητες, γεγονός που μπορεί να προκαλέσει καθυστερήσεις στους χρόνους απόκρισης.

Από το 2015 το έργο βρίσκεται υπό την επίβλεψη του Ιδρύματος Linux και μέχρι τώρα, η υλοποίηση της λειτουργίας PREEMPT_RT προσφέρεται με τη μορφή εξωτερικών ενημερώσεων κώδικα. Με βάση αυτά τα patches, διανομές όπως Η RHEL, η SUSE και το Ubuntu έχουν δημιουργήσει εκδόσεις των προϊόντων τους σε πραγματικό χρόνο, μεγάλη ζήτηση σε τομείς όπως τα χρηματοοικονομικά συστήματα, οι συσκευές επεξεργασίας ήχου και εικόνας, τα αεροπορικά συστήματα, η ιατρική, η ρομποτική, οι τηλεπικοινωνίες και οι βιομηχανικές εφαρμογές, όπου είναι απαραίτητο να εξασφαλιστούν προβλέψιμοι χρόνοι απόκρισης για εκδηλώσεις.

En Το 2019 ξεκίνησε η διαδικασία προώθησης των ενημερώσεων κώδικα που αναπτύχθηκαν στο έργο PREEMPT_RT στον κύριο πυρήνα του Linux. Στην έκδοση 5.3 του πυρήνα, η επιλογή PREEMPT_RT συμπεριλήφθηκε στο αρχείο διαμόρφωσης για να ενεργοποιηθεί η λειτουργία σε πραγματικό χρόνο.

Τα bits εκτύπωσης που απαιτούνται για το PREEMPT_RT βρίσκονται στο linux-next. Αυτό ήταν το τελευταίο γνωστό εμπόδιο για το PREEMPT_RT. Η ουρά RT έχει επίσης η "ατομική κονσόλα" για το UART 8250 που δεν είναι ακόμα μέσα linux-next. Αυτό σημαίνει συμπεριφορά "παλαιού τύπου κονσόλας" όπως στη μη εκτύπωση από το ατομικό πλαίσιο σε περιπτώσεις έκτακτης ανάγκης. Ο ελεγκτής 8250 UART είναι ο μόνος που παρέχει σήμερα υποστήριξη "ατομικής κονσόλας".

όλα Αυτό το έργο πρόκειται να αποδώσει καρπούς., αφού η πλήρης ενσωμάτωση των απαραίτητων αλλαγών κράτησε πέντε χρόνια και πλησιάζει στην ολοκλήρωση, αφού αναμένεται ότι στην έκδοση 6.12, ο πυρήνας μπορεί να μεταγλωττιστεί σε λειτουργία PREEMPT_RT χωρίς να χρειάζεται να εφαρμοστούν πρόσθετα patches.

Αναφέρεται ότι το τελευταίο εμπόδιο που εμπόδισε την ενεργοποίηση του PREEMPT_RT ήταν η έλλειψη υποστήριξη για μη αποκλειστική ατομική έξοδο χρησιμοποιώντας τη λειτουργία printk. Αυτή η λειτουργία ήταν ήδη εγκρίθηκε στο linux-next κλάδο. Επιπλέον, εκκρεμεί η εφαρμογή μιας ατομικής κονσόλας χωρίς αποκλεισμό για τον ελεγκτή 8250 UART, η απουσία του οποίου αποτρέπει επί του παρόντος την έξοδο μηνυμάτων έκτακτης ανάγκης στην κονσόλα από τον κώδικα που εκτελείται σε ατομικά περιβάλλοντα.

Με τα bits printk συγχωνευμένα, το PREEMPT_RT θα μπορούσε να ενεργοποιηθεί σε X86, ARM64 και Risc-V. Αυτές οι τρεις συγχωνευμένες αρχιτεκτονικές απαιτούσαν αλλαγές με τα χρόνια.
χρόνια, αφήνοντάς με σε μια θέση όπου δεν έχω ουσιαστικές αλλαγές στο
ουρά που θα τους επηρέαζε. Οι ARM και POWERPC έχουν κάποιες βασικές ενημερώσεις κώδικα που απομένουν…

Προγραμματιστές πυρήνα Linux ανακοίνωσαν την ενσωμάτωση των τελευταίων απαραίτητων αλλαγών στον κλάδο του linux-next, το οποίο θα χρησιμοποιηθεί για τη μεταγλώττιση της έκδοσης 6.12. Αυτές οι αλλαγές θα επιτρέψουν τη μεταγλώττιση του πυρήνα με την επιλογή PREEMPT_RT, η οποία εισάγει δυνατότητες σε πραγματικό χρόνο.

Μόλις γίνουν αποδεκτές αυτές οι αλλαγές στον κύριο κλάδο, λειτουργία PREEMPT_RT Θα είναι διαθέσιμο για αρχιτεκτονικές X86, ARM64 και RISC-V. Η υποστήριξη για αρχιτεκτονικές ARM και POWERPC θα προστεθεί αργότερα, καθώς οι απαραίτητες ενημερώσεις κώδικα δεν έχουν ακόμη πλήρως ενσωματωθεί.

Αξίζει να αναφέρουμε ότι οι προτεινόμενες αλλαγές δεν είναι ακόμη οριστικές και είναι πιθανό ότι εάν το PREEMPT_RT δεν φτάσει στον κλάδο 6.12, να ενσωματωθεί μέχρι το επόμενο έτος στην έκδοση 6.13.

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα γι 'αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες στο παρακάτω σύνδεσμο.