内核和用户模式编程有什么区别?

时间:2010-05-22 06:10:56

标签: c operating-system

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

3 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:2)

请参阅Understanding User and Kernel Mode

上的Jeffs文章

答案 2 :(得分:-2)

选择完美答案作为答案。简而言之,根据我的有限知识,在内核模式下,您正在读取/写入像VGA卡这样的设备的物理地址。但是,在用户模式下,您正在写入一个文件,即,如果UNIX中的操作系统是。