Cosmos (sistema operativo): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Corretta grammatica Etichette: Modifica da mobile Modifica da applicazione mobile Modifica da applicazione Android |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile Attività per i nuovi utenti Suggerito: aggiungi collegamenti |
||
| (8 versioni intermedie di 7 utenti non mostrate) | |||
Riga 16:
'''Cosmos''' è un [[sistema operativo]] [[open source]] scritto in [[C sharp|C#]]. Include inoltre un compilatore ([[IL2CPU]]) per convertire il ([[Microsoft .NET|.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 (informatica)|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 è 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 [[Common Intermediate Language|CIL]] senza usare [[P/Invoke]]).<ref>{{cita web |url=https://www.codeproject.com/Articles/99928/Develop-Your-Own-Operating-System-in-C-or-VB-NET |lingua=en |accesso=22 agosto 2018 |titolo=Develop Your Own Operating System in C# or VB.NET}}</ref> Cosmos è principalmente destinato all'uso con il [[.NET Framework]] di [[Microsoft]], comunque in futuro potrà essere anche compilato usando [[Mono (progetto)|Mono]].
Come citato nel [[sito web]], Cosmos è un acronimo per C# Open Source Managed Operating System. Il nome è stato scelto prima di dargli un significato: infatti tutti i linguaggi .NET possono essere utilizzati (non solo C#) per sviluppare Cosmos. 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 [[hardware abstraction layer|layer di astrazione hardware]] (HAL), nascondendo molto le strutture interne costituenti la logica dell'hardware allo sviluppatore.
La maggior parte del lavoro su Cosmos 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 due versioni di Cosmos: la più aggiornata proviene dal [[codice sorgente]] su repository di Github mentre l'altra versione è disponibile per tutti (conosciuta come User Kit). Il codice disponibili su Github è indicato 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 [
== Scrivere codice su Cosmos ==
Un sistema operativo scritto su Cosmos nasce come un progetto basato su [[.NET Framework|.NET]] (precisamente un'applicazione per console). Prima di tutto, lo sviluppatore deve selezionare l'apposito template Cosmos e da qui selezionare quale linguaggio utilizzare per scrivere il Sistema Operativo (attualmente C#, VB.NET e F# sono supportati). La Classe kernel mette a disposizione 2 metodi BeforeRun() e Run(). In BeforeRun() va scritto il codice che viene eseguito prima che il kernel parta per esempio:
<
protected override void BeforeRun()
{
Riga 30:
Console.WriteLine("Cosmos booted successfully. Type a line of text to get it echoed back.");
}
</syntaxhighlight>
Nel metodo Run() invece va scritto il codice proprio del Sistema Operativo tipicamente per esempio:
<
protected override void Run()
{
Riga 43:
//Add further code here...
}
</syntaxhighlight>
Il codice dentro il metodo Run() sarà eseguito dentro a un loop del Kernel di Cosmos non è necessario scrivere while(true) o altri costrutti per creare un loop infinito (e potrebbe anche essere dannoso perché il resto del Kernel non potrebbe girare).
Riga 53:
== Compilare un progetto ==
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
=== Opzioni per il debug ===
Riga 59:
==== Virtualizzazione ====
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 ([[
Un'altra caratteristica disponibile con [[Bochs]] è il [[debugger]] che permette all'utente di seguire direttamente attraverso il codice sorgente, similmente come il [[debugger]] di [[Microsoft Visual Studio|Visual Studio]] mentre il sistema gira su [[Bochs]]. 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 ====
Questa opzione scrive il sistema operativo in un'immagine ISO, che può essere caricata in alcuni emulatori (come [[Microsoft Virtual PC|Virtual PC]]) o masterizzata su [[CD-ROM]] e avviata nativamente su un hardware fisico.
==== Avvio tramite rete PXE ====
| |||