就该这么学并发

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

2020-08-17  本文已影响0人  码哥说

前言

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

image

记不清哪天了,

咸鱼刚入职场,

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

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

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

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

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

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

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

用户态和内核态

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

运行操作系统程序, 操作硬件
运行用户程序

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

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

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

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

特权级别及指令划分

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

特权级别一般分为四种

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

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

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

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

状态的切换

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

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

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

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

就会切换到内核态.

用户态--->内核态

可以通过三种途径

为了安全, 应用程序无法直接调用硬件的功能,
  当CPU在执行运行在用户态下的程序时,
  当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,

内核态--->用户态

两种状态的区别

这两种状态的主要差别是

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

image

欢迎关注我

技术公众号 “CTO技术”

上一篇 下一篇

猜你喜欢

热点阅读