用 现代 C# 编写操作系统。
提前编译。
运行在任何硬件上。
Cosmos 是一个开源的 C# 操作系统框架。用 C# 14 编写你的内核,用 NativeAOT 编译,在 x64 或 ARM64 上启动:没有 JIT,没有托管运行时。
在裸机上启动 C# 所需的一切。
Gen3 用官方的 .NET 工具链取代了 IL2CPU。它之上的一切(GC、调度器、驱动程序、网络、文件系统)都是你可以阅读、plug 或替换的 C# 代码。
Cosmos 构建流水线依次运行 NativeAOT 代码生成、汇编、链接,并为 Limine 引导加载程序打包出可启动的 ISO。
Cosmos.Patcher 在 NativeAOT 编译之前,在 IL 层面替换运行时方法。
目标由 RuntimeIdentifier 选择:x64 上用 APIC 中断,ARM64 上用 GIC,两者都用 GAS 汇编,没有端口 I/O 的地方用 MMIO。
字符串、集合、泛型、线程、Console:全部由 NativeAOT 编译,没有 JIT,没有托管运行时。
带精确栈扫描的标记-清除 GC,支持锁的抢占式优先级步幅(stride)调度器,以及带栈展开的异常处理。
基于 Cosmos 自己的网络栈的 TCP 和 UDP 套接字:ARP、IPv4、DHCP 和 DNS。HTTPS/TLS 已在路线图上。
AHCI/SATA 和 NVMe 驱动程序,MBR/GPT/EBR 分区,Unix 风格 VFS 上的 FAT12/16/32。
基于 UEFI GOP 帧缓冲区(经由 Limine)的双缓冲 Canvas API,以及键盘和鼠标输入。
通过 LAI 库支持 ACPI,并提供 UART 串口用于内核日志和调试。
精选项目
不知道从哪里开始?看看这些项目,通过实例学习 Cosmos,顺便找找灵感!
- Project-Prism/Prism-OS89 个星标An operating system written in C#, Made possible by the cosmos community! #csharp #operating-system #os
- LumaTechnologies/SphereOS74 个星标SphereOS - An operating system written in C#, powered by Cosmos. #operating-system
- Ncleardev/NclearOS-241 个星标Cosmos based Operating System with GUI. #operating-system #os
- Adisol07/SaphireOS25 个星标New operating system #csharp
- ascpixi/cosmos-coroutines22 个星标A simple, non-preemptive coroutine scheduler that allows for cooperative multitasking within Cosmos kernels #coroutines #multitasking #csharp
- AAM1075/XenOS15 个星标XenOS is an operating system written in .NET C# and is made possible by the Cosmos OS project. #c-sharp #dotnet #operating-system
- mirage-desktop/Mirage-classic12 个星标Mirage Desktop Environment (Classic) #csharp #desktop
- DogOSdev/DogOS9 个星标A Operating System made with Cosmos and in C#. #csharp #dotnet
十八年,C# 直面硬件。
Cosmos 经历了三次生命。Gen3 是项目诞生以来最大的一次重建。
- (tag: gen1)Date: 2007
证明。
最初的 Cosmos。它证明了可以把 C# 编译成能在裸机上启动的东西。一个小项目,一个大想法。
- (tag: gen2)Date: 2010 年代至 2024 年
IL2CPU 时代。
一个自制的 IL 到 x86 编译器,由社区构建和维护了十多年。IL2CPU 把 .NET 字节码直接翻译成汇编,多年来驱动着众多业余操作系统。
- (HEAD -> gen3)Date: 今天
NativeAOT。
我们放下了 15 年的自制编译器,站到了 NativeAOT 的肩膀上。Cosmos 现在在 IL 层面修补 .NET 官方的 AOT 流水线:现代语言特性,更快的构建,更少需要维护的代码。
