gennaio 2, 2008

Sharp OS: Un sistema operativo scritto in c#???

Posted in News a 3:40 am di debianotix

Sì miei cari, avete capito bene…è stata rilasciata la prima milestone di questo sistema operativo scritto in c#, e volete sapere la cosa più incredibile? E’ rilasciato sotto licenza GPLv3!!! In effetti fa un po’ strano vedere qualcuno che applica un linguaggio di “altissimo livello”, più indicato per applicazioni windows-oriented, per la scrittura di un kernel. Per chi fosse interessato la homepage del progetto è qui. Che stia iniziando una nuova era nella scrittura dei kernel? mi piacerebbe sentire i pareri di qualche sviluppatore.

11 commenti »

  1. stambec92 said,

    Scusami, ma il kernel linux non è scritto in C++? Non è un linguaggio ad alto livello pure lui?
    Ciao

  2. TonyH said,

    @stambec92:
    il kernel linux è scritto in C/Assembly

    Comunque la stessa microsoft ha sviluppato un OS in C#, mi sfugge il nome ma googlate che vi passa

  3. Simon said,

    Diciamo che è un C a oggetti… Con i permessi che da il compilatore C si possono fare tante porcate!!! 🙂
    Carino il progetto però!

  4. hotrats said,

    @stambec92: non sono un programmatore, ma da quello che so io c# è concettualmente più simile a java che non a c++.

    @TonyH: singularity

  5. DaveLooper said,

    Interessante, anche se ancora non ho ben capito di che si tratti (poi mi farò una googlata come suggerito dall’autore). La particolarità di C#, rispetto a java, è che si possono aprire dei blocchi di codice unsafe e usare l’aritmetica dei puntatori (ma diventa più difficile poi gestire la cosa con il garbage collector…).

  6. Juno said,

    Ma perchè non scriverlo in COBOL? O magari in Visual Basic? C’è un motivo se si usano certi linguaggi per scrivere moduli del kernel ed altri per realizzare GUI. C# è nato come contrapposizione alla tecnologia Java per le applicazioni Enterprice con la piattaforma .Net; poi uno ne puo’ fare quello che vuole ma in sede di progettazione di un SO, fondamentalmente, uno degli obiettivi principali sono le prestazioni, no? Con il C# la vedo dura…
    Comunque dal punto di vista ludico è sicuramente un progetto interessante!

  7. Simon said,

    @Juno
    Perché la tecnologia evolve e man mano le prestazioni sono sempre meno rilevanti, nel senso che, tolto vista, i componenti sono sempre più avanzati e con alto rendimento.

    Quindi, non dico per c#, java ad esempio (che è open) oltre a migliorare il suo skd nella versione 7 avrà sempre meno problemi a essere usato per quanto riguarda quello che fino ad oggi è sempre stato il suo tallone d’achille (la velocità).

    Addirittura mi sembrava ci fosse un S.O. fatto in java ma su architettura SPARC quindi è un discorso diverso.

    @DaveLooper
    hai ragione il C# permette di usare l’agebra dei puntatori. Ma è necessario? Java lo fa in maniera trasparente e comunque per tantissime cose i puntatori si possono anche non sapere 🙂

  8. TADsince1995 said,

    @Juno – Meraviglioso il lapsus: “C# è nato come contrapposizione alla tecnologia Java per le applicazioni EnterPRICE”!!!

    LOL!!! 😉

  9. DaveLooper said,

    L’aritmetica dei puntatori può tornare utile quando ti serve gestire la memoria in modo più a basso livello. Risposta scontata, dirai, ma forse diventa meno scontata se consideri che quando utilizzi certe API native di win32 hai dei dati che, altrimenti, non potrebbero essere trattati.
    Quindi, in definitiva, è utile, la maggior parte delle volte, in situazioni sicuramente non cross-platform.
    L’altro aspetto, probabilmente meno evidente, è un fatto di performance (metti di voler accedere a un array scorrendolo semplicemente con il puntatore alla memoria occupata)

  10. Marco said,

    @Juno
    I sistemi operativi scritti in C# (o in qualunque altro linguaggio “safe”) non sono certamente più lenti delle controparti in C, C++, o qualunque altro linguaggio che viene compilato in linguaggio nativo.
    I programmi C# possono essere caricati tutti in uno stesso address space, questo consentisce due cose:
    1) Tutto il codice in ring 0, le chiamate di sistema sono solo chiamate a funzioni, non sono più interrupts, call gates, o cose così. Quindi le syscalls sarebbero molto più veloci.
    2) Non c’è bisogno di cambiare address spaces, la cache delle pagine interna al processore non dev’essere mai svuotata.
    Il codice però dev’essere controllato prima di essere eseguito, ma si può anche decidere di farlo solo una volta e poi assumere che quel programma è sicuro.
    Per quanto riguarda il Visual Basic, in effetti è possibile scrivere un sistema operativo in VisualBasic.NET abbastanza facilmente.

    Per le prestazioni comunque… Pensa ad esempio a un sistema operativo che gestisce solo applicazioni in un linguaggio virtuale. Le applicazioni sarebbero portabili su qualunque architettura, l’OS si occuperebbe di fare le dovute ottimizzazioni per le varie architetture, il codice virtuale potrebbe essere eseguito in maniera distribuita, cioè su vari computer differenti, anche in rete.
    Una tecnologia del genere non vale qualche ciclo macchina?

    Io penso che implementerò qualcosa così nel sistema operativo che sto facendo. Ora siamo quasi alla fase alfa XD.

  11. Deni442 said,

    Il codice sorgente è compilato da Visual Studio, il SO e il compilatore AOT il compilatore AOT traduce l’ IL (Intermediate Language delle applicazioni .NET framework) in codice macchina x86, io ho studiato studiato i suoi sorgenti e posso dire che è un progetto molto innovativo dal punto di vista informatico ma anche un fallimento dal punto di vista di OS.


Lascia un commento