Linux的内核态与用户态是怎么回事?

操作系统通常由用户应用程序、操作系统服务、内核和基础硬件系统四部分组成。宏内核如Linux,将所有核心功能集中在一个地址空间,追求高性能但风险较高。微内核则将关键服务隔离,提供更安全的环境,如Windows和鸿蒙。内核态和用户态确保了CPU对特权指令的安全控制,防止系统崩溃。用户态到内核态的切换是系统操作的关键,保障了系统稳定与安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个完整可用的操作系统一般由以下4个部分组成:
在这里插入图片描述
用户应用程序就是常见的面向用户的应用,像浏览器、微信或淘宝等用户直接进行操作使用程序。
操作系统服务是指给可对系统进行操作的程序应用同时亦是系统的一部分,Linux中的shell命令解释系统就是此种服务。
操作系统内核实现对硬件进行访问以及调度等操作,典型例子:Linux。
基础硬件系统就是计算机的硬件了,CPU、硬盘、网卡等设备。

现在常见的操作系统主要分为两种内核模式,宏内核(又称单内核)与微内核(还有一种Exokernel(外内核),现在尚处实验阶段,详情可看MIT的论文),此处不赘述。
宏内核系统是内核代码都集中在一段地址空间,可以任意调用内核函数。优势在于性能强,速度快,缺点则就是一处崩则整体崩。
微内核系统则不同,具有一定的层级结构。微内核仅有最基础的功能代码,其余功能分属不同地址空间,通过微内核进行协作交流。相较而言性能有所欠缺,不过随着硬件的快速发展,性能问题已有缓解,安全等因素逐渐日益重要。其中主要代表就是windows,还有华为的鸿蒙。

概念描述

内核态是CPU执行底层支持函数调用硬件所需所进入的状态,
用户态是CPU需执行应用程序所需进入的状态。

内核空间是指内核所在的地址空间,
用户空间是指应用程序所在的地址空间。

Linux采用了宏内核模式,CPU需要执行内核函数时,则需要进入内核态,通过映射的方式将内核空间交由应用程序使用,完成应用程序要求后,需继续处理应用程序,CPU会从内核态切换回至用户态,直接在应用程序所在地址空间进行操作,即用户空间

为什么要有内核态与用户态

CPU为了运行应用程序需要将其拷贝至内核空间,处理时还需经常切换状态,非常麻烦,那为什么还需这两种状态呢?主要是为了安全。
CPU指令包含特权指令与非特权指令,特权指令危险程度极高,一旦使用不当会直接造成系统崩溃,当场去世,如清理内存,调整用户权限,分配系统资源等,所以为了安全着想,这些指令只可以交给系统内核处理。

那用户态与内核态之间是怎么进行切换的呢?下篇文章进行讲述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值