WD đang phát triển trình điều khiển NVMe ở Rust. Thử nghiệm với Rust trên FreeBSD

Tại hội nghị Linux Plumbers 2022 diễn ra hôm nay, một kỹ sư của Western Digital đã trình bày về việc phát triển trình điều khiển thử nghiệm cho ổ SSD với giao diện NVM-Express (NVMe), viết bằng ngôn ngữ Rust và chạy trên nhân Linux mức độ. Mặc dù thực tế là dự án vẫn đang ở giai đoạn phát triển ban đầu, nhưng thử nghiệm đã chỉ ra rằng hiệu suất của trình điều khiển NVMe bằng ngôn ngữ Rust tương ứng với trình điều khiển NVMe được viết bằng ngôn ngữ C có sẵn trong kernel.

WD đang phát triển trình điều khiển NVMe ở Rust. Thử nghiệm với Rust trên FreeBSD
WD đang phát triển trình điều khiển NVMe ở Rust. Thử nghiệm với Rust trên FreeBSD

Báo cáo cho biết trình điều khiển NVMe hiện tại trong C hoàn toàn làm hài lòng các nhà phát triển, nhưng hệ thống con NVMe là một nền tảng tốt để khám phá tính khả thi của việc phát triển trình điều khiển trong Rust, vì nó khá đơn giản, được sử dụng rộng rãi, có yêu cầu hiệu suất cao và có triển khai tham chiếu đã được chứng minh để so sánh và hỗ trợ các giao diện khác nhau (dev, pci, dma, blk-mq, gendisk, sysfs).

Cần lưu ý rằng trình điều khiển PCI NVMe cho Rust đã cung cấp chức năng cần thiết để vận hành nhưng vẫn chưa sẵn sàng để sử dụng rộng rãi vì nó yêu cầu những cải tiến riêng lẻ. Các kế hoạch trong tương lai bao gồm loại bỏ mã của các khối không an toàn hiện có, hỗ trợ các hoạt động loại bỏ thiết bị và dỡ tải trình điều khiển, hỗ trợ giao diện sysfs, triển khai khởi tạo lười biếng, tạo trình điều khiển cho blk-mq và thử nghiệm sử dụng mô hình lập trình không đồng bộ cho queue_rq.

Ngoài ra, chúng ta có thể lưu ý các thử nghiệm do Nhóm NCC thực hiện để phát triển trình điều khiển bằng ngôn ngữ Rust cho hạt nhân FreeBSD. Ví dụ: chúng tôi kiểm tra chi tiết một trình điều khiển tiếng vang đơn giản trả về dữ liệu được ghi vào tệp /dev/rustmodule. Trong giai đoạn thử nghiệm tiếp theo, Tập đoàn NCC đang xem xét khả năng làm lại các thành phần cốt lõi của kernel bằng ngôn ngữ Rust để cải thiện tính bảo mật của hoạt động mạng và tệp.

Tuy nhiên, mặc dù người ta đã chứng minh rằng có thể tạo các mô-đun đơn giản bằng ngôn ngữ Rust, nhưng việc tích hợp Rust chặt chẽ hơn vào nhân FreeBSD sẽ yêu cầu công việc bổ sung. Ví dụ: họ đề cập đến nhu cầu tạo một tập hợp các lớp trừu tượng trên các hệ thống con và cấu trúc hạt nhân, tương tự như các tiện ích bổ sung do dự án Rust for Linux chuẩn bị. Trong tương lai, chúng tôi dự định tiến hành các thử nghiệm tương tự với nhân Illumos và xác định các khái niệm trừu tượng phổ biến trong Rust có thể được sử dụng trong các trình điều khiển được viết bằng Rust cho Linux, BSD và Illumos.

Theo Microsoft và Google, khoảng 70% lỗ hổng trong sản phẩm phần mềm của họ là do việc xử lý bộ nhớ không an toàn. Người ta hy vọng rằng việc sử dụng ngôn ngữ Rust sẽ làm giảm nguy cơ lỗ hổng do làm việc không an toàn với bộ nhớ và loại bỏ các lỗi xảy ra như truy cập vào vùng bộ nhớ sau khi nó được giải phóng và tràn bộ đệm.

Xử lý an toàn bộ nhớ được cung cấp trong Rust tại thời điểm biên dịch thông qua kiểm tra tham chiếu, theo dõi quyền sở hữu đối tượng và thời gian tồn tại của đối tượng (phạm vi), cũng như thông qua đánh giá tính chính xác của quyền truy cập bộ nhớ trong quá trình thực thi mã. Rust cũng cung cấp khả năng bảo vệ chống tràn số nguyên, yêu cầu khởi tạo bắt buộc các giá trị biến trước khi sử dụng, xử lý lỗi tốt hơn trong thư viện chuẩn, áp dụng khái niệm tham chiếu và biến bất biến theo mặc định, cung cấp kiểu gõ tĩnh mạnh để giảm thiểu lỗi logic.

Nguồn: opennet.ru

Thêm một lời nhận xét