我想知道内核程序员如何看待内存与用户模式程序员。我还想知道内核编程和用户模式编程之间的一些区别。
最佳答案
用户态编程是指在操作系统内核的保护、监督和抽象机制下进行编程。例如:在用户模式下,您不能写入磁盘扇区,因为它们“隐藏”在文件系统 API 下。您不能写入物理内存地址,因为内核控制着虚拟内存和物理内存之间的转换,尽管您可以为自己的需要保留内存。此外,尽管您可以进入低级别(汇编),但您无法执行特权指令,例如,试图扰乱处理器缓存、TBL 和 MMU。
内核编程允许您不受任何限制地为低级任务编写系统程序。例如,硬件驱动程序不能在用户模式下编程,因为它们需要直接访问硬件来执行 I/O、映射内存区域等。
当然你不能认为内核模式“限制较少”而去开发KM中的应用程序。许多用于应用程序编程的系统设施在 KM 下不可用,因为与用户交互所需的库在用户模式下运行。此外,这些用户模式库不会链接到内核模块。
此区别可能或多或少地根据操作系统定义。 KM/UM 在 DOS 中是无稽之谈,在 DOS 中允许程序自由访问系统资源(至少在 8086/88 实模式下——DOS Extender 不是这种情况)。
关于c - 内核态和用户态编程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887139/