Kernel: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: numeri di pagina nei template citazione |
→Kernel monolitici: abbrevio Etichette: Modifica da mobile Modifica da web per mobile |
||
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 31:
Anche se ogni modulo che serve queste operazioni è separato dal resto, l'integrazione del codice è molto stretta e difficile da fare in maniera corretta e, siccome tutti i moduli operano nello stesso spazio, un bug in uno di essi può bloccare l'intero sistema. Tuttavia, quando l'implementazione è completa e sicura, la stretta integrazione interna dei componenti rende un buon kernel monolitico estremamente efficiente. <!-- Proponents of the monolithic kernel approach make the case that if code is not correct, it does not belong in a kernel, and if it is, there is little advantage in the microkernel approach. -->
Il più considerevole svantaggio dei kernel monolitici è tuttavia che non è possibile aggiungere un nuovo dispositivo hardware senza aggiungere il relativo modulo al kernel, operazione che richiede la [[Compilatore|ricompilazione del kernel]]. In alternativa è possibile compilare un kernel con tutti i moduli di supporto all'hardware, al costo di aumentarne molto la dimensione. Tuttavia i kernel monolitici più moderni come il [[Linux (kernel)|kernel Linux]] e [[FreeBSD]] possono caricare moduli in fase di esecuzione, se sono previsti in fase di configurazione (
Esempi di kernel monolitici:
Riga 39:
=== Microkernel ===
[[File:Kernel-microkernel.svg|thumb|Rappresentazione grafica di un microkernel]]
[[File:IBM AIX logo (2021).svg|thumb|Logo [[AIX (sistema operativo)|AIX]], sistema operativo, basato su microkernel]]
[[File:BeOS_screenshot.png|thumb|[[BeOS]], altro sistema operativo basato su microkernel]]
Riga 82 ⟶ 81:
In realtà vi sono ragioni da entrambe le parti.
I kernel monolitici tendono ad essere più semplici da progettare correttamente, e possono quindi evolversi più rapidamente di un sistema basato su microkernel. Ci sono storie di successi in entrambi gli schieramenti. I microkernel sono spesso usati in [[Sistema embedded|sistemi embedded]] in applicazioni [[Sistema critico|mission critical]] di automazione robotica o di medicina, a causa del fatto che i componenti del sistema risiedono in aree di memoria separate, private e protette. Ciò non è possibile con i kernel monolitici, nemmeno con i moderni moduli caricabili.
A parte il [[Mach (kernel)|kernel Mach]], che è il più noto microkernel di uso generico, molti altri microkernel sono stati sviluppati con scopi specifici. [[Kernel L3]] in particolare è stato creato per dimostrare che i microkernel non sono necessariamente lenti. La [[famiglia di microkernel L4]], successori di L3, dispongono di una implementazione chiamata [[Fiasco (informatica)|Fiasco]] in grado di eseguire il [[Linux (kernel)|kernel Linux]] accanto agli altri processi di L4 in spazi di indirizzamento separati.
Riga 115 ⟶ 114:
Tutto ciò ha un'importante implicazione: è possibile avere diversi libOS sul sistema. Se, per esempio, si installa un libOS che esporta un'API Unix e uno che esporta un'API Windows, è possibile eseguire simultaneamente applicazioni compilate per UNIX e per Windows. Lo sviluppo dei libOS avviene a livello utente, senza reboot, debug su console e in piena [[protezione della memoria]].
Al momento gli esokernel sono più che altro dei progetti di ricerca e non sono usati in sistemi operativi commerciali. Un esempio di sistema basato su esokernel è [[Nemesis (informatica)|Nemesis]], sviluppato dall'[[Università di Cambridge]], dall'[[Università di Glasgow]], da [[Citrix Systems]] e dall'[[Istituto reale di tecnologia|Istituto Svedese di Informatica]]. Anche il [[Massachusetts Institute of Technology|MIT]] ha sviluppato diversi sistemi basati su esokernel.
=== No Kernel ===
|