• CPU执行一段代码的原理


    1、冯诺依曼体系

    计算机基本结构分为:运算器、控制器、存储器、输入设备和输出设备。

    运算器(完成运算指令,整数、浮点数运算单元(逻辑运算单元、寄存器))和控制器(控制整个CPU工作,取指令、分析指令)在CPU中。

    存储器在内存中。

    键盘鼠标输入设备。

    显示器输出设备。

     总线分为:

    1、地址总线:用于指定CPU将要操作的内存地址。

    2、数据总线:用于读写内存的数据

    3、控制总线:用于发送和接收信号,比如中断复位等信号,CPU收到信号后进行响应,这个时候需要控制总线。

    CPU操作一条指令,读取一条数据一般需要两条总线:

    首先要通过总线来指定内存的地址,再通过数据总线来传输数据。

    程序执行的基本过程:

    CPU执行程序的过程如下:

      1、第一步,CPU通过读取程序计数器的值,这个值是指令的内存地址,然后CPU控制单元操作地址总线指定需要访问的内存地址;接着

    通知内存设备准备数据,数据准备好后通过数据总线将指令传给CPU,CPU收到内存传来的数据后,将这个指令存入到指令寄存器。

      2、第二步,CPU分析指令寄存器的指令,确定指令的类型和参数,如果是计算类型的指令,就把指令交给逻辑运算单元,如果是存储指令交给控制单元执行。

      3、第三步,CPU执行完指令后,程序计数器的值自增,表示指向下一条指令。这个自增的大小,由CPU的位宽决定,比如32位的CPU,指令是四个字节,需要4个内存地址存放,因此程序计数器需要自增4。

    程序a=1+2执行的具体过程:

      CPU不认识a=1+2这个字符串,这些字符串必须翻译为机器码。需要这个程序跑起来,需要将程序翻译为汇编语言程序,这个过程称为编译成汇编代码。

      针对汇编代码,我们还需要用汇编器翻译成机器码,这些就是二进制机器码,一条一条的机器指令,CPU能知道的东西。

      

    bios程序通常是固化存在只读存储器(ROM)中。

    程序的执行过程:

    计算机

    陷入:

    一种是用户态,一种内核态,内核态可执行所有指令特权指令和非特权指令,用户态只能执行非特权指令系统中硬件全是操作系统所控制的,

    所以当应用程序使用硬件设备等,这个时候系统会产生一个陷入指令,将状态从用户态切换到内核态,然后交给操作系统去执行。

    中断:

    中断是外部事件导致并且它发生的时间不可预测,外部事件主要是时钟中断,硬件中断等。由于CPU一次只能运行一条指令,所以只能有一个程序运行。

    顾名思义由硬件引起中断,比如程序需要用户输入一个数据,操作系统决定是一直等待输入还是转而运行其他进程。如果用户的输入来了,那么键盘驱动器

    会产生一个中断操作系统,操作系统保存正在运行的程序状态,从而切换到原来的数据。

    所以中断发生是随机的主要作用就是进程切换。从而支持CPU和设备之间的并行。

    异常:(内中断)

    异常就是程序执行过程中的异常行为,除零异常,缓冲区异常等。不同操作系统定义了不同种类和数量的异常,且每个异常都有一个唯一的异常号,异常会扰乱程序的正常执行流程。

  • 相关阅读:
    大三寒假学习进度笔记(二十二)—— 降维与SparkSQL
    大三寒假学习进度笔记(二十一)—— 聚类与SparkSQL入门
    大三寒假学习进度笔记(二十)—— 模型提升和Spark中WordCount的11种实现方法
    大三寒假学习进度笔记(十九)(补)——分类
    四月读书报告《梦断代码》二
    基于javaEE的简单教务系统实现(五)
    基于javaEE的简单教务系统实现(四)
    质量属性论文
    四月读书报告《梦断代码》一
    基于javaEE的简单教务系统实现(三)
  • 原文地址:https://www.cnblogs.com/Alei777/p/16484550.html
Copyright © 2020-2023  润新知