区分内核区和用户区主要是为了安全性、稳定性、效率和可移植性。

安全性

内核区运行着操作系统的核心部分,包括进程管理,内存管理,硬件管理等。
通过隔离用户区和内核区,可以有效防止程序直接访问和修改系统内核代码和数据,避免恶意程序和不稳定程序破坏内核。

稳定性

如果用户开发了一个不稳定的程序,这个程序和内核程序在同一个空间中运行,这个程序的崩溃可能会导致系统崩溃。通过隔离的方式可以保证用户开发的程序崩溃了也不会影响系统的稳定性。

效率

不同区域干不同的活,使得每个区域都能高效的运行。

抽象

通过区分内核区和用户区,给开发者提供了一个抽象层,这样开发者在开发程序时就不需要考虑底层硬件的操作方式,针对抽象层提供的接口进行程序开发即可。提高了程序的可移植性。

每个进程都有自己的内核空间吗?

每一个进程的进程空间都包含内核空间,但是内核是各进程共享的,因此可以这里理解,内核代码运行过程中访问的内存空间被映射到各个进程空间的高地址3-4G。