Western Digital już pracuje nad sterownikiem NVMe napisanym w Rust

RustLinux

Integracja Rusta z Linuksem spotkała się z wysokim poziomem akceptacji społeczności i programistów

Podczas konferencji „Linux Hydraulicy 2022” to trwało w tych dniach, inżynier z Western Digital przedstawił prezentację na temat rozwoju kontrolera eksperymentalny dla SSD NVM-Express (NVMe) napisany w języku Rust i działa na poziomie jądra Linux.

Mimo to projekt jest jeszcze we wczesnej fazie rozwoju, przeprowadzone testy wykazały, że wydajność sterownika Rust NVMe odpowiada sterownikowi NVMe napisanemu w C w jądrze.

Jestem Matthew Wilcox, jestem jednym z autorów specyfikacji NVMe, to ja zasugerowałem, abym zrobił sterownik NVMe, aby zademonstrować wartość Rust. Odniósł sukces, przekraczając moje najśmielsze oczekiwania. 

Odnośnie przedstawionego raportu mówi się, że obecny sterownik NVMe C jest w pełni zadowalający dla programistów, ale podsystem NVMe jest dobrą platformą do zbadania możliwości rozwoju sterowników w Rust, ponieważ jest dość prosty, szeroko stosowany, ma wysokie wymagania wydajnościowe, ma sprawdzoną implementację referencyjną do porównania i obsługuje różne interfejsy ( dev, pci, dma, blk-mq, gendisk, sysfs).

Zauważono, że sterownik Rust PCI NVMe zapewnia już niezbędną funkcjonalność do działania, ale nie jest jeszcze gotowy do powszechnego użytku, ponieważ wymaga oddzielnych ulepszeń.

Plany na przyszłość obejmują pozbycie się istniejących niezabezpieczonych bloków, obsługa usunięcia urządzenia i pobrania sterownika, obsługa interfejsu sysfs, zaimplementuj inicjowanie z opóźnieniem, utwórz kontroler dla blk-mq i poeksperymentuj z asynchronicznym modelem programowania dla queue_rq.

Ponadto możemy wskazać przeprowadzone eksperymenty przez Grupę NCC do opracowania sterowników w języku Rust dla jądro FreeBSD. Na przykład prosty kontroler echa, który zwraca dane zapisane do /dev/rustmodule. W kolejnej fazie eksperymentów, NCC Group rozważa przerobienie podstawowych komponentów Rust w celu poprawy bezpieczeństwa operacji sieciowych i plikowych.

To powiedziawszy, chociaż wykazano, że w Ruście można tworzyć proste moduły, Ściślejsza integracja Rusta z jądrem FreeBSD będzie wymagała dodatkowej pracy.

Wspomina na przykład o konieczności stworzenia zestawu warstw abstrakcji nad podsystemami i strukturami jądra, podobnych do wtyczek przygotowanych przez projekt Rust dla Linuksa. W przyszłości planujemy przeprowadzić podobne eksperymenty z rdzeniem Illumos i podkreślić wspólne abstrakcje w Ruście, które mogą być użyte w sterownikach napisanych przez Rust dla Linuksa, BSD i Illumos.

Według Microsoft i Google około 70% luk w ich oprogramowaniu wynika z niezabezpieczonego zarządzania pamięcią.

Używanie języka Rust ma zmniejszyć ryzyko powstania luk spowodowane niebezpieczną obsługą pamięci i wyeliminuje występowanie błędów, takich jak dostęp do obszaru pamięci po jego zwolnieniu i przepełnienie bufora.

Bezpieczeństwo pamięci jest zapewniane w Rust w czasie kompilacji poprzez sprawdzanie referencji, śledzenie własności obiektu i czasu życia obiektu (zakres), a także poprzez ocenę poprawności dostępu do pamięci podczas wykonywania kodu.

Rdza zapewnia również ochronę przed przepełnieniem całkowitoliczbowym, wymaga zainicjowania zmiennych przed użyciem, lepiej radzi sobie z błędami w bibliotece standardowej, domyślnie wymusza koncepcję niezmiennych zmiennych i odwołań oraz oferuje silne statyczne typowanie w celu zminimalizowania błędów logicznych.

Warto wspomnieć, że być może przyszłe prace będą szły w parze z pracą, którą Miguel Ojeda przedstawił nad swoimi sterownikami „Rust for Linux”, które zostały przedstawione w postaci serii poprawek.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w poniższy link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.