操作系统面试题 — 解释一下用户态和核心态?

171 阅读2分钟

Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : 解释一下用户态和核心态?

【简要回答】

  • 用户态:用户态是CPU运行用户程序的一种模式,权限较低,不能直接访问硬件资源;用户态需要通过系统调用(System Call)请求内核态的服务。
  • 内核态:内核态是CPU运行操作系统内核的一种模式,拥有最高权限,可以直接访问硬件资源;内核态负责管理系统的核心功能,如进程调度、内存管理、设备驱动等。

【详细回答】

  • 用户态:当在用户空间执行应用程序自己的代码时,称为用户模式(User Mode),也称为用户态;当CPU处于用户态时只能运行部分指令,访问特定范围的内存空间,即用户空间,而应用程序的代码和数据保存在用户空间中。
  • 内核态:用户程序调用系统API函数称为系统调用,一旦发生了系统调用,将暂停用户程序的执行,转而执行内核代码,访问内核空间,这称为内核模式(Kernel Mode),也称为内核态;当CPU处于处于内核态时可以运行全部指令,访问全部内存空间,具有对硬件的完全访问权限。
  • 通常,内核态不直接运行用户程序(即便内核态可以访问用户空间),而是通过系统调用机制安全地与用户空间交互。具体来说,当用户程序需要执行某些特权操作时,它会通过 系统调用(System Call) 请求操作系统的服务。系统调用会触发从用户态到内核态的切换,此时CPU会执行操作系统提供的服务代码来完成用户请求的操作,执行完成后再转换为用户态继续执行用户程序。这种设计确保了系统的安全性与稳定性,同时实现了用户程序与内核的隔离。

【知识图解】

  1. 计算机系统分层结构如下图所示: layered_architecture_of_computer_System.jpg
    • 由上图可知,操作系统是最基本的系统软件,是计算机系统各类软硬件资源的管理者;它位于用户层和硬件层之间,向上提供服务、向下管理资源
  2. 内核态和用户态的转换,如下图所示:
    UserMode_KernelMode.jpg

【知识拓展】

  • 进程间的切换无法直接通过硬件实现,因此还需要一层系统软件来对处理器和硬件资源进行抽象改造,这一层系统软件即为操作系统内核,内核是一组运行在内核态的程序模块。
  • CPU中有一个寄存器叫"程序状态字寄存器(PSW)",其中有个二进制位,可用1表示”内核态",0表示"用户态",亦可反之。