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

5

我想了解一下内核程序员和用户模式程序员对内存的看法有什么不同。同时,我还想知道内核编程和用户模式编程之间的几个区别。


1
你提出问题,但最终不接受正确的答案... - Bozhidar Batsov
3个回答

6
用户模式编程是指在操作系统内核的保护、监管和抽象机制下进行编程。例如:在用户模式下,你不能写磁盘扇区,因为它们被“隐藏”在文件系统API下面。你也不能写物理内存地址,因为内核控制着虚拟内存和物理内存之间的转换,尽管你可以为自己的需要保留内存。此外,虽然你可以降低级别(汇编),但你不能执行特权指令,例如试图干扰处理器缓存、TBL和MMU。
内核编程允许你在没有任何限制的情况下为低级任务编写系统。例如,硬件驱动程序无法在用户模式下编程,因为它们需要直接访问硬件来进行I/O、映射内存区域等。
当然,你不能认为内核模式比较“不受限制”,并去开发KM中的应用程序。许多面向应用程序编程的系统设施在KM下是不可用的,因为与用户交互所需的库运行在用户模式下。此外,这些用户模式库将无法链接到内核模块。
这种区分在操作系统上可能更或少明确。在DOS中,KM/UM是无意义的,因为程序可以自由地访问系统资源(至少在8086/88实模式下——这在DOS Extenders中不是这种情况)。

2

请查看Jeff的文章,了解有关用户模式和内核模式的理解


-2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接