WD está a desenvolver un controlador NVMe en Rust. Experimentando con Rust en FreeBSD

Na conferencia Linux Plumbers 2022 que se celebra estes días, un enxeñeiro de Western Digital fixo unha presentación sobre o desenvolvemento dun controlador experimental para unidades SSD coa interface NVM-Express (NVMe), escrito na linguaxe Rust e que se executa no núcleo de Linux. nivel. A pesar de que o proxecto aínda está nunha fase inicial de desenvolvemento, as probas demostraron que o rendemento do controlador NVMe na linguaxe Rust corresponde ao controlador NVMe escrito na linguaxe C dispoñible no núcleo.

WD está a desenvolver un controlador NVMe en Rust. Experimentando con Rust en FreeBSD
WD está a desenvolver un controlador NVMe en Rust. Experimentando con Rust en FreeBSD

O informe indica que o controlador NVMe actual en C é completamente satisfactorio para os desenvolvedores, pero o subsistema NVMe é unha boa plataforma para explorar a viabilidade de desenvolver controladores en Rust, xa que é bastante sinxelo, moi utilizado, ten requisitos de alto rendemento e ten unha implementación de referencia comprobada para a comparación e admite varias interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).

Nótase que o controlador PCI NVMe para Rust xa ofrece a funcionalidade necesaria para o seu funcionamento, pero aínda non está preparado para un uso xeneralizado, xa que require melloras individuais. Os plans futuros inclúen eliminar o código dos bloques inseguros existentes, admitir operacións de eliminación de dispositivos e descarga de controladores, compatibilidade coa interface sysfs, implementación de inicialización perezosa, creación dun controlador para blk-mq e experimentación co uso dun modelo de programación asíncrona para queue_rq.

Ademais, podemos observar os experimentos realizados polo Grupo NCC para desenvolver controladores na linguaxe Rust para o núcleo de FreeBSD. Como exemplo, examinamos en detalle un controlador de eco sinxelo que devolve os datos escritos no ficheiro /dev/rustmodule. Na seguinte fase de experimentación, o Grupo NCC está a considerar a posibilidade de reelaborar os compoñentes fundamentais do núcleo na linguaxe Rust para mellorar a seguridade das operacións de rede e ficheiros.

Non obstante, aínda que se demostrou que é posible crear módulos sinxelos na linguaxe Rust, unha integración máis estreita de Rust no núcleo de FreeBSD requirirá traballo adicional. Por exemplo, mencionan a necesidade de crear un conxunto de capas de abstracción sobre os subsistemas e estruturas do núcleo, semellantes aos complementos preparados polo proxecto Rust para Linux. No futuro, pensamos realizar experimentos similares co núcleo de Illumos e identificar abstraccións comúns en Rust que poderían usarse en controladores escritos en Rust para Linux, BSD e Illumos.

Segundo Microsoft e Google, preto do 70% das vulnerabilidades dos seus produtos de software son causadas por un manexo inseguro da memoria. Espérase que o uso da linguaxe Rust reduza o risco de vulnerabilidades causadas por un traballo inseguro coa memoria e elimine a aparición de erros, como acceder a unha área de memoria despois de liberarse e sobrecargar o búfer.

O manexo seguro para a memoria ofrécese en Rust no momento da compilación mediante a comprobación de referencias, o seguimento da propiedade do obxecto e a súa vida útil (alcance), así como a través da avaliación da corrección do acceso á memoria durante a execución do código. Rust tamén ofrece protección contra desbordamentos de enteiros, require a inicialización obrigatoria dos valores variables antes do seu uso, manexa mellor os erros na biblioteca estándar, aplica o concepto de referencias e variables inmutables por defecto, ofrece unha forte escritura estática para minimizar os erros lóxicos.

Fonte: opennet.ru

Engadir un comentario