WD, Rust'ta bir NVMe sürücüsü geliştiriyor. FreeBSD'de Rust ile denemeler

Bugünlerde gerçekleşen Linux Plumbers 2022 konferansında Western Digital'den bir mühendis, NVM-Express (NVMe) arayüzüne sahip, Rust dilinde yazılmış ve Linux çekirdeğinde çalışan SSD sürücüler için deneysel bir sürücünün geliştirilmesine ilişkin bir sunum yaptı. seviye. Projenin hala erken bir geliştirme aşamasında olmasına rağmen testler, NVMe sürücüsünün Rust dilindeki performansının, çekirdekte bulunan C dilinde yazılmış NVMe sürücüsüne karşılık geldiğini gösterdi.

 WD, Rust'ta bir NVMe sürücüsü geliştiriyor. FreeBSD'de Rust ile denemeler
 WD, Rust'ta bir NVMe sürücüsü geliştiriyor. FreeBSD'de Rust ile denemeler

Rapor, C'deki mevcut NVMe sürücüsünün geliştiriciler için tamamen tatmin edici olduğunu ancak NVMe alt sisteminin oldukça basit olması, yaygın olarak kullanılması, yüksek performans gereksinimlerine sahip olması ve sahip olması nedeniyle Rust'ta sürücü geliştirmenin fizibilitesini keşfetmek için iyi bir platform olduğunu belirtiyor. Karşılaştırma için kanıtlanmış bir referans uygulamasıdır ve çeşitli arayüzleri (dev, pci, dma, blk-mq, gendisk, sysfs) destekler.

Rust için PCI NVMe sürücüsünün zaten çalışma için gerekli işlevselliği sağladığı ancak bireysel iyileştirmeler gerektirdiğinden henüz yaygın kullanıma hazır olmadığı belirtiliyor. Gelecek planları arasında kodun mevcut güvenli olmayan bloklardan temizlenmesi, cihaz kaldırma ve sürücü boşaltma işlemlerinin desteklenmesi, sysfs arayüzünün desteklenmesi, tembel başlatmanın uygulanması, blk-mq için bir sürücü oluşturulması ve kuyruk_rq için eşzamansız bir programlama modelinin kullanılmasıyla denemeler yer alıyor.

Oynat Video

Ek olarak, NCC Grubunun FreeBSD çekirdeği için Rust dilinde sürücüler geliştirmek amacıyla gerçekleştirdiği deneyleri de not edebiliriz. Örnek olarak /dev/rustmodule dosyasına yazılan verileri döndüren basit bir echo sürücüsünü detaylı olarak inceliyoruz. Deneyin bir sonraki aşamasında NCC Grubu, ağ ve dosya işlemlerinin güvenliğini artırmak için çekirdeğin temel bileşenlerini Rust dilinde yeniden işleme olasılığını değerlendiriyor.

Ancak Rust dilinde basit modüller oluşturmanın mümkün olduğu gösterilmiş olsa da Rust'un FreeBSD çekirdeğine daha sıkı entegrasyonu ek çalışma gerektirecektir. Örneğin Rust for Linux projesinin hazırladığı eklentilere benzer şekilde alt sistemler ve çekirdek yapıları üzerinde bir takım soyutlama katmanları oluşturulması gerektiğinden bahsediyorlar. Gelecekte Illumos çekirdeğiyle benzer deneyler yapmayı ve Rust'ta Linux, BSD ve Illumos için Rust'ta yazılan sürücülerde kullanılabilecek ortak soyutlamaları belirlemeyi planlıyoruz.

Microsoft ve Google'a göre yazılım ürünlerindeki güvenlik açıklarının yaklaşık %70'i güvenli olmayan bellek kullanımından kaynaklanıyor. Rust dilinin kullanılmasının, bellekle güvenli olmayan çalışmalardan kaynaklanan güvenlik açıkları riskini azaltacağı, bir bellek alanı serbest bırakıldıktan sonra erişim sağlanması ve ara belleğin taşması gibi hataların oluşmasını da ortadan kaldırması bekleniyor.

Rust'ta derleme zamanında referans kontrolü, nesne sahipliği ve nesne ömrünün (kapsam) izlenmesi ve ayrıca kod yürütme sırasında bellek erişiminin doğruluğunun değerlendirilmesi yoluyla güvenli bellek kullanımı sağlanır. Rust ayrıca tamsayı taşmalarına karşı koruma sağlar, kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirir, standart kitaplıkta hataları daha iyi işler, değişmez referanslar ve değişkenler kavramını varsayılan olarak uygular, mantıksal hataları en aza indirmek için güçlü statik yazım sunar.

Kaynak: opennet.ru

Yorum ekle