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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值