内核空间和用户空间有什么区别?

35 浏览
0 Comments

内核空间和用户空间有什么区别?

什么是内核空间和用户空间的区别?内核空间、内核线程、内核进程和内核堆栈是否意味着相同的事情?此外,我们为什么需要这种区分?

admin 更改状态以发布 2023年5月21日
0
0 Comments

随机存储器(RAM)可以逻辑上分为两个不同的区域,即内核空间和用户空间。(RAM的物理地址并未被实际划分,只有虚拟地址被划分,而这全部由内存管理单元(MMU)实现)

内核运行在专属于它的一部分内存中。与正常用户进程不同,用户空间无法直接访问此内存部分,而内核可以访问内存的所有部分。要访问内核中的某一部分,用户进程必须使用预定义的系统调用,例如openreadwrite等。此外,C库函数如printf会调用write系统调用。

系统调用充当用户进程和内核进程之间的接口。访问权限放置在内核空间中,以防止用户无意间干扰内核。

因此,当一个系统调用发生时,会向内核发送一个软中断。CPU可能会短暂地将控制权交给相应的中断处理程序例程。中断处理程序例程完成其工作后,被中断的内核进程将恢复。

0
0 Comments

简单地说,内核运行在内核空间,普通程序运行在用户空间。用户空间基本上是一种沙盒机制--它限制用户程序无法干扰其他程序或操作系统内核所拥有的内存(和其他资源)。这限制了它们(但通常不是完全消除)进行破坏性操作(如崩溃机器)的能力。

内核是操作系统的核心。它通常可以完全访问所有内存和机器硬件(以及机器上的其他所有内容)。为了使机器尽可能稳定,通常只希望最受信任的、经过充分测试的代码在内核模式/内核空间中运行。

堆栈只是内存的另一部分,因此自然而然地随着其他内存一起分隔。

0