美文网首页就该这么学并发
10. 谁再和我提内核/用户态, 我跟谁…………

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

作者: 码哥说 | 来源:发表于2020-08-17 09:44 被阅读0次

    前言

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

    image

    记不清哪天了,

    咸鱼刚入职场,

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

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

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

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

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

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

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

    用户态和内核态

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

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

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

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

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

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

    特权级别及指令划分

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

    特权级别一般分为四种

    • R0

    • R1

    • R2

    • R3

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

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

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

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

    状态的切换

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

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

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

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

    就会切换到内核态.

    用户态--->内核态

    可以通过三种途径

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

    内核态--->用户态

    • 设置程序状态字PSW

    两种状态的区别

    这两种状态的主要差别是

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

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

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

    image

    欢迎关注我

    技术公众号 “CTO技术”

    相关文章

      网友评论

        本文标题:10. 谁再和我提内核/用户态, 我跟谁…………

        本文链接:https://www.haomeiwen.com/subject/szorrktx.html