Dự án Kerla đang phát triển kernel tương thích với Linux bằng ngôn ngữ Rust

Dự án Kerla đang phát triển nhân hệ điều hành được viết bằng ngôn ngữ Rust. Nhân mới ban đầu tập trung vào việc cung cấp khả năng tương thích với nhân Linux ở cấp độ ABI, điều này sẽ cho phép các tệp thực thi chưa sửa đổi được biên dịch cho Linux chạy trong môi trường dựa trên Kerla. Mã được phân phối theo giấy phép Apache 2.0 và MIT. Dự án đang được phát triển bởi nhà phát triển Nhật Bản Seiya Nuta, người được biết đến với việc tạo ra hệ điều hành vi nhân Resea, được viết bằng ngôn ngữ C.

Ở giai đoạn phát triển hiện tại, Kerla chỉ có thể chạy trên các hệ thống x86_64 và thực hiện các lệnh gọi hệ thống cơ bản như write, stat, mmap, pipe và poll, hỗ trợ tín hiệu, các đường ống không tên và chuyển đổi ngữ cảnh. Các lệnh gọi như fork, wait4 và execve được cung cấp để kiểm soát các quy trình. Có hỗ trợ cho tty và thiết bị đầu cuối giả (pty). Các hệ thống tệp hiện được hỗ trợ là initramfs (được sử dụng để gắn kết hệ thống tệp gốc), tmpfs và devfs. Một ngăn xếp mạng có hỗ trợ các ổ cắm TCP và UDP được cung cấp, triển khai dựa trên thư viện smltcp.

Nhà phát triển đã chuẩn bị một môi trường khởi động chạy trong QEMU hoặc trong máy ảo Firecracker với trình điều khiển virtio-net mà bạn đã có thể kết nối qua SSH. musl được sử dụng làm thư viện hệ thống và BusyBox được sử dụng làm tiện ích cho người dùng.

Dự án Kerla đang phát triển kernel tương thích với Linux bằng ngôn ngữ Rust

Một hệ thống xây dựng dựa trên Docker đã được chuẩn bị cho phép bạn tạo các initramf khởi động của riêng mình bằng nhân Kerla. Riêng biệt, phần mềm nsh tương tự như cá và ngăn xếp GUI Kazari dựa trên giao thức Wayland đang được phát triển.

Dự án Kerla đang phát triển kernel tương thích với Linux bằng ngôn ngữ Rust

Sử dụng ngôn ngữ Rust trong dự án cho phép bạn giảm số lượng lỗi trong mã bằng cách sử dụng các kỹ thuật lập trình an toàn và tăng hiệu quả xác định vấn đề khi làm việc với bộ nhớ. Rust thực thi an toàn bộ nhớ tại thời điểm biên dịch thông qua kiểm tra tham chiếu, quyền sở hữu đối tượng và theo dõi vòng đời đối tượng (phạm vi) và bằng cách đánh giá tính chính xác của truy cập bộ nhớ trong thời gian chạy. Ngoài ra, Rust còn cung cấp khả năng bảo vệ chống tràn số nguyên, yêu cầu khởi tạo các giá trị biến trước khi sử dụng, thực thi 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 mẽ để giảm thiểu lỗi logic và đơn giản hóa việc xử lý các giá trị đầu vào nhờ khớp mẫu. .

Để phát triển các thành phần cấp thấp, chẳng hạn như nhân hệ điều hành, Rust cung cấp hỗ trợ cho các con trỏ thô, đóng gói cấu trúc, chèn nội tuyến trình biên dịch mã và nhúng các tệp trình biên dịch mã. Để làm việc mà không bị ràng buộc với thư viện tiêu chuẩn, có các gói thùng riêng biệt để thực hiện các thao tác với chuỗi, vectơ và cờ bit. Một ưu điểm khác là các công cụ tích hợp sẵn để đánh giá chất lượng mã (máy phân tích nói dối, máy phân tích rỉ sét) và tạo các bài kiểm tra đơn vị có thể chạy không chỉ trên phần cứng thực mà còn trong QEMU.

Nguồn: opennet.ru

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