The Cosmos open source OS “construction kit” is looking to create fast, small-footprint applications that are less dependent on hardware. In development since 2006, the kit is not yet ready for production work, though, as the 1.0 version isn’t due until next year.
Cosmos executes code faster because it doesn’t have the overhead of switching tasks at the CPU level. “It’s actually a set of Legos for building OSes using .Net,” said project co-founder Chad Hower, a former Microsoft developer evangelist
Developers can use Cosmos with Visual Studio to write a program and boot it directly as an OS. In the future, Cosmos will enable developers to write their own miniature or, eventually, even full OSes.
Built leveraging C# and the X# home-brewed language, Cosmos stands for C# Open Source Managed OS. But it’s not an operating system itself and isn’t limited to using just C#; other managed languages such as Visual Basic .Net or F# also can be used. Cosmos is not an in-house Microsoft project.
In a video on the MSDN blog, Hower explained that existing OSes rely on the Intel architecture and have legacy capabilities for functions like running older executables. With Cosmos, developers wanted to see what concepts they could change; Cosmos uses software instead of hardware, moving hardware protections into software via managed code.
With a traditional Windows or Linux application, every process gets loaded into a hardware-protected space, requiring overhead on the CPU. Cosmos doesn’t use virtual memory in a traditional sense, and it doesn’t use hardware protections or user and ring levels in CPUs to control those capabilities. Instead, “that’s all enforced by the Cosmos kernel itself,” Hower said. The Cosmos compiler and execution model enables duplication of normal memory protection functions in the OS itself in a more efficient manner, and Cosmos makes it easier to share objects as well.
Cosmos is available as a user kit for developing OSes and a development kit, with full source and build tools. The project needs developers who can work on low-level, foundational capabilities like memory management or threads.