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

Linux的内核态与用户态是怎么回事?,第1张

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

一个完整可用的 *** 作系统一般由以下4个部分组成:

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

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

概念描述

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

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

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

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

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5694445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存