什么是内核?

可以这么说,内核是一个计算机程序,它是操作系统的核心,提供了操作系统最核心的能力,可以控制操作系统中所有的内容。

什么是用户态和内核态?

内核具有很⾼的权限,可以控制 cpu、内存、硬盘等硬件,出于权限控制的考虑,因此⼤多数操作系统,把内存分成了两个区域:

内核空间,这个内存空间只有内核程序可以访问;

⽤户空间,这个内存空间专⻔给应⽤程序使⽤,权限比较小;

⽤户空间的代码只能访问⼀个局部的内存空间,⽽内核空间的代码可以访问所有内存空间。因此,当程序使⽤⽤户空间时,我们常说该程序在⽤户态执⾏,⽽当程序使内核空间时,程序则在内核态执⾏。

用户态和内核态是如何切换的?

应⽤程序如果需要进⼊内核空间,就需要通过系统调⽤,来进入内核态:

什么是内核?什么是用户态和内核态?用户态和内核态是如何切换的?_内核空间

内核程序执⾏在内核态,⽤户程序执⾏在⽤户态。当应⽤程序使⽤系统调⽤时,会产⽣⼀个中断。发⽣中断后, CPU 会中断当前在执⾏的⽤户程序,转⽽跳转到中断处理程序,也就是开始执⾏内核程序。内核处理完后,主动触发中断,把 CPU 执⾏权限交回给⽤户程序,回到⽤户态继续⼯作。