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

Στο συνέδριο Linux Plumbers 2022 που πραγματοποιείται αυτές τις μέρες, ένας μηχανικός της Western Digital παρουσίασε την ανάπτυξη ενός πειραματικού προγράμματος οδήγησης για μονάδες SSD με τη διεπαφή NVM-Express (NVMe), γραμμένο στη γλώσσα Rust και εκτελούμενο στον πυρήνα Linux επίπεδο. Παρά το γεγονός ότι το έργο βρίσκεται ακόμα σε πρώιμο στάδιο ανάπτυξης, οι δοκιμές έχουν δείξει ότι η απόδοση του προγράμματος οδήγησης NVMe στη γλώσσα Rust αντιστοιχεί στο πρόγραμμα οδήγησης 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, υλοποίηση lazy προετοιμασίας, δημιουργία προγράμματος οδήγησης για blk-mq και πειραματισμό με τη χρήση ενός μοντέλου ασύγχρονου προγραμματισμού για queue_rq.

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

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

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

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

Πηγή: opennet.ru

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