2010-05-22 13 views

risposta

6

La programmazione in modalità utente fa riferimento alla programmazione con i meccanismi di protezione, supervisione e astrazione del kernel del sistema operativo. Ad esempio: in modalità utente non è possibile scrivere settori del disco, poiché sono "nascosti" sotto le API del file system. Non è possibile scrivere su indirizzi di memoria fisica, poiché il kernel ha il controllo della traduzione tra memoria virtuale e fisica, sebbene sia possibile prenotare la memoria per le proprie esigenze. Inoltre, anche se si può andare a basso livello (assemblaggio) non è possibile eseguire le istruzioni che sono privilegiate, ad esempio, cercando di fare confusione con cache del processore, TBL e MMU.

La programmazione del kernel consente di programmare il sistema per mansioni di basso livello senza alcuna restrizione. Ad esempio, i driver hardware non possono essere programmati in modalità utente poiché devono accedere direttamente all'hardware per eseguire I/O, mappare regioni di memoria, ecc.

Ovviamente non si può pensare alla modalità kernel come "meno limitata" e andare a sviluppare applicazioni in KM. Molte funzioni di sistema per la programmazione delle applicazioni non sono disponibili in KM, poiché le librerie necessarie per interagire con l'utente vengono eseguite in modalità utente. Inoltre, quelle librerie usermode non si collegheranno a un modulo del kernel.

Questa distinzione può essere più o meno definita a seconda del sistema operativo. KM/UM è un'assurdità in DOS, dove i programmi potevano accedere liberamente alle risorse di sistema (almeno nella modalità reale 8086/88 - questo non è il caso di DOS Extender).

-2

risposta perfetta selezionata come risposta. In poche parole, secondo la mia conoscenza limitata, in modalità kernel, state leggendo/scrivendo byte con indirizzi fisici di un dispositivo come una scheda VGA. Tuttavia, in modalità utente, stai scrivendo su un file, ad esempio, se il sistema operativo è simile a UNIX.

Problemi correlati