Một khuôn khổ trong Rust có thể được triển khai trong Kernel để cải thiện trình điều khiển

Nhân Linux Rust

Josh Triplett, một công ty có trụ sở tại Intel và thành viên của ủy ban giám sát phát triển Crates.io, đã giới thiệu một nhóm làm việc vài ngày trước trong bài phát biểu của anh ấy tại Hội nghị thượng đỉnh về công nghệ nguồn mở nhằm mục đích đưa Rust ngang hàng với C trong lập trình nhân Linux.

Trong nhóm làm việc đang trong quá trình thành lập, Các nhà phát triển Rust, cùng với các kỹ sư của Intel, sẽ chuẩn bị các thông số kỹ thuật có thể làm nổi bật chức năng mà Rust cần triển khai để lập trình bên trong nhân Linux. Lập trình hệ thống thường yêu cầu các thao tác cấp thấp, chẳng hạn như thực hiện các lệnh của bộ xử lý đặc quyền và lấy thông tin chi tiết về trạng thái của bộ xử lý.

Trong số các khả năng tương tự đã được phát triển cho Rust, hỗ trợ cho các cấu trúc không tên được hỗ trợ, liên hiệp (union), chèn trình hợp ngữ (macro "asm!") và định dạng số dấu phẩy động BFLOAT16.

Josh tin rằng tương lai của lập trình hệ thống nằm ở Rust, và ngôn ngữ C trong thực tế hiện đại tuyên bố là vị trí của Assembler trong quá khứ. Rust không chỉ giúp các nhà phát triển giải quyết các vấn đề cụ thể của ngôn ngữ C phát sinh do công việc cấp thấp với bộ nhớ, mà còn cung cấp khả năng ứng dụng trong việc phát triển các mô hình lập trình hiện đại.

Trong cuộc thảo luận về bài phát biểu của Josh, ý tưởng được thể hiện thành:

thêm khả năng phát triển trình điều khiển ngôn ngữ Rust cho nhân Linux, điều này sẽ cho phép với nỗ lực tối thiểu để tạo ra các trình điều khiển tốt hơn và an toàn hơn nhằm giảm bớt các vấn đề như truy cập vùng bộ nhớ sau khi giải phóng nó, tham chiếu đến con trỏ null và thoát nhiều hơn ngoài giới hạn của bộ đệm.

Greg Kroah-Hartman, chịu trách nhiệm duy trì một nhánh ổn định của nhân Linux vàx bày tỏ sự sẵn lòng thêm một khung trình điều khiển Rust vào hạt nhân nếu nó có bất kỳ lợi thế thực sự nào so với C, ví dụ: nó sẽ cung cấp các ràng buộc an toàn đối với API lõi. Ngoài ra, Greg chỉ coi khung này là một tùy chọn không hoạt động theo mặc định, để không bao gồm Rust trong số lượng phụ thuộc của cụm lõi.

Nó chỉ ra rằng một số nhóm đã làm việc theo hướng này. Ví dụ, các nhà phát triển Fish in a Barrel đã chuẩn bị một bộ công cụ để viết các mô-đun có thể tải được cho nhân Linux bằng ngôn ngữ Rust, sử dụng một tập hợp các lớp trừu tượng trên đầu các giao diện và cấu trúc của nhân để tăng tính bảo mật.

Các lớp trung gian được tạo tự động dựa trên các tệp tiêu đề hạt nhân có sẵn bằng tiện ích bindgen. Clang được sử dụng để xây dựng các lớp trung gian. Các mô-đun đã lắp ráp, ngoài các lớp, hãy sử dụng gói staticlib.

Đồng thời, một dự án khác đang được phát triển, tập trung vào việc phát triển các bộ điều khiển cho các hệ thống nhúng và các thiết bị Internet of Things, cũng sử dụng bindgen để tạo vòng cổ dựa trên các tệp tiêu đề hạt nhân.

Khung cho phép bạn cải thiện bảo mật trình điều khiển mà không cần thực hiện thay đổi đối với hạt nhân; Thay vì tạo các mức cách ly bổ sung cho các trình điều khiển trong nhân, nó được đề xuất để chặn các sự cố ở giai đoạn biên dịch bằng cách sử dụng ngôn ngữ Rust an toàn hơn.

Các nhà sản xuất thiết bị được cho là có thể phát triển phương pháp này một cách vội vàng nếu không có sự kiểm tra thích hợp.

Không phải tất cả các chức năng theo kế hoạch đã được triển khai, nhưng khuôn khổ đã khá phù hợp với công việc và được sử dụng để viết trình điều khiển hoạt động cho bộ điều khiển LAN9512 USB Ethernet được cung cấp trên bo mạch Raspberry Pi 3.

Trình điều khiển smsc95xx hiện có đã được viết như một triển khai tham chiếu khi viết trình điều khiển Rust bằng ngôn ngữ C.

Cần lưu ý rằng kích thước mô-đun và chi phí thành phần thời gian chạy là không đáng kể khi phát triển trình điều khiển cho Rust, cho phép bạn sử dụng khuôn khổ cho các thiết bị giới hạn tài nguyên.

Fuente: https://hub.packtpub.com


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   L1ch dijo

    Tôi không thể tìm thấy thông tin cho trình điều khiển smsc95xx trong nguồn hoặc một cái gì đó sẽ được triển khai trong Rust trên Linux.