Ana Sayfa

Moss-kernel: Rust ile Yazılmış Linux Uyumlu Çekirdek

2 dk okuma

Moss, Rust ve Aarch64 assembly dilleri kullanılarak geliştirilmiş, Unix benzeri ve Linux uyumlu bir çekirdektir. Asenkron bir çekirdek çekirdeği, modüler bir mimari soyutlama katmanı ve Linux kullanıcı alanı uygulamalarıyla ikili uyumluluk sunar. Şu anda, bash, BusyBox, coreutils, ps, top ve strace gibi dinamik olarak bağlı bir Arch Linux aarch64 kullanıcı alanını çalıştırabilmektedir. Tam Aarch64 desteği sunmakla birlikte, iyi tanımlanmış bir Donanım Soyutlama Katmanı (HAL) sayesinde x86_64 veya RISC-V gibi diğer mimarilere kolayca taşınabilir. Bellek yönetimi tarafında, tam MMU etkinleştirme, sayfa tablosu yönetimi, Copy-on-Write (CoW) sayfaları, çekirdek ve kullanıcı alanı sayfa hatası yönetimi gibi gelişmiş özelliklere sahiptir. Ayrıca, fiziksel adresler için buddy ayırıcı ve çekirdek nesne ayırmaları için slab ayırıcı gibi çeşitli bellek ayırıcıları da barındırır.

Moss'un öne çıkan özelliklerinden biri, çekirdek bağlamında Rust'ın async/await modelini kullanmasıdır. Tüm önemli sistem çağrıları async fonksiyonlar olarak yazılmıştır ve bu sayede derleyici, kilitlerin uyku noktaları üzerinde tutulmasını engelleyerek yaygın çekirdek kilitlenmelerini ortadan kaldırır. Görev yönetimi, hem tek işlemcili (UP) hem de çok işlemcili (SMP) sistemler için EEVDF zamanlayıcı ile tam desteklenir. Çekirdek, Arch Linux'tan dinamik olarak bağlı ELF ikili dosyalarını çalıştırabilir ve fork(), execve(), clone() gibi temel sistem çağrıları da dahil olmak üzere 105 Linux sistem çağrısını uygulamaktadır. Süreç grupları, waitpid ve arka plan görevleri gibi iş kontrolü özellikleri ile sinyal teslimi, maskeleme ve yayılımı da desteklenmektedir.

Sanal Dosya Sistemi (VFS) tam asenkron soyutlamalarla birlikte gelir ve Ramdisk, FAT32 (salt okunur), Ext2/3/4 (okuma desteği, kısmi yazma desteği), devfs, tmpfs ve procfs gibi çeşitli dosya sistemi sürücülerini içerir. Moss, mimariden bağımsız bir yardımcı kütüphane olan libkernel üzerine inşa edilmiştir. Bu, mantığın çıplak donanım üzerinde çalıştırılmadan önce bir ana makinede (örneğin x86) test edilmesine olanak tanır. libkernel, güçlü tip denetimli adres türleri, çeşitli kapsayıcılar, spinlock, mutex ve condvar gibi senkronizasyon ilkelleri sunar. Ayrıca, farklı mimarilerde işlevselliği sağlayan 230'dan fazla test içeren kapsamlı bir test paketine sahiptir.

İçgörü

Rust ile yazılmış bu Linux uyumlu çekirdek, modern programlama paradigmalarını kullanarak sistem güvenliğini ve performansını artırma potansiyeli taşıyor.

Kaynak