Cosmos (sistema operativo): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
FanoI (discussione | contributi)
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(26 versioni intermedie di 15 utenti non mostrate)
Riga 1:
{{Sistema operativo
| nome = Cosmos
| logo = Cosmos<!-- logo.pngWikidata -->
| screenshot = Cosmos shell.png
| didascalia = Screenshot di una sessione di prova della shell di Cosmos:
| sviluppatore = [http://www.gocosmos.org/ Cosmos Project]
| modello_sorgente = [[Open source]]
| stadio_sviluppo= Disponibile pubblicamente/In sviluppo
| tipo_kernel = [[Kernel#Microkernel|Microkernel]]
| tipologia_licenza = libero
| licenza = [[Licenza BSD]]
| famiglia = ...
| sito_web = [[github.com/CosmosOS/Cosmos]]<!-- Wikidata -->
| ultima_versione_pubblicata= 20150130<!-- Wikidata -->
| data_ultima_pubblicazione = 23<!-- GennaioWikidata [[2015]]-->
|prima_versione_pubblicata = Milestone 1|data_prima_pubblicazione = 25 gennaio [[2008]]|piattaforme_supportate = [[IA-32]]}}
'''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 può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,. comunque ilIl nome è stato scelto prima di darlidargli 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 release corrente di Cosmos è la build 106458, distribuita il 16 gennaio 2014. 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 CodeplexGithub mentre l'altra versione è disponibile per tutti (conosciuta come User Kit). IIl codicicodice disponibili su CodeplexGithub è indicataindicato 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]https://limine-bootloader.org/ Limine], ma precedentemente è stato anche usato [[GNU GRUB|GRUB]] e [[SYSLINUX|Syslinux]].
 
== 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 aggiungedeve specialiselezionare porzionil'apposito ditemplate codiceCosmos chee permettonoda alqui sistemaselezionare diquale Cosmoslinguaggio diutilizzare essereper compilatoscrivere edil eseguitoSistema Operativo (attualmente C#, VB.NET L'utentee aggiungeF# ilsono seguentesupportati). codiceLa nelClasse metodokernel Mainmette a disposizione 2 metodi BeforeRun() dell'applicazionee Run(). In BeforeRun() va scritto il codice che viene eseguito prima che il kernel parta per esempio:
<sourcesyntaxhighlight lang="CSharp">
protected override void BeforeRun()
Cosmos.Compiler.Builder.BuildUI.Run()
{
</source>
// Write you inizialization code here
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.
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:
Poi, lo sviluppatore aggiunge un nuovo metodo alla classe del programma, chiamato Init(). Il metodo è sotto descritto:
<sourcesyntaxhighlight lang="CSharpcsharp">
publicprotected staticoverride void InitRun()
{
//Add furtherWrite your OS code here...
Cosmos.Sys.Boot xBoot = new Cosmos.Sys.Boot();
xBoot Console.ExecuteWrite("Input: ");
var input = Console.ReadLine();
//Add further code here...
Console.Write("Text typed: ");
Console.WriteLine(input);
//Add further code here...
}
</syntaxhighlight>
</source>
 
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 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).
 
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 furtherWrite your OS 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 ===
Riga 44 ⟶ 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 ([[C Sharp|C#]] o altro linguaggio .NET) nel [[Common Intermediate Language]] (CIL), il linguaggio nativo del .NET Framework. ComeIn prossimoVisual passoStudio l'applicazionequesto verràavviene eseguita,semplicemente mostrandoil latasto finestraStart delil Cosmosche provvederà a compilare il Buildercodice, laconvertito qualein mostraassembler alloattraverso sviluppatoreIL2CPU opzionie perfar determinarepartire essattamenteVmWare comePlayer con il progettoSistema Operativo verràappena compilatocreato. EsseÈ includonopossibile selezionando le proprietà del progetto scegliere come avviare il progetto - tramite emulatori come [[QEMUBochs]], [[Microsoft Virtual PC|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 [[Preboot Execution Environment|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 ===
Riga 52 ⟶ 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 ([[IntegratedAmbiente developmentdi sviluppo environmentintegrato|IDE]]). Cosmos permette l'utilizzo di 3 emulatori: [[QEMUBochs]] è un [[emulatore]] gratuito che è incluso in Cosmos. [[VMWare]] è un altro emulatore, commerciale, scaricabile dal sito di VmWare, [[Microsoft Virtual PC|Virtual PC]] è un altro emulatore gratuito che può essere scaricato dal sito di [[Microsoft]]: [http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&displaylang=en]. 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, [[BochsHyper-V]]).
 
Un'altra caratteristica disponibile con QEMU[[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 [[QEmuBochs]]. 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 ====
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 ail'utilizzo di due 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 ===
Il team del progetto Cosmos ha anche creato un [[assembler]] che sarà il principale per il progetto. Comunque, è ancora lento e inefficiente, perciò si sta usando invece l'[[assembler]] [[NASM (informatica)|NASM]].
 
== Note ==
<references/>
 
== Voci correlate ==
Riga 72 ⟶ 82:
 
== Altri progetti ==
{{Interprogetto}}
{{interprogetto|commons=Category:Cosmos (operating system)}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [http://www.gocosmos.org/ Sito ufficiale]
 
{{Portale|software libero|informatica}}
 
[[Categoria:Sistemi operativi liberi]]
[[Categoria:Kernel]]
[[Categoria:Software di sistema liberi]]