# Cosmos (sistema operatiu)

El sistema operatiu gestionat de codi obert C# (Cosmos) és un conjunt d'eines per crear GUI i sistemes operatius basats en línia d'ordres, escrits principalment en el llenguatge de programació C# i petites quantitats d'un llenguatge ensamblador d'alt nivell anomenat X#. Cosmos és un backronym, en què l'acrònim es va triar abans del significat. És un programari de codi obert publicat sota una llicència BSD.
A 2022, Cosmos encompasses an ahead-of-time (AOT) compiler named IL2CPU to translate Common Intermediate Language (CIL) into native instructions. Cosmos compiles user-made programs and associated libraries using IL2CPU to create a bootable native executable that can run independently. The resulting output can be booted from a USB flash drive, CD-ROM, over a network via Preboot Execution Environment (PXE), or inside a virtual machine. Recent releases also allow deploying to certain x86 embedded devices over Universal Serial Bus (USB). While C# is the primary language used by developers (both on the backend and by end users of Cosmos), many CLI languages can be used, provided they compile to pure CIL without the use of Platform Invocation Services (P/Invokes). Cosmos is mainly intended for use with .NET.
Cosmos no pretén convertir-se en un sistema operatiu complet, sinó en un conjunt d'eines per permetre a altres desenvolupadors crear els seus propis sistemes operatius de manera senzilla i senzilla amb. NET. També funciona com una capa d'abstracció, amagant gran part del funcionament intern del maquinari al desenvolupador eventual.
Les versions de Cosmos es divideixen en dos tipus: el Userkit i el Devkit. L'Userkit és una versió preempaquetada que s'actualitza de manera irregular a mesura que s'afegeixen funcions noves i millorades. Els kits d'usuari generalment es consideren estables, però no inclouen canvis recents i poden mancar de funcions. El Devkit fa referència al codi font de Cosmos i s'ha de crear manualment. Els Devkits solen ser una mica estables, però poden tenir alguns errors. El Devkit es pot adquirir a GitHub i utilitza Git per a la gestió del control de fonts.
Actualment, la majoria del treball a Cosmos està dirigit a millorar la funcionalitat del depurador i la integració de Microsoft Visual Studio. El treball del nucli se centra a implementar sistemes de fitxers, gestió de memòria i desenvolupament d'una interfície de xarxa fiable. Limine serveix com a carregador d'arrencada del projecte; a les versions anteriors del conjunt d'eines, es va utilitzar GRUB.

## Origen

La idea de Cosmos va ser creada per Chad Hower i inicialment va ser desenvolupada conjuntament per Hower i Matthijs ter Woord. Amb el temps, Cosmos ha estat mantingut i millorat per moltes altres persones.

## Desenvolupament amb Cosmos

Cosmos té moltes facilitats per millorar l'experiència de desenvolupament de sistemes operatius, i està dissenyat per fer que el procés sigui el més ràpid i indolor possible. No cal coneixements de llenguatge ensamblador per utilitzar Cosmos.
Una característica clau de Cosmos, que el separa d'altres sistemes operatius d'aquest tipus, és la seva estreta integració amb Microsoft Visual Studio. El codi es pot escriure, compilar, depurar i executar-se completament a través de Visual Studio, amb només unes poques tecles. Cosmos ja no és compatible amb Visual Studio 2015, Visual Studio 2017 o Visual Studio 2019. Ara només és compatible amb Visual Studio 2022.
Cosmos es pot depurar perfectament mitjançant Visual Studio quan s'executa sobre PXE o en una màquina virtual. Hi ha moltes funcions de depuració estàndard, com ara punts d'interrupció, traça i registre. A més, la depuració es pot fer mitjançant cables sèrie, si s'executa amb maquinari físic. Quan s'executa a VMWare, Cosmos admet passos i punts d'interrupció, fins i tot mentre s'executa un sistema operatiu.
Cosmos utilitza la virtualització per accelerar el desenvolupament permetent als desenvolupadors provar els seus sistemes operatius sense haver de reiniciar els seus ordinadors amb tanta freqüència. Per defecte, s'utilitza VMware Player, per la seva facilitat d'ús pel que fa a la integració amb el projecte. També s'admeten altres entorns de virtualització, com Bochs i Hyper-V. També es pot generar una imatge de disc ISO que es pot gravar en una unitat flash USB, un CD-ROM o un suport similar.
També s'admet l'arrencada PXE, cosa que permet que les màquines remotes executin Cosmos a través d'una connexió de xarxa.

## Referències

* ↑ «COSMOS Introduction | COSMOS Docs» (en anglès). [Consulta: 11 abril 2024].
* ↑ «COSMOS Overview | COSMOS Docs» (en anglès). [Consulta: 11 abril 2024].
* ↑ «Change bootloader to Limine · Pull Request #2521 · CosmosOS/Cosmos · GitHub» (en anglès). GitHub.
* ↑ «Cosmos: An open-source .Net-based microkernel OS is born» (en anglès). [Consulta: 11 abril 2024].