Nim ile geliştirilen hobi amaçlı işletim sistemi Fusion
(github.com/khaledh)- Fusion OS, x86-64 için geliştirilmiş hobi amaçlı bir işletim sistemidir ve uygulama dili olarak Nim kullanır
- Hâlihazırda uygulanmış özellikler UEFI bootloader, bellek yönetimi, görev yönetimi, sistem çağrıları, IPC ve donanım desteği olarak ayrılır
- Bellek ve görev yönetimi; demand paging, preemptive multitasking, öncelik tabanlı zamanlama ve ELF yükleyiciyi içerir
- Çalışma ortamı şu anda QEMU'dur; derleme için Nim, LLVM'nin
clang·lldaraçları ve Just gereklidir - Gelecek planları arasında capability tabanlı güvenlik, disk I/O, dosya sistemi, shell, GUI ve ağ desteği yer alır
Fusion OS'ye genel bakış
- Fusion, x86-64 için hobi amaçlı bir işletim sistemidir ve Nim ile geliştirilmiştir
- Geliştirme süreci 0xc0ffee.netlify.app üzerinde belgelenmiştir
- Ekran görüntüleri bölümünde UEFI bootloader ile çekirdeğin önyükleme ve çalışma ekranları yer alır
- GUI ekran görüntüleri
graphicsbranch'indeki durumu gösterir ve bu branch hâlâ geliştirme aşamasındadır
Şu anda uygulanmış özellikler
-
Boot
- UEFI Bootloader uygulanmıştır
-
Bellek yönetimi
- Single Address Space yapısına sahip Higher Half Kernel
- Physical Memory Manager
- Virtual Memory Manager
- Demand Paging
-
Görev yönetimi
- Kernel Tasks
- User Mode Tasks
- Preemptive Multitasking
- Priority-based Scheduling
- Demand Paged ve Relocation destekli ELF Loader
-
Sistem çağrıları
- System Call Interface
- User Mode Library
-
IPC
- Channel-based IPC
- Message Passing
-
Donanım
- PCI Device Enumeration
- ACPI Configuration
- Local APIC Timer
- I/O APIC Interrupts
- PS/2 Keyboard Driver
- Bochs Graphics Adapter Driver
Planlanan özellikler
- Capability-based Security
- Event-based Task State Machines
- Disk I/O
- File System
- Shell
- GUI
- Networking
Derleme ve çalıştırma
- Derleme için Nim, LLVM'nin
clang·lldaraçları ve Just gereklidir clangvelldikilileriPATHiçinde olmalıdırPATHiçinde değillerse.envdosyasında ilgili ikili dosya yolları belirtilebilir
- Derleme komutu aşağıdaki gibidir
just build
- Fusion şu anda QEMU üzerinde çalıştırılmaktadır
- Çalıştırma komutu aşağıdaki gibidir
just run
Lisans
- Lisans MIT'tir
1 yorum
Hacker News yorumları
Yazarı benim. Sorularınız varsa yanıtlayabilirim
Çıkarmadıysa, bunun Nim'e özgü stop-the-world olmayan GC sayesinde olduğunu düşünüyor musunuz?
https://nim-lang.org/1.4.0/gc.html
Şu anda ikisi epey benzer görünüyor, ama Swift'in pratikte daha fazla sınanmış olduğunu düşünüyorum
Blog ve dokümantasyon harika. Gösterme ile açıklama arasındaki denge çok iyi; böyle paylaştığınız için teşekkürler
Yaptığınız her şeyi gerekçelendirmek zorunda kalmak, gereksiz karmaşıklığı ortadan kaldırmaya ve daha önemli kısımlara odaklanmaya yardımcı oluyor
Fusion yazarının geliştirme günlüğü:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Böyle şeyleri görmek güzel. Birkaç yıldır Nim ekosistemine ara sıra dahil oluyorum; bu küçük ve keyifli projenin ilerlemeye devam ettiğini görmek sevindirici
Harika. ELF modülünü açıp baktım; okunması kolay olduğu için keyifliydi
Bir gün Nim ile gerçek zamanlı işletim sistemi yazmayı isterim. Nim ile embedded programlar yazmayı seviyorum, bu yüzden bir RTOS yapmak da eğlenceli olabilir
Nim nedir ve Fusion'ın genel tasarım hedefleri nelerdir?
Umarım fazla temel bir soru değildir. Hiç arka plan bilgim yok; biri açıklarsa iyi olur
Neden Nim olduğu konusunda, birlikte hazırladığımız sitede şöyle açıklamıştık:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Daha fazla Nim projesi görmek beni mutlu eder. Çoğunlukla Python ve JavaScript kullanıyorum, ama modern ve hızlı statik tipli bir dili daha bilmenin avantajları ilgimi çekiyor
Go, Rust, Zig ve Nim arasında Nim en çok hoşuma gidiyor. Kodu okurken sözdizimsel gürültünün az olması anlamında en Pythonvari geleni o
Yeni kodun prototipini çıkarırken REPL kullanmayı çok seviyorum; INim bunu iyi yapıyor
Nim'in şu anki en büyük sorunu topluluk ölçeğinin küçük olması. Bu yüzden kullanılabilir ve bakımı yapılan kütüphaneler dünyası, diğer dil topluluklarına göre daha küçük. Tavuk-yumurta problemi ama daha fazla geliştirici, ben dahil, “dünyada görmek istediği değişimin kendisi olarak” bunu çözebilir
Dil de dikkatli biçimde gelişiyor; Araq liderliğinde uzun vadede daha iyiye gidecek gibi görünüyor
Ekosistem Python veya Rust kadar büyük değil, ama şaşırtıcı şekilde standart kütüphanede ihtiyaç duyulan çoğu şey var. Bir şey yapmak için üçüncü taraf paket aramak nadiren gerekiyor
Elbette Nim'in daha az bilinen diller arasında olduğunu kabul ediyorum. Yine de bu, yapılması gereken işi çok iyi yapan umut vadeden bir dil olduğu gerçeğini değiştirmiyor
Topluluğun daha fazla odaklanması gereken alanın IDE desteği olduğunu düşünüyorum. VSCode eklentisi fena değil ama pürüzlü tarafları var. Ben JetBrains IDE'leri daha çok tercih ediyorum; resmî Nim eklentisi ise en iyi ihtimalle oldukça yetersiz
Nim için JetBrains eklentisi yapmaya yönelik bir yan projem de var, ancak henüz çok ilerletemedim
[0] https://forum.nim-lang.org
[1] https://github.com/khaledh/nimjet
Nim harika bir sistem programlama dili ve daha popüler olmalı