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