• 操作系统的运行机制


    1.程序的运行原理:

    1.CPU执行指令的过程
    1. C语言代码在编译器上“翻译”,得到二进制的机器指令。
    2. 一条高级语言的代码翻译过来可能会对应多条机器指令。
    3. 对于CPU来说,机器指令才是"能看得懂"的语言。
    4. 程序运行的过程其实就是CPU执行一条一条的机器指令的过程。
    2.注意点
    • “指令”就是处理器(CPU)能识别、执行的最基本命令
    • 注:很多人习惯把Linux、Windows、MacOS的“小黑框”中使用的命令也称为“指令”,其实这是“交互式命令接口”,注意与本节的“指令”区别开。

    本节中的“指令”指二进制机器指令。

    2.两种指令

    CPU设计和生产的时候就划分了特权指令和非特权指令
    因此CPU执行一条指令前就能判断出其类型。

    1.特权指令

    操作系统内核作为“管理者”,有时会让CPU执行一些“特权指令”,

    如:内存清零指令。这些指令影响重大,
    只允许“管理者”―—即操作系统内核来使用。

    2.非特权指令

    应用程序只能使用“非特权指令”,如:加法指令、减法指令等。

    3.两种处理器状态

    CPU有两种状态,“内核态”和“用户态”。

    1.核心态

    处于内核态时,说明此时正在运行的是内核程序
    此时可以执行特权指令

    2.用户态

    处于用户态时,说明此时正在运行的是应用程序
    此时只能执行非特权指令

    3.CPU的状态控制
    • CPU中有一个寄存器叫程序状态字寄存器(PSW)
    • 其中有个二进制位,1表示“内核态”,0表示“用户态”
    • 内核态=核心态=管态;
    • 用户态=目态.
    4.内核态,用户态的切换

    1.内核态→用户态:
    执行一条特权指令――修改PSW的标志位为“用户态”,
    这个动作意味着操作系统将主动让出CPU使用权。

    2.用户态→内核态:
    由“中断”引发,硬件自动完成变态过程
    触发中断信号意味着操作系统将强行夺回cPu的使用权。

    3.非法事件的处理

    当遇到非法事件时,会引发一个中断信号:
    CPU检测到中断信号后,会立即变为“核心态”
    并停止运行当前的应用程序,转而运行处理中断信号的内核程序。

    补充:

    • 除了非法使用特权指令之外,还有很多事件会触发中断信号。
    • 一个共性是,但凡需要操作系统介入的地方,都会触发中断信号。
    • 操作系统内核在让出CPU之前,会用一条特权指令把 PSW的标志位,设置为“用户态”

    4.两种程序

    1.内核程序

    1.定义
    微软、苹果有一帮人负责实现操作系统,
    他们写的是“内核程序
    由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)”
    内核是操作系统最重要最核心的部分,也是最接近硬件的部分

    2.注意事项
    甚至可以说,一个操作系统只要有内核就够了
    (eg:Docker一>仅需Linux内核)。

    操作系统的功能未必都在内核中,如图形化用户界面GUI。

    2.应用程序

    我们普通程序员写的程序就是“应用程序”。

  • 相关阅读:
    Java中如何使用JSON-lib包解析Json格式呢?
    RadonDB MySQL Kubernetes 2.2.1 发布!
    代码随想录算法训练营第四十二天| LeetCode416. 分割等和子集
    Spring Cache和Mysql主从复制
    ELK实践
    English语法_介词搭配
    河海大学李轶团队揭示河流交汇特性决定了汇流水动力区微生物群落对河网的影响
    【云原生-Kurbernetes篇】HPA 与 Rancher管理工具
    强强联合,波卡生态正成为物联网赛道关键入口
    “菜鸟”程序员逆袭:独立开发iOS音乐应用,年底参加Amazon DeepRacer 全球锦标赛
  • 原文地址:https://blog.csdn.net/qq_61888137/article/details/132911351