Mi piacerebbe sapere come un programmatore del kernel pensa alla memoria rispetto al programmatore della modalità utente. Vorrei anche conoscere alcune differenze tra la programmazione del kernel e la programmazione in modalità utente.Qual è la differenza tra la programmazione in kernel e in modalità utente?
risposta
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).
articolo Vedere Jeffs su Understanding User and Kernel Mode
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.
- 1. Comunicazione tra la modalità kernel e l'applicazione in modalità utente
- 2. Qual è la differenza tra le modalità utente e kernel nei sistemi operativi?
- 3. Qual è la differenza tra programmazione Dataflow e programmazione reattiva?
- 4. in rotaie qual è la differenza tra la modalità di sviluppo e la modalità di produzione?
- 5. Qual è la differenza tra http e https nella programmazione
- 6. Qual è la differenza tra la modalità tex e la modalità lattice e la modalità LaTeX in emacs
- 7. Qual è la differenza tra la modalità Sleep e la modalità Deep sleep?
- 8. Memoria condivisa tra modalità utente e modalità kernel
- 9. Qual è la differenza tra SequenceType e CollectionType in swift?
- 10. Qual è la differenza tra module_init e init_module in un modulo del kernel Linux?
- 11. Qual è la differenza tra la modalità pipeline "classica" e "integrata" in IIS7?
- 12. Qual è la differenza tra letterale e variabili in Python?
- 13. Qual è la differenza tra la programmazione sincrona e asincrona (in node.js)
- 14. qual è la differenza tra ~/e ~ in linux?
- 15. Qual è la differenza tra dma_mmap_coherent e remap_pfn_range?
- 16. Qual è il costo (in cicli) per passare tra il kernel di Windows e la modalità Utente?
- 17. Qual è la differenza tra = e: =
- 18. Qual è la differenza tra `##` e `hashCode`?
- 19. Qual è la differenza tra dict() e {}?
- 20. qual è la differenza tra:.! e: r !?
- 21. Qual è la differenza tra "in fp" e "in fp.readlines()"?
- 22. Qual è la differenza tra Verilog! e ~?
- 23. Qual è la differenza tra ("") e (null)
- 24. Qual è la differenza tra? : e ||
- 25. qual è la differenza tra [[], []] e [[]] * 2
- 26. Qual è la differenza tra $ e $$?
- 27. Qual è la differenza tra " " e ""?
- 28. Qual è la differenza tra {0} e ""?
- 29. Qual è la differenza tra {0} e +?
- 30. Qual è la differenza tra .ToString() e + ""
Tu fai domande, ma non accetti una risposta corretta alla fine ... –