CPU分级保护
CPU提供了几种不同的运行等级,分别对应不同的运行权限。在低权限的模式下CPU执行指令和访问内存都受到限制。
电脑操作系统提供不同的资源访问级别。在计算机体系结构中,Rings是由两个或更多的特权态组成。在一些硬件或者微代码级别上提供不同特权态模式的CPU架构上,保护环通常都是硬件强制的。Rings是从最高特权级(通常被叫作0级)到最低特权级(通常对应最大的数字)排列的。在大多数操作系统中,Ring 0拥有最高特权,并且可以和最多的硬件直接交互(比如CPU,内存)
虽然CPU提供了四种不同的运行权限,但大部分操作系统只会使用ring 0和ring3两种权限,分别对应操作系统的内核态和用户态
内核态与用户态
在操作系统中我们常会提到用户态与内核态的概念,这是在操作系统层面
用户态
在操作系统中,内核态是运行操作系统程序、操作硬件的状态,具有最高权限;而用户态是运行用户程序的状态,其权限受到限制。当用户程序需要操作系统帮助完成某些它没有权力和能力完成的工作时,就会通过系统调用陷入到内核态,由操作系统来完成相应的工作。
内核态
内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。
在内核态下,操作系统可以响应所有的中断请求,处理硬件事件和系统调用。当应用程序发出系统调用时,CPU会切换到内核态,执行相应的操作,然后返回用户态。此外,当发生严重错误或异常时,也会触发内核态的切换
内核态与用户态的切换
内核态和用户态的切换主要通过中断和系统调用来实现。当用户态的进程需要执行内核态的代码时,通常会通过系统调用陷入到内核态。这个过程涉及到保存用户态的上下文(如堆栈信息)到内核态,然后加载新的内核态的上下文开始执行。当内核态的代码执行完毕后,它会将控制权返回给用户态,并恢复原来的上下文,完成从用户态到内核态的切换。同样,当一个中断发生时,处理器会自动切换到内核态,执行相应的中断处理程序,处理完毕后再返回到用户态。整个切换过程涉及到处理器状态的保存和恢复,以及上下文的切换,需要操作系统的底层支持。