- Fusion OS adalah sistem operasi hobi untuk x86-64 yang menggunakan Nim sebagai bahasa implementasinya
- Fitur yang saat ini sudah diimplementasikan terbagi menjadi bootloader UEFI, manajemen memori, manajemen tugas, system call, IPC, dan dukungan perangkat keras
- Manajemen memori dan tugas mencakup demand paging, multitasking preemptif, penjadwalan berbasis prioritas, dan loader ELF
- Lingkungan eksekusi saat ini adalah QEMU, dan untuk build dibutuhkan Nim,
clang·llddari LLVM, serta Just - Rencana ke depan mencakup keamanan berbasis capability, disk I/O, sistem berkas, shell, GUI, dan jaringan
Gambaran umum Fusion OS
- Fusion adalah sistem operasi hobi untuk x86-64 yang diimplementasikan dengan Nim
- Proses pengembangannya didokumentasikan di 0xc0ffee.netlify.app
- Bagian tangkapan layar mencakup bootloader UEFI, proses boot kernel, dan layar saat berjalan
- Tangkapan layar GUI adalah tampilan dari branch
graphics, dan branch tersebut masih dalam pengerjaan
Fitur yang saat ini sudah diimplementasikan
-
Boot
- UEFI Bootloader telah diimplementasikan
-
Manajemen memori
- Higher Half Kernel dengan struktur Single Address Space
- Physical Memory Manager
- Virtual Memory Manager
- Demand Paging
-
Manajemen tugas
- Kernel Tasks
- User Mode Tasks
- Preemptive Multitasking
- Priority-based Scheduling
- ELF Loader yang mendukung Demand Paging dan Relocation
-
System call
- System Call Interface
- User Mode Library
-
IPC
- Channel-based IPC
- Message Passing
-
Perangkat keras
- PCI Device Enumeration
- ACPI Configuration
- Local APIC Timer
- I/O APIC Interrupts
- PS/2 Keyboard Driver
- Bochs Graphics Adapter Driver
Fitur yang direncanakan
- Capability-based Security
- Event-based Task State Machines
- Disk I/O
- File System
- Shell
- GUI
- Networking
Build dan menjalankan
- Untuk build dibutuhkan Nim,
clang·llddari LLVM, dan Just - Binary
clangdanlldharus ada diPATH- Jika tidak ada di
PATH, Anda dapat menentukan path binary tersebut di file.env
- Jika tidak ada di
- Perintah build adalah sebagai berikut
just build
- Fusion saat ini berjalan di QEMU
- Perintah untuk menjalankannya adalah sebagai berikut
just run
Lisensi
- Lisensinya adalah MIT
1 komentar
Opini Hacker News
Saya penulisnya. Kalau ada pertanyaan, saya akan menjawab
Kalau tidak, apakah menurut Anda itu berkat GC khas Nim yang bukan stop-the-world?
https://nim-lang.org/1.4.0/gc.html
Sekarang keduanya tampak cukup mirip, sementara Swift sepertinya sudah lebih banyak teruji di penggunaan nyata
Blog dan dokumentasinya bagus sekali. Keseimbangan antara menunjukkan dan menjelaskan sangat baik, dan terima kasih sudah membagikannya seperti ini
Karena harus membenarkan semua yang dilakukan, itu membantu menghilangkan kompleksitas yang tidak perlu dan lebih fokus pada bagian yang lebih penting
Catatan pengembangan dari penulis Fusion:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Senang melihat hal seperti ini. Saya beberapa tahun ini sesekali terlibat di ekosistem Nim, dan menyenangkan melihat proyek kecil yang menyenangkan ini terus berjalan
Keren. Saya membuka modul ELF-nya, dan karena mudah dibaca, itu menyenangkan
Suatu hari saya ingin mencoba menulis sistem operasi real-time dengan Nim. Saya suka menulis program embedded dengan Nim, jadi membuat RTOS juga sepertinya akan menyenangkan
Apa itu Nim, dan apa tujuan desain umum Fusion?
Semoga ini bukan pertanyaan yang terlalu mendasar. Saya sama sekali tidak punya latar belakang, jadi akan bagus kalau ada yang menjelaskan
Tentang mengapa Nim, di situs yang kami buat bersama dijelaskan seperti ini:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Saya senang kalau lebih banyak proyek Nim terlihat. Saya terutama memakai Python dan JavaScript, tetapi tertarik pada manfaat mengetahui satu lagi bahasa modern, cepat, dan bertipe statis
Di antara Go, Rust, Zig, dan Nim, Nim yang paling saya sukai. Rasanya paling Pythonic dalam arti ada sedikit noise sintaks saat membaca kode
Saya sangat suka memakai REPL ketika membuat prototipe kode baru, dan INim melakukannya dengan baik
Masalah terbesar Nim saat ini adalah ukuran komunitas yang kecil. Karena itu, dunia library yang bisa digunakan dan dipelihara lebih kecil dibanding komunitas bahasa lain. Ini masalah ayam dan telur, tetapi bisa diselesaikan jika lebih banyak developer, termasuk saya, memilih untuk “menjadi perubahan yang ingin dilihat di dunia”
Bahasanya juga berkembang dengan hati-hati, dan selama dipimpin Araq, sepertinya akan semakin baik dalam jangka panjang
Ekosistemnya tidak sebesar Python atau Rust, tetapi mengejutkannya, standard library sudah berisi sebagian besar hal yang diperlukan. Jarang saya perlu mencari paket pihak ketiga untuk melakukan sesuatu
Tentu saya mengakui Nim termasuk bahasa yang kurang dikenal. Meski begitu, itu tidak menghilangkan keunggulannya sebagai bahasa menjanjikan yang melakukan tugasnya dengan sangat baik
Menurut saya bagian yang perlu lebih difokuskan komunitas adalah dukungan IDE. Ekstensi VSCode lumayan, tetapi masih ada bagian yang kasar. Saya lebih menyukai IDE JetBrains, dan plugin resmi Nim, kalau mau dikatakan halus, masih sangat kurang
Saya juga punya side project untuk membuat plugin JetBrains bagi Nim, tetapi belum terlalu banyak kemajuannya
[0] https://forum.nim-lang.org
[1] https://github.com/khaledh/nimjet
Nim adalah bahasa pemrograman sistem yang sangat bagus, dan seharusnya lebih populer