Fusion, hệ điều hành hobby được triển khai bằng Nim
(github.com/khaledh)- Fusion OS là một hệ điều hành hobby dành cho x86-64, sử dụng Nim làm ngôn ngữ triển khai
- Các tính năng hiện đã được triển khai được chia thành bootloader UEFI, quản lý bộ nhớ, quản lý tác vụ, system call, IPC và hỗ trợ phần cứng
- Quản lý bộ nhớ và tác vụ bao gồm demand paging, đa nhiệm ưu tiên ngắt, lập lịch dựa trên mức ưu tiên và bộ nạp ELF
- Môi trường chạy hiện tại là QEMU; để build cần Nim,
clang·lldcủa LLVM và Just - Kế hoạch trong tương lai bao gồm bảo mật dựa trên capability, disk I/O, file system, shell, GUI và networking
Tổng quan về Fusion OS
- Fusion là một hệ điều hành hobby cho x86-64, được triển khai bằng Nim
- Quá trình phát triển được ghi chép tại 0xc0ffee.netlify.app
- Mục ảnh chụp màn hình bao gồm bootloader UEFI, màn hình kernel khởi động và đang chạy
- Ảnh chụp GUI là màn hình của nhánh
graphics, và nhánh này vẫn đang trong quá trình phát triển
Các tính năng hiện có
-
Khởi động
- Đã triển khai UEFI Bootloader
-
Quản lý bộ nhớ
- Higher Half Kernel với cấu trúc Single Address Space
- Physical Memory Manager
- Virtual Memory Manager
- Demand Paging
-
Quản lý tác vụ
- Kernel Tasks
- User Mode Tasks
- Preemptive Multitasking
- Priority-based Scheduling
- ELF Loader hỗ trợ Demand Paged và Relocation
-
System call
- System Call Interface
- User Mode Library
-
IPC
- Channel-based IPC
- Message Passing
-
Phần cứng
- PCI Device Enumeration
- ACPI Configuration
- Local APIC Timer
- I/O APIC Interrupts
- PS/2 Keyboard Driver
- Bochs Graphics Adapter Driver
Các tính năng được lên kế hoạch
- Capability-based Security
- Event-based Task State Machines
- Disk I/O
- File System
- Shell
- GUI
- Networking
Build và chạy
- Để build cần Nim,
clang·lldcủa LLVM và Just - Các binary
clangvàlldphải có trongPATH- Nếu không có trong
PATH, có thể chỉ định đường dẫn các binary đó trong tệp.env
- Nếu không có trong
- Lệnh build như sau
just build
- Hiện tại Fusion chạy trên QEMU
- Lệnh chạy như sau
just run
Giấy phép
- Giấy phép là MIT
1 bình luận
Các ý kiến trên Hacker News
Tôi là tác giả. Nếu có câu hỏi, tôi sẽ trả lời
Nếu không, bạn có nghĩ đó là nhờ GC không stop-the-world đặc trưng của Nim không?
https://nim-lang.org/1.4.0/gc.html
Hiện giờ hai ngôn ngữ trông khá giống nhau, nhưng có vẻ Swift đã được kiểm chứng trong thực tế nhiều hơn
Blog và tài liệu rất tuyệt. Cân bằng rất tốt giữa việc cho xem và giải thích; cảm ơn vì đã chia sẻ như vậy
Vì phải biện minh cho mọi việc mình làm, nó giúp loại bỏ độ phức tạp không cần thiết và tập trung vào những phần quan trọng hơn
Nhật ký phát triển của tác giả Fusion:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Thấy những thứ như thế này thật thích. Tôi đã thỉnh thoảng tham gia hệ sinh thái Nim trong vài năm qua, và rất vui khi thấy dự án nhỏ vui vẻ này vẫn tiếp tục chạy
Hay quá. Tôi đã mở mô-đun ELF xem thử và thấy nó dễ đọc, rất thú vị
Một ngày nào đó tôi muốn thử viết hệ điều hành thời gian thực bằng Nim. Tôi thích viết chương trình nhúng bằng Nim, nên làm một RTOS chắc cũng sẽ thú vị
Nim là gì, và các mục tiêu thiết kế tổng thể của Fusion là gì?
Hy vọng đây không phải câu hỏi quá cơ bản. Tôi hoàn toàn không có kiến thức nền, nên mong ai đó giải thích giúp
Về lý do vì sao là Nim, trang web tôi làm cùng dự án giải thích như sau:
https://0xc0ffee.netlify.app/osdev/01-intro.html
Tôi rất vui nếu thấy nhiều dự án Nim hơn. Tôi chủ yếu dùng Python và JavaScript, nhưng quan tâm đến lợi ích của việc biết thêm một ngôn ngữ kiểu tĩnh hiện đại và nhanh
Trong số Go, Rust, Zig, Nim, tôi thích Nim nhất. Nó có cảm giác giống Python nhất theo nghĩa là ít nhiễu cú pháp khi đọc code
Tôi rất thích dùng REPL khi làm prototype cho code mới, và INim làm tốt việc đó
Vấn đề lớn nhất hiện nay của Nim là quy mô cộng đồng nhỏ. Vì vậy, thế giới các thư viện có thể dùng được và được bảo trì nhỏ hơn so với các cộng đồng ngôn ngữ khác. Đây là vấn đề con gà và quả trứng, nhưng nhiều lập trình viên hơn, trong đó có tôi, có thể giải quyết bằng cách “trở thành thay đổi mà mình muốn thấy trên đời”
Ngôn ngữ cũng đang phát triển một cách thận trọng, và với Araq dẫn dắt, tôi nghĩ về dài hạn nó sẽ còn tốt hơn
Hệ sinh thái không lớn như Python hay Rust, nhưng đáng ngạc nhiên là thư viện chuẩn đã có hầu hết những gì cần thiết. Tôi hiếm khi phải tìm gói bên thứ ba để làm việc gì đó
Tất nhiên tôi thừa nhận Nim thuộc nhóm ngôn ngữ ít được biết đến hơn. Nhưng điều đó không làm mất đi ưu điểm rằng đây là một ngôn ngữ đầy triển vọng và làm rất tốt những việc cần làm
Tôi nghĩ phần cộng đồng nên tập trung hơn là hỗ trợ IDE. Extension cho VSCode ổn, nhưng vẫn còn vài chỗ thô. Tôi thích IDE của JetBrains hơn, mà plugin Nim chính thức thì nói nhẹ cũng là còn thiếu sót nhiều
Tôi cũng có một side project làm plugin JetBrains cho Nim, nhưng vẫn chưa tiến triển được nhiều
[0] https://forum.nim-lang.org
[1] https://github.com/khaledh/nimjet
Nim là một ngôn ngữ lập trình hệ thống tuyệt vời và nên trở nên phổ biến hơn