程序是怎样跑起来的一书摘要

  • 程序是什么? 指示计算机每一步动作的一套指令,动作的先后顺序
  • 程序是由什么组成的 ? 指令和数据
  • 什么是机器语言(或者叫本地代码) ? CPU 可以(并且只能)识别、使用的语言
  • .正在运行的程序存储在什么位置 ?内存,硬盘和磁盘上的程序被复制到内存后执行
  • 计算机的构成元件中,负责程序的解释和运行的是哪个? CPU,由数百万乃至上亿个晶体管构成。内部分为 控制器、运算器、寄存器、时钟。各部件之间由电流信号联通。程序启动后,根据时钟信号,控制器从内存中读取指令和数据。

CPU:由多个寄存器构成

  • accumulator register 累加寄存器 ,存储执行运算的数据和运算后的数据
  • flag register 标志寄存器 ,存储运算处理后的CPU状态
  • program counter 程序计数器 ,存储下一条指令的内存地址
  • base register 基址寄存器, 存储数据内存的起始地址
  • index register 变址寄存器, 存储基址寄存器的相对地址
  • general purpose register 通用寄存器, 存储任意数据
  • instruction register 指令寄存器, 存储指令,CPU内部使用
  • stack register 栈寄存器, 存储栈区域的起始地址
  • 程序计数器、累加寄存器、标志寄存器、指令寄存器、栈寄存器 都只有一个,其他寄存器一般有多个
  • 程序计数器 存储下一条指令的地址,控制程序的执行流程

程序的三种结构

  • 顺序结构 :按照地址内容的顺序执行指令
  • 选择结构 : 根据条件执行任意地址的指令
  • 循环结构 :重复执行同一地址的指令

内存中配置的程序示例,显示两个数相加的结果
程序是怎样跑起来的一书摘要
函数的调用机制

  • 函数调用通过把程序计数器的值设定成函数的存储地址来实现
  • 编译高级语言的程序后,函数调用的处理会转换成call指令,函数结束的指令会转换成return指令。
  • 基址寄存器、变址寄存器处理数组 : 将数组的首地址存入基址寄存器,变址寄存器的值在数组长度范围内变化。CPU将 基址寄存器 + 变址寄存器的解释为 实际查看的内存地址,变址寄存器类似于索引的功能

程序调用函数图解
程序是怎样跑起来的一书摘要
关于磁盘

  • 磁盘中存储的程序,必须加载到内存中才能运行。因为CPU 需要通过程序计数器指定内存地址,才能读出程序
  • 磁盘缓存技术 从磁盘中读出的数据存储到内存中,下次读取同一数据时,直接从内存读取,提高访问速度
  • 虚拟内存技术 将未运行的程序部分存储在磁盘,执行到虚存中的内容时,将虚存中内容跟内存中的内容交换(swap), 内存不足的情况下也可以运行程序
  • 磁盘进行读写的最小单位—扇区 存储文件单位—簇

**程序的运行环境:操作系统、硬件的综合 **

  • 不同的CPU对应不同的机器语言
  • 不同的操作系统,应用程序向操作系统传递指令的途径不同。应用程序向操作系统传递指令的途径就叫 API