Open onlyliuxin opened 7 years ago
简化回答是,内核在内核空间运行,普通程序在用户空间运行。 用户空间基本上是 sand-boxing的一种形式,它限制用户程序,这样他们就不能与其他程序或者操作系统内核所拥有的内存( 和其他资源) 混淆。 这限制了( 但通常并不完全消除) 做坏事的能力,比如崩溃机器。 内核是操作系统的核心。 它通常可以完全访问所有内存和机器硬件( 以及机器上的所有其他设备) 。 为了使机器尽可能稳定,你通常只需要最受信任的well-tested代码以内核模式/内核空间运行。
其实在硬件层面上对于“权限”就有了划分,Intel X86体系的CPU提供了四种特权模式ring0~ring3,然后操作系统根据这些权限自己进行了分配,linux就区分了用户态和内核态,意思就是普通用户和管理员用户。这种权限划分当然了为了划分——内存、I/O端口以及执行特殊机器指令的执行权限,这样只有在内核态才能执行某些特定指令保证了所谓的安全。所谓的内核空间和用户空间其实是对于这两种“权限”在设计时涉及到的虚拟内存空间上的划分,他们使用了不同的内存空间,所以有此命名
个人认为,它是一种认为划分的概念,运行操作系统和驱动程序的产所,就叫内核空间,本身自带,除此之外,外来的应用程序,给划分在用户空间