Rust ile İşletim Sistemi Yazmak
(github.com/phil-opp)- Bu depo, os.phil-opp.com'da sunulan Writing an OS in Rust serisinin kaynak kodunu içerir
- Sorularınız varsa issue açabilir veya Gitter üzerinden sohbet edebilirsiniz
Kodun Konumu
- Her yazının kodu ayrı bir git branch'inde bulunur
- Her yazıdan sonraki ara durumlar incelenebilir
- En güncel yazının koduna buradan ulaşabilirsiniz
- Yazı listesindeki
(source code)bağlantısını izleyerek her yazının branch'ini bulabilirsiniz - Branch'ler
post-XXbiçiminde adlandırılır (XXyazı numarasıdır) - Örnek: VGA Text Mode yazısı
post-03, Hardware Interrupts yazısıpost-07 - Derleme talimatları için ilgili branch'teki Readme dosyasına bakın
- Subdirectory içinde branch checkout etmek için git worktree kullanılabilir
git worktree add code post-10 - Yukarıdaki komut
codeadlı bir subdirectory oluşturur ve 10. yazının ("Heap Allocation") kodunu içerir
Yazılar
- Bu projenin amacı, ayrı blog yazıları halinde adım adım öğreticiler sunmaktır
- Şu anda aşağıdaki yazılar bulunmaktadır
Bare Bones:
- A Freestanding Rust Binary (source code)
- A Minimal Rust Kernel (source code)
- VGA Text Mode (source code)
- Testing (source code)
Interrupts:
- CPU Exceptions (source code)
- Double Faults (source code)
- Hardware Interrupts (source code)
Memory Management:
- Introduction to Paging (source code)
- Paging Implementation (source code)
- Heap Allocation (source code)
- Allocator Designs (source code)
Multitasking:
- Async/Await (source code)
Birinci Sürüm Yazıları
- Mevcut blog sürümü ikinci sürümdür ve birinci sürüm artık bakım almamaktadır
- Birinci sürüm yazıları yine de faydalı olabilir
- Yazı listesi aşağıdaki gibidir
Bare Bones:
- A Minimal x86 Kernel (source code)
- Entering Long Mode (source code)
- Set Up Rust (source code)
- Printing to Screen (source code)
Memory Management:
- Allocating Frames (source code)
- Page Tables (source code)
- Remap the Kernel (source code)
- Kernel Heap (source code)
Exceptions:
- Handling Exceptions (source code)
- Double Faults (source code)
Additional Resources:
- Cross Compile Binutils
- Cross Compile libcore
- Set Up GDB
- Handling Exceptions using Naked Functions
- Catching Exceptions (source code)
- Better Exception Messages (source code)
- Returning from Exceptions (source code)
Lisans
- Bu proje,
blog/contentklasörü hariç, aşağıdakilerden biriyle lisanslanmıştır- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
blog/contentklasörünün lisansı içinblog/content/README.mddosyasına bakın
Katkı
- Açıkça aksi belirtilmedikçe, bilerek gönderilen tüm katkılar Apache-2.0 lisansında tanımlandığı şekilde yukarıdaki gibi çift lisanslı olarak dahil edilir
GN⁺ Özeti
- Bu proje, Rust ile işletim sistemi yazmayı adım adım anlatan öğreticiler sunar
- Her yazı bağımsız bir konuyu ele alır ve kod örnekleriyle açıklanır
- İşletim sistemi geliştirmeyle ilgilenenler için son derece faydalı bir kaynaktır
- Rust'ın güvenlik ve performans avantajlarından yararlanarak işletim sistemi geliştirmeyi öğrenebilirsiniz
- Benzer işlevlere sahip diğer projeler arasında
Redox OSbulunur
1 yorum
Hacker News yorumu
Birkaç yıl önce ikinci edisyonu tamamladım ve çok şey öğrendim
futuresuygulama açıklaması özellikle etkileyiciydi5 yıl önce öğreticiyi tamamladıktan sonra MOROS üzerinde çalışmaya başladım
Rust ile OS yazmak yerine DML/DDL çalıştırabilen bir veri platformu yapmanız gerekirdi
Rust ve OS geliştirmeyi derinlemesine araştırdıktan sonra bu kaynağı keşfettim
Bu kaynak sayesinde 2021'de Rust'a başladım
Phil'in OS geliştirme hakkındaki yazıları her zaman çok iyi bir okuma sunuyor
Harvey OS ekibi artık R9OS projesi üzerinde çalışıyor
Özellikle orijinal edisyonun yazılarını tavsiye ederim
Rustconf'tan yeni döndüm; gerçek zamanlı işletim sistemlerine odaklanan yaklaşık beş büyük OS sürümü var
Bir diğer iyi kaynak da Rust kullanarak bir RISC-V OS yapmak