Cosmos (sistema operativo)

Da Wikipedia, l'enciclopedia libera.
Cosmos
Logo
Screenshot di una sessione di prova della shell di Cosmos:
Screenshot di una sessione di prova della shell di Cosmos:
Sviluppatore Cosmos Project
Famiglia SO ...
Modello del sorgente Open source
Release corrente Milestone 3 (29 marzo 2009)
Tipo di kernel Microkernel
Piattaforme supportate {{{piattaforme_supportate}}}
Licenza Licenza BSD
Stadio di sviluppo Rilasciata pubblicamente/In sviluppo
Sito web http://www.gocosmos.org/

Cosmos è un sistema operativo open source scritto in C#. Include inoltre un compilatore (IL2CPU) per convertire il (.NET) bytecode del Common Intermediate Language in istruzioni native. Il sistema operativo è compilato insieme con un programma utente e le librerie associate usando il compilatore IL2CPU per creare un binario scritto in linguaggio macchina stand-alone e avviabile. Il binario può essere avviato da un floppy disk, una chiavetta USB, CD-ROM o dentro una macchina virtuale. L'architettura supportata al momento[quando?] è x86, ma molte altre destinazioni sono state pianificate, e sebbene il sistema sia mirato al C#, possono essere usati la maggior parte dei linguaggi conformi a .NET (il linguaggio deve essere compilato puramente in CIL senza usare P/Invoke). Cosmos è principalmente destinato all'uso con il .NET Framework di Microsoft, comunque può essere anche compilato usando Mono.

Come citato nel sito web, Cosmos è un acronimo per C# Open Source Managed Operating System, comunque il nome è stato scelto prima di darli un significato. Non è tra gli obiettivi di Cosmos essere un sistema operativo completo, ma piuttosto un set di strumenti per permettere gli altri sviluppato di costruirsi semplicemente i propri sistemi operativi, o come uno dei leader del progetto preferisce dire, di agire come assemblatore di "mattoncini LEGO", ognuno dei quali rappresenta una caratteristica del sistema operativo. Può anche agire come un layer di astrazione hardware (HAL), nascondendo molto le strutture interne costituenti la logica dell'hardware allo sviluppatore.

La release corrente di Cosmos è la build 106458 (rilasciata il 16 Gennaio 2014). La maggior parte del lavoro su Cosmos al momento[quando?] consiste nello sviluppo di un'interfaccia di rete per il sistema: il sistema già supporta alcune schede di rete e qualche caratteristica del protocollo TCP/IP. Sono disponibili al momento[quando?] due versioni di Cosmos: la più aggiornata proviene dal codice sorgente su repository di Codeplex mentre l'altra versione viene rilasciata (conosciuta come User Kit). I codici disponibili su Codeplex è indicata per chiunque voglia aiutare lo sviluppo del Kernel mentre l'user kit è progettata per chiunque voglia usare solamente Cosmos per svilupparsi il proprio sistema operativo. Per qualche tempo prima della release della Milestone3, è stato raccomandato a tutti gli utenti di scaricare il codice sorgente da Codeplex, siccome la precedente Milestone 2 era diventata obsoleta.

Cosmos usa il bootloader Syslinux, ma precedentemente è stato anche usato GRUB.

Scrivere codice su Cosmos[modifica | modifica sorgente]

Un sistema operativo scritto su Cosmos nasce come un progetto basato su .NET (precisamente un'applicazione per console). Prima di tutto, lo sviluppatore aggiunge speciali porzioni di codice che permettono al sistema di Cosmos di essere compilato ed eseguito. L'utente aggiunge il seguente codice nel metodo Main() dell'applicazione:

Cosmos.Compiler.Builder.BuildUI.Run()

Questo codice apre la finestra del Cosmos Builder, la quale è usato dallo sviluppatore per compilare il codice nel linguaggio macchina. Sebbene sia chiamato dall'applicazione .NET, la finestra è separata dal sistema operativo: serve solo per istruire il sistema riguardo ai nostri bisogni.

Poi, lo sviluppatore aggiunge un nuovo metodo alla classe del programma, chiamato Init(). Il metodo è sotto descritto:

public static void Init()
{
   Cosmos.Sys.Boot xBoot = new Cosmos.Sys.Boot();
   xBoot.Execute();
   //Add further code here...
}

Questo metodo sarà chiamato per primo quando il sistema operativo verrà eseguito. Le prime due linee inizializzano il sistema, caricando i driver e preparando la macchina. In un sistema operativo pratico, lo sviluppatore sostituirà //Add further code here... con il codice del suo sistema operativo. Questo codice può usare ogni oggetto presente nella libreria del .NET Framework supportati da Cosmos (o si crea una traduzione dell'oggetto nel codice macchina (tramite costrutti chiamati Plugs), o ogni parte di esso è già supportata). Inoltre può chiamare una delle librerie incluse in Cosmos.

Il Cosmos User Kit e Visual Studio[modifica | modifica sorgente]

Il Cosmos User Kit è una parte di Cosmos progettata per rendere Cosmos semplice da usare per gli sviluppatori che usano Microsoft Visual Studio. Appena installato, l'utente può creare un nuovo tipo di progetto. chiamato Cosmos Project. Esso consiste in una versione modificata del template della applicazione per console, che usa il compilatore IL2CPU e lo scheletro del codice di avvio viene già aggiunto.

Compilare un progetto[modifica | modifica sorgente]

Una volta che il codice è completo, un utente potrà compilare l'intero progetto usando il compilatore .NET preferito. Così si convertirà il codice sorgente costituente l'applicazione (scritta in (C# o altro linguaggio .NET) nel Common Intermediate Language (CIL), il linguaggio nativo del .NET Framework. Come prossimo passo l'applicazione verrà eseguita, mostrando la finestra del Cosmos Builder, la quale mostra allo sviluppatore opzioni per determinare essattamente come il progetto verrà compilato. Esse includono come avviare il progetto - tramite emulatori come QEMU, Virtual PC e VMWare, scrivere il sistema su immagine ISO che può essere masterizzato su CD-ROM e usato come Live Cd, o tramite avvio di rete PXE - insieme alle impostazioni per il debug usando il debugger fornito con Cosmos, e varie altre impostazioni.

Una volta che l'utente ha scelto le impostazioni corrette, si può premere il tasto Build: viene quindi invocato il compilatore IL2CPU il quale sistematicamente cerca attraverso tutto il codice CIL costituente l'applicazione (escluso il codice legato al compilatore), convertendolo nel Linguaggio assembly x86. Poi, uno script di batch è aperto in un prompt dei commandi, invocando un assembler che converte il CIL nel linguaggio macchina tale da poter essere eseguito dalla CPU. In conclusione, l'output desiderato viene attivato, eseguendo il sistema in un emulatore, in un motore PXE, o producendo un'immagine ISO dal codice binario.

Opzioni per il debug[modifica | modifica sorgente]

Cosmos offre varie opzioni per scegliere come eseguire il debug del sistema operativo.

Virtualizzazione[modifica | modifica sorgente]

Cosmos permette agli utenti di avviare il proprio sistema operativo nell'ambiente virtualizzato usando una macchina virtuale. Ciò permette allo sviluppatore di testare il sistema nel proprio computer senza la necessità di riavviare, dando i vantaggi di non richiedere hardware aggiuntivo e permette allo sviluppatore di rimanere nel suo ambiente operativo (IDE). Cosmos permette l'utilizzo di 3 emulatori al momento[quando?]. QEMU è un emulatore gratuito che è incluso in Cosmos. VMWare è un altro emulatore, commerciale, scaricabile dal sito di VmWare,. Virtual PC è un altro emulatore gratuito che può essere scaricato dal sito di Microsoft: [1]. Siccome Cosmos può essere inserito all'interno di un'immagine ISO, può essere avviato anche su qualsiasi altro emulatore che supporta l'avvio da ISO avviabile (esempio, Bochs).

Un'altra caratteristica disponibile con QEMU è il debugger che permette all'utente di seguire direttamente attraverso il codice sorgente, similmente come il debugger di Visual Studio mentre il sistema gira su QEmu. Questo avviene grazie all'aggiunta di codice all'interno del sistema operativo creato, che permette di comunicare con il debugger di Cosmos attraverso una rete virtuale.

Immagine disco[modifica | modifica sorgente]

Questa opzione scrive il sistema operativo in un'immagine ISO, che può essere caricata in alcuni emulatori (come Virtual PC) o masterizzata su CD-ROM e avviata nativamente.

Avvio tramite rete PXE[modifica | modifica sorgente]

Questa opzione permette al sistema operativo di essere avviato nativamente senza ricorrere ad un software di virtualizzazione. I dati sono inviati tramite una rete LAN al terminale client. È richiesto ai terminali - uno come terminale client (nel quale il sistema sarà avviato) e l'altro come terminale server (solitamente il terminale dello sviluppatore). Richiede anche una rete tra i due terminali, e il terminale client deve avere una scheda di rete e un BIOS che sia capace di avviare tramite PXE.

Cosmos Assembler[modifica | modifica sorgente]

Il team del progetto Cosmos ha anche creato un assembler che sarà il principale per il progetto. Comunque, al momento[quando?] è ancora lento e inefficiente, perciò si sta usando invece l'assembler NASM.

Voci correlate[modifica | modifica sorgente]

Altri progetti[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]