Ένα πλαίσιο στο Rust θα μπορούσε να εφαρμοστεί στον πυρήνα για τη βελτίωση των οδηγών

Πυρήνας Rust Linux

Josh Triplett, μια εταιρεία με έδρα την Intel και μέλος της επιτροπής εποπτείας ανάπτυξης του Crates.io, παρουσίασε ήδη πριν από λίγες ημέρες μια ομάδα εργασίας στην ομιλία του στο Open Source Technology Summit που στοχεύει να φέρει το Rust στο ίδιο επίπεδο με το C στον προγραμματισμό πυρήνα Linux.

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

Από τις παρόμοιες δυνατότητες που έχουν ήδη αναπτυχθεί για το Rust, υποστηρίζεται η υποστήριξη για ανώνυμες δομές, ενώσεις (ένωση), ένθετα assembler (η μακροεντολή "asm!") και η μορφή αριθμού κινητής υποδιαστολής BFLOAT16.

Ο Τζος πιστεύει ότι το μέλλον του προγραμματισμού συστημάτων ανήκει στον Rust και η γλώσσα C στη σύγχρονη πραγματικότητα ισχυρίζεται ότι είναι η θέση που κατείχε ο Assembler στο παρελθόν. Το Rust όχι μόνο απαλλάσσει τους προγραμματιστές από προβλήματα ειδικά για τη γλώσσα C που προκύπτουν λόγω της εργασίας χαμηλού επιπέδου με τη μνήμη, αλλά παρέχει επίσης τη δυνατότητα εφαρμογής στην ανάπτυξη σύγχρονων παραδειγμάτων προγραμματισμού.

Κατά τη συζήτηση της ομιλίας του Τζος, εκφράστηκε η ιδέα:

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

Greg Kroah-Hartman, υπεύθυνος για τη διατήρηση ενός σταθερού κλάδου του πυρήνα του Linux καιεξέφρασε την προθυμία να προσθέσει ένα πλαίσιο προγράμματος οδήγησης Rust στον πυρήνα εάν έχει πραγματικά πλεονεκτήματα σε σχέση με το C, για παράδειγμα, θα παρέχει ασφαλείς δεσμεύσεις σε βασικά API. Επίσης, ο Greg θεωρεί αυτό το πλαίσιο απλώς μια επιλογή που δεν είναι ενεργοποιημένη από προεπιλογή, ώστε να μην συμπεριλάβει το Rust στον αριθμό των εξαρτήσεων βασικών συγκροτημάτων.

Αποδείχθηκε ότι αρκετές ομάδες εργάζονται ήδη προς αυτή την κατεύθυνση. Για παράδειγμα, οι προγραμματιστές του Fish in a Barrel ετοίμασαν μια εργαλειοθήκη για τη σύνταξη loadable modules για τον πυρήνα Linux στη γλώσσα Rust, χρησιμοποιώντας ένα σύνολο αφηρημένων επιπέδων πάνω από τις διεπαφές και τις δομές του πυρήνα για να αυξήσουν την ασφάλεια.

Τα μεσαία επίπεδα δημιουργούνται αυτόματα με βάση τα διαθέσιμα αρχεία κεφαλίδας του πυρήνα χρησιμοποιώντας το βοηθητικό πρόγραμμα bindgen. Το Clang χρησιμοποιείται για την κατασκευή ενδιάμεσων στρωμάτων. Οι συναρμολογημένες μονάδες, εκτός από τα επίπεδα, χρησιμοποιούν το πακέτο staticlib.

Παράλληλα, αναπτύσσεται ένα άλλο έργο, με επίκεντρο την ανάπτυξη ελεγκτών για ενσωματωμένα συστήματα. και συσκευές Internet of Things, οι οποίες χρησιμοποιούν επίσης το bindgen για τη δημιουργία collates με βάση τα αρχεία κεφαλίδας του πυρήνα.

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

Υποτίθεται ότι οι κατασκευαστές εξοπλισμού μπορούν να βιαστούν με αυτήν την προσέγγιση χωρίς κατάλληλο έλεγχο.

Δεν έχουν ακόμη υλοποιηθεί όλες οι προγραμματισμένες λειτουργίες, αλλά το πλαίσιο είναι ήδη αρκετά επαρκές για την εργασία και χρησιμοποιείται για τη δημιουργία ενός λειτουργικού προγράμματος οδήγησης για τον παρεχόμενο ελεγκτή USB Ethernet LAN9512 στην πλακέτα Raspberry Pi 3.

Εγγράφηκε το υπάρχον πρόγραμμα οδήγησης smsc95xx ως υλοποίηση αναφοράς όταν γράφετε το πρόγραμμα οδήγησης Rust σε γλώσσα C.

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

πηγή: https://hub.packtpub.com


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   L1ch dijo

    Δεν μπορώ να βρω πληροφορίες σχετικά με ένα πρόγραμμα οδήγησης smsc95xx στην πηγή ή για οτιδήποτε υλοποιείται στο Rust σε Linux.