内核程序(Kernel Program)
内核程序是操作系统的核心部分,负责管理系统资源、硬件抽象、进程调度等基础任务。内核程序常驻内存,并在计算机系统启动时被加载。内核模式(也称为特权模式或内核态)下运行的程序有权访问受保护的系统资源,比如可以直接操作硬件。
主要职责:
- 进程管理:负责进程创建、销毁、调度。
- 内存管理:管理物理和虚拟内存,负责内存分配和回收。
- 设备管理:通过设备驱动程序与硬件设备进行通信。
- 文件系统管理:处理文件的创建、删除、读取和写入。
- 系统调用接口:为应用程序提供一组APIs,使其能够使用系统资源。
- 网络管理:处理与网络通信相关的任务。
- 安全和访问控制:管理用户权限和资源访问。
类型:
- 单体内核(Monolithic Kernel):所有功能都集成在一个大的代码库中。
- 微内核(Microkernel):只包括最基础的服务,其他如文件系统、设备驱动等作为单独的进程运行。
- 混合内核(Hybrid Kernel):介于单体内核和微内核之间,试图平衡性能和模块性。
应用程序(Application Program)
应用程序是用户与计算机硬件进行交互的软件。这些程序运行在用户模式(非特权模式)下,通常没有直接访问硬件或底层系统资源的权限。应用程序依赖于操作系统通过系统调用提供的服务。
主要职责:
- 用户交互:提供图形用户界面(GUI)或命令行界面(CLI)。
- 任务执行:执行特定任务,如文本编辑、图像处理、数据计算等。
- 数据处理和存储:能够读写文件,进行数据处理。
- 网络通信:例如,浏览器、邮件客户端等。
类型:
- 桌面应用程序:如文本编辑器、图像编辑器。
- 网络应用程序:如浏览器、FTP客户端。
- 嵌入式应用程序:运行在嵌入式系统中的程序。
- 移动应用程序:专为移动设备设计的程序。
区别和关系
- 运行级别:内核程序运行在特权级别,而应用程序运行在用户级别。
- 功能:内核程序负责基础的、全局的系统管理,而应用程序负责特定的、局部的任务。
- 资源访问:内核有权访问所有硬件和系统资源,应用程序只能通过系统调用访问。
- 依赖关系:应用程序依赖于内核程序提供的服务来执行其任务。
应用程序和内核程序共同协作,使计算机系统能够高效、安全地运行。
特权指令和非特权指令
特权指令和非特权指令是计算机体系结构中的两个重要概念,用于区分对系统资源访问的权限级别。
特权指令(privileged instructions)是只有操作系统内核或特权级别较高的程序可以执行的指令。这些指令通常用于执行敏感操作,如访问底层硬件设备、修改特权级别、访问受保护的内存区域等。
非特权指令(non-privileged instructions)是一般用户程序可以执行的指令集合。这些指令通常用于常规的计算、数据处理和存储操作,如算术运算、内存读写等。
使用特权级别和特权指令的概念,操作系统可以实现对系统资源的保护和控制。通过将敏感操作限制为特权指令,并限制只有特权级别较高的程序可以执行这些指令,操作系统可以防止一般用户程序对系统资源的滥用和破坏。
内核态和用户态
内核态(Kernel mode,也称为特权态、系统态)是操作系统运行的特权级别。在内核态下,进程拥有最高权限级别,可以执行特权指令和直接访问受保护的系统资源,如底层硬件设备、操作系统核心代码和数据结构等。
用户态(User mode,也称为普通态、非特权态)是一般用户程序运行的权限级别。在用户态下,进程的权限受到限制,不能直接访问受保护的系统资源和执行特权指令。用户态的程序只能执行非特权指令,如算术运算、内存读写等常规操作。
内核态和用户态的划分主要是为了保护系统的稳定性和安全性。通过将系统资源的访问限制在内核态和特权指令中,操作系统可以防止用户程序滥用或错误使用系统资源,同时确保操作系统核心代码和关键数据的安全。通过划分不同的权限级别,操作系统可以实现对进程的隔离、资源的保护和系统的可靠运行。
需要注意的是,用户态和内核态的切换是由操作系统内核控制的,通常由硬件中断、系统调用或异常触发。当用户态程序需要执行特权操作或访问受限资源时,需要通过合法的方式请求操作系统执行相应操作,并经过内核态和用户态的切换。
拓展:CPU 中有一个寄存器叫程序状态字寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”。
别名:内核态=核心态=管态;用户态=目态
内核态、用户态的切换
内核态到用户态的切换:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。
用户态到内核态的切换:由“中断”引发,硬件自动完成切换过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。