linux内核态和用户态

短命女 2023-09-28 20:44 123阅读 0赞

用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。

1、内核态、用户态概念

内核态:也叫内核空间,是内核进程/线程所在的区域。主要负责运行系统、硬件交互。

用户态:也叫用户空间,是用户进程/线程所在的区域。主要用于执行用户程序。

2、内核态和用户态的区别

内核态:运行的代码不受任何限制,CPU可以执行任何指令。

用户态:运行的代码需要受到CPU的很多检查,不能直接访问内核数据和程序,也就是说不可以像内核态线程一样访问任何有效地址。

操作系统在执行用户程序时,主要工作在用户态,只有在其执行没有权限完成的任务时才会切换到内核态。

3、为什么要区分内核态和用户态

保护机制。防止用户进程误操作或者是恶意破坏系统。内核态类似于C++的私有成员,只能在类内访问,用户态类似于公有成员,可以随意访问。

4、用户态切换到内核态的方式

1、系统调用(主动)

由于用户态无法完成某些任务,用户态会请求切换到内核态,内核态通过为用户专门开放的中断完成切换。

2、异常(被动)

在执行用户程序时出现某些不可知的异常,会从用户程序切换到内核中处理该异常的程序,也就是切换到了内核态。

3、外围设备中断(被动)

外围设备发出中断信号,当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进程处理,如果中断之前CPU执行的是用户态程序,就相当于从用户态向内核态的切换。

5、用户态、内核态切换资源消耗

用户态与核心态之间切换这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。

发表评论

表情:
评论列表 (有 0 条评论,123人围观)

还没有评论,来说两句吧...

相关阅读

    相关 用户内核

    用户态是指应用程序运行的环境,应用程序在用户态下运行,可以访问系统资源,如文件、网络等。用户态下的应用程序运行在受限的环境中,不能直接访问系统硬件资源,必须通过系统调用来请求内

    相关 linux内核用户

    用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。 1、内核态、用户态概念 内核态:也叫内核空间,是内核进程/线程所在的区域。主要负责运行系统、硬

    相关 03 用户内核

    用户态和内核态 划分的原因:为了防止用户进程破坏操作系统的稳定,对一些资源的访问进行了等级划分,与系统相关的一些关键性操作必须由高级别的程序来完成,这样可以做到集中

    相关 Linux用户内核

    1. 用户态和内核态的概念区别 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角

    相关 内核用户的区别

    当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的