Η WD αναπτύσσει ένα πρόγραμμα οδήγησης NVMe στο Rust. Πειραματισμός με το Rust στο FreeBSD

Στο συνέδριο Linux Plumbers 2022, ένας μηχανικός από την Western Digital έδωσε μια ομιλία σχετικά με την ανάπτυξη ενός πειραματικού προγράμματος οδήγησης για μονάδες SSD με τη διεπαφή NVM-Express (NVMe), γραμμένου σε Rust και εκτελούμενου σε επίπεδο πυρήνα Linux. Παρόλο που το έργο βρίσκεται ακόμη στα αρχικά στάδια ανάπτυξης, οι δοκιμές έδειξαν ότι η απόδοση του προγράμματος οδήγησης Rust NVMe ταιριάζει με αυτήν του προγράμματος οδήγησης NVMe του πυρήνα, γραμμένου σε C.

 Η WD αναπτύσσει ένα πρόγραμμα οδήγησης NVMe στο Rust. Πειραματισμός με το Rust στο FreeBSD
 Η WD αναπτύσσει ένα πρόγραμμα οδήγησης NVMe στο Rust. Πειραματισμός με το Rust στο FreeBSD

Η έκθεση αναφέρει ότι το τρέχον πρόγραμμα οδήγησης NVMe σε C είναι απολύτως ικανοποιητικό για τους προγραμματιστές, αλλά το υποσύστημα NVMe αποτελεί μια καλή πλατφόρμα για τη μελέτη της σκοπιμότητας ανάπτυξης προγραμμάτων οδήγησης σε Rust, καθώς είναι αρκετά απλό, χρησιμοποιείται ευρέως, έχει υψηλές απαιτήσεις απόδοσης, έχει μια αποδεδειγμένη υλοποίηση αναφοράς για σύγκριση και υποστηρίζει διάφορες διεπαφές (dev, pci, dma, blk-mq, gendisk, sysfs).

Σημειώνεται ότι το πρόγραμμα οδήγησης PCI NVMe στο Rust παρέχει ήδη τη λειτουργικότητα που απαιτείται για τη λειτουργία, αλλά δεν είναι ακόμη έτοιμο για ευρεία χρήση, καθώς απαιτεί μεμονωμένες βελτιώσεις. Μεταξύ των σχεδίων για το μέλλον είναι η απαλλαγή από τον κώδικα των υπαρχόντων μη ασφαλών μπλοκ, η υποστήριξη για την αφαίρεση συσκευών και τις λειτουργίες εκφόρτωσης προγραμμάτων οδήγησης, η υποστήριξη για τη διεπαφή sysfs, η εφαρμογή της αναβαλλόμενης αρχικοποίησης, η δημιουργία ενός προγράμματος οδήγησης για το blk-mq και τα πειράματα με τη χρήση ενός ασύγχρονου μοντέλου προγραμματισμού για το queue_rq.

Αναπαραγωγή βίντεο

Επιπλέον, η ομάδα NCC διεξάγει πειράματα για την ανάπτυξη προγραμμάτων οδήγησης στο Rust για τον πυρήνα του FreeBSD. Για παράδειγμα, αναλύεται λεπτομερώς ένα απλό πρόγραμμα οδήγησης echo που επιστρέφει δεδομένα που έχουν εγγραφεί στο αρχείο /dev/rustmodule. Στο επόμενο στάδιο των πειραμάτων, η ομάδα NCC εξετάζει την πιθανότητα αναδιαμόρφωσης των βασικών στοιχείων του πυρήνα στο Rust για τη βελτίωση της ασφάλειας των λειτουργιών δικτύου και αρχείων.

Ταυτόχρονα, παρά το γεγονός ότι παρουσιάζεται η δυνατότητα δημιουργίας απλών ενοτήτων στη γλώσσα Rust, μια πιο στενή ενσωμάτωση του Rust στον πυρήνα του FreeBSD θα απαιτήσει πρόσθετη εργασία. Για παράδειγμα, αναφέρεται η ανάγκη δημιουργίας ενός συνόλου επιπέδων αφαίρεσης πάνω από τα υποσυστήματα και τις δομές του πυρήνα, παρόμοια με τα πρόσθετα που ετοίμασε το έργο Rust for Linux. Στο μέλλον, παρόμοια πειράματα σχεδιάζονται με τον πυρήνα Illumos και για τον εντοπισμό κοινών αφαιρέσεων στο Rust που θα μπορούσαν να χρησιμοποιηθούν σε προγράμματα οδήγησης γραμμένα σε Rust for Linux, BSD και Illumos.

Σύμφωνα με τη Microsoft και την Google, περίπου το 70% των ευπαθειών στα προϊόντα λογισμικού τους προκαλούνται από μη ασφαλή χειρισμό μνήμης. Υποτίθεται ότι η χρήση της γλώσσας Rust θα μειώσει τον κίνδυνο ευπαθειών που προκαλούνται από μη ασφαλή χειρισμό μνήμης και θα εξαλείψει σφάλματα όπως η πρόσβαση σε μια περιοχή μνήμης μετά την απελευθέρωσή της και η υπέρβαση των ορίων του buffer.

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

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο