10. 谁再和我提内核/用户态, 我跟谁…………

前言

谁再和我提内核/用户态, 我跟谁……

image

记不清哪天了,

咸鱼刚入职场,

依稀记得某天的下午时光,

公司内的一群大牛, 聚在一起
image

尽讨论一些高大上的技术话题, 或底层原理, 或架构……

时不时传来一些专业术语“用户态”,“内核态”…………

咸鱼在边上默默听着, 也不敢插嘴,
image

只能仰望大佬, 同时暗下决心, 今天一定要把这两个概念搞懂!

那么, 用户态和内核态代表究竟是个啥?

用户态和内核态

简而言之, 内核态和用户态就是linux的权限划分.

  • 内核态(Kernel Mode)
运行操作系统程序, 操作硬件
  • 用户态(User Mode)
运行用户程序

为什么要进行这样的划分呢?

其实本质是为了保证系统不会崩溃!

你总不希望系统跑你的程序时,

因为你的程序有bug, 导致操作系统崩溃吧!

特权级别及指令划分

这两种运行级别有不同的特权, 可以运行不同的指令集

特权级别一般分为四种

  • R0

  • R1

  • R2

  • R3

从R0到R3特权能力依次降低

  • R3相当于用户态
当程序运行在R3级特权上时, 就可以称之为运行在用户态.
  • R0相当于内核态
当程序运行在0级特权级上时,就可以称之为运行在内核态.

不同级别能够运行不同的指令集合

  • 特权指令
只能由操作系统使用、用户程序不能使用的指令.
  • 非特权指令
用户程序可以使用的指令.

状态的切换

用户态和内核态可以互相切换.

运行在用户态下的程序不能直接访问操作系统内核数据结构和程序.

当我们在系统中执行一个程序时, 大部分时间是运行在用户态下的,

在其需要操作系统帮助完成某些它没有权力和能力完成的工作时,

就会切换到内核态.

用户态--->内核态

可以通过三种途径

  • 系统调用(访管指令)(用户进程主动发起)
为了安全, 应用程序无法直接调用硬件的功能,
  • 异常(被动)
  当CPU在执行运行在用户态下的程序时,
  • 外围设备的中断(被动)
  当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,

内核态--->用户态

  • 设置程序状态字PSW

两种状态的区别

这两种状态的主要差别是

  • 处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处于占有的处理机是可被抢占的

  • 处于核心态执行中的进程,则能访问所有的内存空间和对象,且所占有的处理机是不允许被抢占的.

谁再和你提内核/用户态, 请把怼飞他!

image
订阅号.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。