c - 内核态和用户态编程有什么区别?

标签 c operating-system

我想知道内核程序员如何看待内存与用户模式程序员。我还想知道内核编程和用户模式编程之间的一些区别。

最佳答案

用户态编程是指在操作系统内核的保护、监督和抽象机制下进行编程。例如:在用户模式下,您不能写入磁盘扇区,因为它们“隐藏”在文件系统 API 下。您不能写入物理内存地址,因为内核控制着虚拟内存和物理内存之间的转换,尽管您可以为自己的需要保留内存。此外,尽管您可以进入低级别(汇编),但您无法执行特权指令,例如,试图扰乱处理器缓存、TBL 和 MMU。

内核编程允许您不受任何限制地为低级任务编写系统程序。例如,硬件驱动程序不能在用户模式下编程,因为它们需要直接访问硬件来执行 I/O、映射内存区域等。

当然你不能认为内核模式“限制较少”而去开发KM中的应用程序。许多用于应用程序编程的系统设施在 KM 下不可用,因为与用户交互所需的库在用户模式下运行。此外,这些用户模式库不会链接到内核模块。

此区别可能或多或少地根据操作系统定义。 KM/UM 在 DOS 中是无稽之谈,在 DOS 中允许程序自由访问系统资源(至少在 8086/88 实模式下——DOS Extender 不是这种情况)。

关于c - 内核态和用户态编程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2887139/

相关文章:

c - 使用 C 程序将华氏度转换为摄氏度时打印垃圾值

c - wait() 和 exit() 与父子进程

macos - 适用于 Mac 的 Armv6 汇编程序

java - 环境变量无法识别

java - 这是代码中的一种死锁吗?

c - 段错误、二维矩阵、malloc

c - 如何在C中正确使用信号?

c++ - 如何计算16bit到8bit的量化误差?

c++ - 我想知道我们使用的ide是否包含链接器