I SO gestiti sono probabilmente in qualche modo micro-kernel: sacrifichi le prestazioni in nome della sicurezza.
Potrebbero esserci problemi simili in quanto richiede la suddivisione del codice in 2 parti:
- kernel di basso livello scritto in C / assemblatore
- kernel di livello superiore scritto in linguaggio gestito
A seconda del costo di entrare / uscire dal linguaggio HL in modo sicuro potrebbe imporre problemi simili a quelli dei microkernel - probabilmente un po 'più veloce (lasciando HL più veloce dell'interruttore di contesto completo ma IIRC per esempio JNI è piuttosto costoso).
L'applicazione utente probabilmente avrebbe bisogno anche di contesti separati dal momento che molte app sono scritte su altre piattaforme (ad esempio C, Java o .Net). Negli stessi casi le applicazioni possono essere vincolate alla CPU (compilatori, convertitori di musica, ecc.) E richiedono anche l'ottimizzazione dell'assemblatore per eseguire con velocità sufficiente. Inoltre, la protezione MMU implementata in linguaggio HL probabilmente non sarà veloce quanto quella hardware, anche se potrebbe essere molto più perfezionata.
Anche il linguaggio HL non è competente nelle operazioni di basso livello. Mentre il software di solito è progettato con una buona pratica di codifica, i driver non sono necessari. Non credo che proteggeranno almeno alcuni errori, dato che i kernel richiedono talvolta memoria gestita manualmente.
Infine, non penso che un sistema operativo del genere richiederebbe VM completa. Dal momento che il sistema operativo non può essere costruito con i principali linguaggi HL compilabili (una volta eseguiti ovunque) (anche con GC & co.) Sarebbe un candidato migliore.
For example, you suddenly make arbitrary pointers obsolete.
Il sistema operativo è intrinsecamente di basso livello. Si passa all'hardware non solo "pointer arbitrario" ma probabilmente indirizzo fisico piuttosto che virtuale. Alcuni DMA possono gestire solo i primi 16MiB di memoria. Sebbene tale sistema operativo possa semplificare molto, non eliminerà gli indirizzi.
And if well written, you get rid of a ton of legacy crud that most modern OSes currently have.
- Ci sono molti hardware legacy. Molto più poi nel software. In primo luogo, si avvia in modalità reale, quindi si abilita il gate A20 (non chiedere) per passare alla modalità protetta, quindi alla modalità lunga.
- La compatibilità API / ABI è buona. Di 'che hanno scritto un sistema operativo simile: cosa ci faresti? Firefox - nope (C e C ++ usando WinAPI). Java - probabilmente aveva bisogno di essere portato su port o aveva alcuni problemi minori via ikvm - a meno che non si accontentasse di usare JNI. Immagino che MSSQL (e sicuramente Oracle, MySQL, Postgresql ...) non sia scritto nella lingua gestita, quindi non sarebbe adatto per il server.
- Anche la compatibilità dei bug è "buona". AFAIK MS impiega molto tempo a testare e verificare se alcuni software non utilizzano l'API in modo intelligente (leggi non corretto). Come il problema di usare il puntatore dopo
free
quando Windows ha effettivamente iniziato a liberare memoria.
Immagino che guadagnerà popolarità nello stesso periodo dei microkernel.