Kernel: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
Riga 9:
Questa era la modalità di funzionamento tipica dei primi computer, che venivano resettati prima di eseguire un nuovo programma. In un secondo tempo, alcuni programmi accessori come i program loader e i [[debugger]] venivano lanciati da una [[Read Only Memory|memoria a sola lettura]], o fatti risiedere in [[memoria (informatica)|memoria]] durante le transizioni del computer da un'[[Applicazione (informatica)|applicazione]] all'altra: essi formarono la base di fatto per la creazione dei primi sistemi operativi.
Un'altra situazione in cui l'assenza di sistema operativo è auspicabile è l'esempio dei [[Microcontrollore|microcontrollori]] minimalisti.
L'accesso diretto al kernel da parte di un utente/[[sistemista|amministratore]] può avvenire in modalità [[user mode]] o [[kernel mode]].
Riga 93:
I kernel ibridi sono essenzialmente dei microkernel che hanno del codice "non essenziale" al livello di spazio del kernel in modo che questo codice possa girare più rapidamente che se fosse implementato ad alto livello. Questo fu un compromesso adottato da molti sviluppatori di sistemi operativi prima che fosse dimostrato che i microkernel puri potevano invece avere performance elevate. Molti sistemi operativi moderni rientrano in questa categoria: [[Microsoft Windows]] è l'esempio più noto. Anche [[XNU]], il kernel di Mac OS X, è di fatto un microkernel modificato, per via dell'inclusione di codice BSD in un kernel basato su Mach. [[DragonFly BSD]] è stato il primo sistema BSD non basato su Mach ad adottare l'architettura a kernel ibrido.
Non si confonda il termine "kernel ibrido" con i kernel monolitici che possono caricare moduli dopo il [[boot]], poiché "ibrido" implica che il kernel in questione condivide concetti architetturali e meccanismi tipici sia dei kernel monolitici che dei microkernel, specialmente il passaggio di messaggi e la migrazione di porzioni di codice "non essenziale" a più alto livello, mantenendo a livello kernel solo il codice necessario per ragioni di prestazioni.
Esempi di kernel ibridi:
Riga 113:
Dato che un esokernel fornisce un'interfaccia davvero a basso livello all'hardware, mancando di qualsiasi funzionalità di alto livello tipica degli altri sistemi operativi, esso è accompagnato da un ''sistema operativo-libreria'' (in gergo libOS) che si interfaccia con l'esokernel sottostante fornendo quindi agli sviluppatori di applicazioni le funzionalità di un sistema operativo completo.
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 Svedese di Informatica]]. Anche il [[Massachusetts Institute of Technology|MIT]] ha sviluppato diversi sistemi basati su esokernel.
|