Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Articoli (https://www.hwupgrade.it/forum/forumdisplay.php?f=52)
-   -   Google Fuchsia usa un microkernel. Qual è la differenza e perché è rilevante (https://www.hwupgrade.it/forum/showthread.php?t=2942582)


Redazione di Hardware Upg 17-06-2021 16:16

Link all'Articolo: https://www.hwupgrade.it/articoli/si...nte_index.html

Google Fuchsia è un nuovo sistema operativo in sviluppo con una particolarità: utilizza Zircon, un microkernel. L'approccio progettuale è piuttosto differente rispetto ai sistemi operativi più diffusi, che usano perlopiù modelli ibridi. Vediamo come un approccio a microkernel potrebbe garantire a Google maggiore controllo sulle sue piattaforme come Android e Chrome OS

Click sul link per visualizzare l'articolo.

supertigrotto 17-06-2021 18:11

Se non sbaglio,quando c'era la sfida monolitico vs micro ,vinceva il monolitico per via che si usavano CPU monocore,dagli ultimi dati che ho letto,il microkernel con le CPU multicore sono diventati scattanti,a tal punto che la differenza fra monolitico e microkernel non si nota nemmeno.
Fra l'altro Mach viene usato su macchine CNC per evitare disastri nelle lavorazioni,essendo pure RealTime.
In effetti,il sistema operativo e relativo kernel,come concetto ,era stato creato decenni fa,quando le CPU erano quasi totalmente diverse da quelle moderne,quindi un cambio di paradigma ci starebbe.

demon77 17-06-2021 18:28

Quote:

Originariamente inviato da supertigrotto (Messaggio 47449622)
Se non sbaglio,quando c'era la sfida monolitico vs micro ,vinceva il monolitico per via che si usavano CPU monocore,dagli ultimi dati che ho letto,il microkernel con le CPU multicore sono diventati scattanti,a tal punto che la differenza fra monolitico e microkernel non si nota nemmeno.
Fra l'altro Mach viene usato su macchine CNC per evitare disastri nelle lavorazioni,essendo pure RealTime.
In effetti,il sistema operativo e relativo kernel,come concetto ,era stato creato decenni fa,quando le CPU erano quasi totalmente diverse da quelle moderne,quindi un cambio di paradigma ci starebbe.

In effetti, da ciò che ho capito dall'articolo ad oggi è molto più conveniente l'uso di microkernel visto che si hanno i vantaggi citati mentre gli svantaggi vengono fortmente mitigati dalla presenza ormai ovunque di CPU multicore che sono appunto perfette per una gestione in stile microkernel.

Mi pare di capire anche che zircon è di fatto un sistema completamente nuovo che nulla ha a che vedere con Linux..
Mi chiedo se sarà competitivo rispetto a linux visto che comunque su linux ci hanno lavorato per anni ed anni un esercito di programmatori in tutto il pianeta..

demonsmaycry84 17-06-2021 19:23

oddio per un momento ho pensato di tornare a leggere uno di quegli articoli che si trovavano su riviste come microcomputer anche se non tecnico come allora che dire finalmente qualcosa di un pò più approfondito e non del solito tenore "google vuole fuchsia perchè il reparto marketing ha visto che il viola va di moda" ...ok no sarei ingeneroso ma mi è piaciuto molto rispetto al solito

detto questo dopo quello che ha fatto apple con rosetta di fronte ad un incremento di performance sui soc si potrebbe attutire la ricaduta della mancanza di app native. L'evoluzione di smartphone , ipad e tutti i dispositivi con arm pone la necessità di muoversi verso SO più moderni e modulari che possano venire ritagliati sull hw di destinazione.

boboviz 17-06-2021 22:17

Se sento parlare di microkernel il primo ricordo che mi viene è Hurd.
E non è un bel ricordo, eh.

frankie 17-06-2021 22:42

C'era un sito, parallelo a HWU di anni orsono, una volta lo avevo tra i preferiti, poi è sparito. Era molto tecnico, ma efficace. Mi piacerebbe ritrovarlo con la wayback machine. Solo che non ricordo il nome.

EDIT: dopo un giro al pensatoio (...) ho trovato: lithium.it
https://web.archive.org/web/20070814...temid=99999999

TheGaiden 17-06-2021 23:00

io non ne so molto (diciamo nulla) ma sarei curioso di conoscere qualche dettaglio in più sul "passaggio" del kernel linux da monolitico a microkernel (e mi viene da pensare alla famosa lite con Tanenbaum).
qualcuno potrebbe spiegarmi?
grazie!!

lollo9 18-06-2021 06:21

Quote:

Originariamente inviato da TheGaiden (Messaggio 47449925)
io non ne so molto (diciamo nulla) ma sarei curioso di conoscere qualche dettaglio in più sul "passaggio" del kernel linux da monolitico a microkernel (e mi viene da pensare alla famosa lite con Tanenbaum).
qualcuno potrebbe spiegarmi?
grazie!!

infatti si tratta di un'antica confusione tra microkernel e monolitici modulari.
non c'è nessun "passaggio a microkernel"

Linux non è un microkernel sotto nessun aspetto, anzi è monolitico fino al midollo per precisa scelta. la famosa lite infatti verteva anche su questo aspetto tra le tante cose: veniva rimproverato a Linux di "nascere vecchio", e sinceramente Tanenbaum non aveva tutti i torti all'epoca.

quello che linux ha guadagno negli anni in aggiunta alla natura monolitica, è l'essere modulare, vale a dire che non deve necessariamente caricare tutto in un colpo solo per avviarsi ma può prendere pezzi di kernel al volo e farli girare in kernel space. le prestazioni restano alte ed scalare su multi CPU resta possible, non come un micro ma comunque infinitamente più di un mololitico "classico".

a livello di design non è mai stato in discussione che i micro siano più robusti ed eleganti, il problema sono sempre state le prestazioni

jepessen 18-06-2021 08:09

Mah, allo stato attuale non vedo nessun motivo per un PC "normale" il passaggio al microkernel... Il riavvio di un servizio non credo che sia comunque indolore, e il calo di prestazioni a mio avviso si fa sentire anche nei multicore. Il discorso dell'eleganza poi regge poco, un software e' fatto bene se funziona bene a mio avviso. Poi e' ovvio che se funziona bene in genere e' perche' e' ben organizzato, ma da qui all'eleganza del microkernel ce ne vuole.

Non a caso Google lo ha scelto non tanto per Android, ma per quei dispositivi IoT, come il Nest, dove alla pura potenza computazionale si preferisce l'affidabilita', quindi il fatto che in caso di crash di un servizio non si resetti l'intero dispositivo. Sinceramente comunque non credo siano piu' affidabili di un kernel linux monolitico. Ho come l'impressione che il microkernel, basato sui servizi, sia passato alla ribalta come conseguenza della nascita dei microservices in ambito server (docker etc), facendo tornare "di moda" il fatto di avere tanti piccoli programmi indipendenti invece di un solo grosso blocco, che puo' avere senso per grandi applicazioni (servizi web come amazon e netflix), e meno per applicazioni che girano sul singolo PC, come un kernel.

andbad 18-06-2021 08:16

Le discussioni tra micro e mono mi hanno sempre ricordato quelle tra RISC e CISC. :)

By(t)e

DanieleG 18-06-2021 08:22

Quote:

Originariamente inviato da supertigrotto (Messaggio 47449622)
Se non sbaglio,quando c'era la sfida monolitico vs micro ,vinceva il monolitico per via che si usavano CPU monocore,dagli ultimi dati che ho letto,il microkernel con le CPU multicore sono diventati scattanti,a tal punto che la differenza fra monolitico e microkernel non si nota nemmeno.
Fra l'altro Mach viene usato su macchine CNC per evitare disastri nelle lavorazioni,essendo pure RealTime.
In effetti,il sistema operativo e relativo kernel,come concetto ,era stato creato decenni fa,quando le CPU erano quasi totalmente diverse da quelle moderne,quindi un cambio di paradigma ci starebbe.

Il monolitico vinse perché era più facile da gestire e programmare, molto più semplicemente. E infatti linux "esplose" per questo. Fosse nato come microkernel probabilmente sarebbe stato più "pulito", ma sarebbe rimasto un bel progettino di uno studente.
D'altronde di esempi così è piena la storia della tecnologia...

frankie 18-06-2021 08:32

Se dal lato applicazioni sembra che sia rimasto tutto come prima, quali sono i vantaggi da passare dal kernel linux a fuchsia (a parte il controllo di Google)?
Intendo pratici, non teorici, cosa si è ottenuto?

jepessen 18-06-2021 08:48

Quote:

Originariamente inviato da frankie (Messaggio 47450153)
Se dal lato applicazioni sembra che sia rimasto tutto come prima, quali sono i vantaggi da passare dal kernel linux a fuchsia (a parte il controllo di Google)?
Intendo pratici, non teorici, cosa si è ottenuto?

Che puoi scrivere driver demme@@a, tanto se crashano si riavvia il servizio e non crasha il computer...

lollo9 18-06-2021 09:10

Quote:

Originariamente inviato da jepessen (Messaggio 47450106)
...

sul fatto che l'eleganza formale conti poco sono d'accordo visto che si parla di strati a così basso livello, scritti e testati da tantissima gente con competenze al top. deve prima di tutto funzionare.
poi più in generale no, un SW che vive su side effect per dirne una non è solo inelegante, è difficilmente debuggabile ed i test sintetici sono lenti, costosi e meno affidabili. sono tutti costi che poi vanno pagati in qualche modo.

ad ogni modo, al giorno d'oggi queste distinzioni sul kernel lasciano un po' il tempo che trovano. i monolitici sono più performanti e qualunque aggiuntiva necessità di robustezza può essere soddisfatta in 2000 altre maniere. in fin dei conti roba come microservizi e contract testing è emersa anche per motivi di questo genere, tra i tanti.

certo che se poi uno deve programmare un rover marziano o l'avionica di un aereo forse il discorso cambia, ma sono casi limite

Pino90 18-06-2021 09:30

Il codice di Fuchsia ha molto in comune con Mbed e questo è solo un bene. Ho rubacchiato codice qua e là l'anno scorso e devo dire che il livello è altissimo.

Il mio hype è oltre 9000

PS I file scritti in assembly sono una manciata, giusto startup.s per qualche ISA o board, poi tutto il resto è in Go e per fortuna direi <3

PPS Zircon è un fot***o spettacolo

blackshard 18-06-2021 15:44

Quote:

Originariamente inviato da jepessen (Messaggio 47450179)
Che puoi scrivere driver demme@@a, tanto se crashano si riavvia il servizio e non crasha il computer...

Nemmeno su kernel monolitico un servizio scritto male manda in crash il computer. Ci mancherebbe.

I "servizi" (intesi come demoni) non girano con i privilegi del kernel, ma sono normali processi userspace.

La differenza fra kernel monolitico e microkernel è tutta nello spazio del kernel stesso: il kernel monolotico tutto (core, IPC, MMU, IRQ handler, memory mapping, filesystem, ...) gira con gli stessi elevati privilegi del kernel, nel microkernel solo una piccola parte critica è il kernel a privilegi massimi e il resto, come driver di periferiche o filesystem, hanno privilegi meno elevati o addirittura girano in userspace.

Come in tutte le cose, ci sono vantaggi e svantaggi. Fra gli svantaggi c'è da mettere in conto l'overhead, e questo c'è sempre anche con cpu multicore (dove è pure peggio); fra i vantaggi una maggiore sicurezza, testabilità e stabilità.

edit: come già accennato in precedenza, nella definizione di monolitico/microkernel non entra nemmeno il discorso dei driver a "plugin"

jepessen 18-06-2021 15:49

Quote:

Originariamente inviato da blackshard (Messaggio 47450975)
Nemmeno su kernel monolitico un servizio scritto male manda in crash il computer. Ci mancherebbe.

I "servizi" (intesi come demoni) non girano con i privilegi del kernel, ma sono normali processi userspace.

La differenza fra kernel monolitico e microkernel è tutta nello spazio del kernel stesso: il kernel monolotico tutto (core, IPC, MMU, IRQ handler, memory mapping, filesystem, ...) gira con gli stessi elevati privilegi del kernel, nel microkernel solo una piccola parte critica è il kernel a privilegi massimi e il resto, come driver di periferiche o filesystem, hanno privilegi meno elevati o addirittura girano in userspace.

Come in tutte le cose, ci sono vantaggi e svantaggi. Fra gli svantaggi c'è da mettere in conto l'overhead, e questo c'è sempre anche con cpu multicore (dove è pure peggio); fra i vantaggi una maggiore sicurezza, testabilità e stabilità.

edit: come già accennato in precedenza, nella definizione di monolitico/microkernel non entra nemmeno il discorso dei driver a "plugin"

Touche'... Si vede che sono al primo picco del grafico Dunning-Kruger... Vado a cercare un buon libro sui sistemi operativi per studiare meglio l'argomento monolitico vs microkernel... Qualche consiglio (italiano o inglese non fa differenza)?

maxsona 18-06-2021 16:26

Qualcuno ha provato questo dahliaOS?

kreijack 18-06-2021 17:55

Quote:

Originariamente inviato da lollo9 (Messaggio 47450221)
sul fatto che l'eleganza formale conti poco sono d'accordo visto che si parla di strati a così basso livello, scritti e testati da tantissima gente con competenze al top. deve prima di tutto funzionare.

Beh, deve essere anche facilmente manutenibile. Spezzare un kernel monolitico in più processi protetti tra loro (cosa che non mi sembra l'articolo abbia evidenziato), senz'altro aiuta.

Chi ha avuto esperienza sull'Amiga, ricorda perfettamente quanto fosse semplice accedere a tutte le strutture del suo OS (in quel caso non c'era alcuna protezione della memoria). Il prezzo da pagare fu una certa difficoltà dell'evolversi di AmigaOS perché per essere retro-compatibile non poteva cambiare più di tanto le strutture interne. Per la Commodore, anche il solo intervenire sull'HW era un problema per mantenere la compatibilità con quei programmi che accedevano direttamente ai registri delle periferiche.

Poi arrivarono (alle masse) i SO con protezione di memoria, e si ebbero due grandi vantaggi:
- i processi erano protetti tra di loro (e con l'hw)
- c'era un API ben definita (non si poteva accedere arbitrariamente al kernel, o per lo meno era molto più difficile)

Oggi il paragone è calzante: all'interno del kernel di Linux, è possibile accedere più o meno a tutte le strutture; questo consente una notevole flessibilità sviluppo al costo di fare danni.
Però appena le strutture interne cambiano, si rompe la compatibilità con i moduli out-of-tree.

C'è una importante differenza tra Linux e l'Amiga. Gli sviluppatori del kernel cambiano allegramente le strutture interne, e lo possono fare visto che il 90% dei driver sono già integrati in Linux. I driver out-of-tree (e.g. ZFS), sono considerati "cittadini di 2a classe", e "si devono adattare".

Chi usa in Linux i driver NVIDIA sa di cosa parlo.

Personalmente penso che un kernel monolitico sia più veloce da sviluppare. Ma mi aspetto che prima o poi crolli sotto la complessità di gestire (da un punto di vista dello sviluppo) la numerosità dei driver.

Un tempo pensavo che la differenza di prestazioni con i moderni processori tra un microkernel ed un kernel monolitico fosse trascurabile. Tanto alla fine nel 90% dei casi il processore "attende" un dato.

Ora con le moderne reti ed gli HD allo stato solido, non sono poi così sicuro.

Ovviamente se poi l'utente deve solo navigare con un browser, la latenza della rete è predominante.

Ciao
GB

blackshard 18-06-2021 18:22

Quote:

Originariamente inviato da jepessen (Messaggio 47450985)
Touche'... Si vede che sono al primo picco del grafico Dunning-Kruger... Vado a cercare un buon libro sui sistemi operativi per studiare meglio l'argomento monolitico vs microkernel... Qualche consiglio (italiano o inglese non fa differenza)?

Ah mi spiace, sulla letteratura sono fermo a ciò che ho usato quando mi sono laureato, in particolare "I moderni sistemi operativi" di Tanenbaum (che sempre un lettura interessante) e altri che adesso perfino mi sfuggono tanto il tempo che è passato...


Tutti gli orari sono GMT +1. Ora sono le: 19:11.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.

1