内核空间和用户空间有什么区别?
内核空间和用户空间有什么区别?
什么是内核空间和用户空间的区别?内核空间、内核线程、内核进程和内核堆栈是否意味着相同的事情?此外,我们为什么需要这种区分?
admin 更改状态以发布 2023年5月21日
随机存储器(RAM)可以逻辑上分为两个不同的区域,即内核空间和用户空间。(RAM的物理地址并未被实际划分,只有虚拟地址被划分,而这全部由内存管理单元(MMU)实现)
内核运行在专属于它的一部分内存中。与正常用户进程不同,用户空间无法直接访问此内存部分,而内核可以访问内存的所有部分。要访问内核中的某一部分,用户进程必须使用预定义的系统调用,例如open
、read
、write
等。此外,C
库函数如printf
会调用write
系统调用。
系统调用充当用户进程和内核进程之间的接口。访问权限放置在内核空间中,以防止用户无意间干扰内核。
因此,当一个系统调用发生时,会向内核发送一个软中断。CPU可能会短暂地将控制权交给相应的中断处理程序例程。中断处理程序例程完成其工作后,被中断的内核进程将恢复。