我们编写,运行一个程序,从开始到最后表面上看似流畅,连续.但是在实际的操作过程中,一个软件的编写,和执行过程是分阶段的.前人在每一个执行阶段都花费了巨大的精力,以使其效率达到最优.下面就作一概述.
对于磁盘上的一段程序来说:它本质上是一堆指令和数据的集合.而对内存中运行着的程序来说它多了一个堆栈空间.
我们先介绍计算机的两个核心部件CPU,和内存
内存 临时的工作空间
内存只是一片存储空间,是一种一断电就不能用的存储设备,是被程序使用的一种资源.根据程序使用它的方式不同.它也可以被叫做堆,栈,表等等. 内存和CPU直接相连.绝大多数时候也只有内存和CPU直接交互.其他的也写设备都是间接的通过内存和CPU交互.
CPU 执行指令的部件
CPU中包含了一些其他的部件,这些部件组合起来共同完成了,输入信号,执行信号,输出信号的功能.CPU工作的节奏是根据时钟这个部件的频率来的.时钟和一块叫做触发器的电路共同组成了控制器中的程序计数器. 控制器根据程序计数器的指示读取内存中的指令和数据,将其送给运算器.运算器通过寄存器的辅助,完成运算.最后在控制器的辅助下输出结果.
执行过程
有了这两个概念之后,我们就可以大致来解释一条语句的执行过程.一条语句刚一开始,是被我们存储在硬盘中的.在我们正式运行它之前,需要先进行编译和链接的操作.之后我们就得到了一个完整的可执行文件(一个指令集合).然后就可以直接执行这个程序.
在执行刚开始的时候,我们需要先将程序加载到内存当中.操作系统会将程序计数器的值设为该被执行程序的第一个指令的地址.然后随着程序计数器的不断递增,指令集中的指令会被一条一条执行直至完成.在执行的过程中CPU会将输出信息返回给内存.在从内存返回到各个外部设备中.