Skip to content


linux内核(用户层,内核层,硬件层)

image-20241113170525424

用户态与内核态

  • 用户态

用户态也被称为用户模式,是指应用程序的运行状态。在这种模式下,应用程序拥有有限的系统资源访问权限,只能在操作系统划定的特定空间内运行。用户态下运行的程序不能直接访问硬件设备或执行特权指令,所有对硬件的访问都必须通过操作系统进行。

在用户态下,应用程序通过系统调用来请求操作系统提供的服务。例如,文件操作、网络通信等都需要通过系统调用来实现。当应用程序发出系统调用时,会触发上下文切换,将CPU的控制权交给操作系统内核,进入内核态。

  • 内核态

内核态也被称为内核模式或特权模式,是操作系统内核的运行状态。处于内核态的CPU可以执行所有的指令,访问所有的内存地址,拥有最高的权限。内核态下运行的程序可以访问系统的所有资源,包括CPU、内存、I/O等。

在内核态下,操作系统可以响应所有的中断请求,处理硬件事件和系统调用。当应用程序发出系统调用时,CPU会切换到内核态,执行相应的操作,然后返回用户态。此外,当发生严重错误或异常时,也会触发内核态的切换。

用户态切换到内核态

image-20241113181750604

三种切换方式

系统调用

  • 本身就是一种中断(软中断)
  • 用户态进程通过系统调用向操作系统申请资源完成工作,比如读取磁盘资源,此时cpu就会停下来,切换到内核态进行操作,因为内核态有权限。

异常

  • 如果当前进程运行在用户态,如果这个时候发生了异常事件,就会触发切换。例如:缺页异常。这时会触发由当前运行进程切换到处理此异常的内核相关进程中,也就转到了内核态

中断

  • 外围设备完成用户请求的操作后(准备去实现用户的要求),会向 CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令,转到与中断信号对应的处理程序去执行,也就是切换到了内核态。如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后边的操作等。
  • [x] 如下内核态和用户态控制数据传输流程

image-20241113183901665

Comments