程序是怎样跑起来的
程序是指示计算机每一步动作的一组指令以及每个指令相应的数据。
使用C、Java 、Python和go等语言编写的应用程序,最终都会转化成机器语言,这样CPU才能够直接识别和执行。CPU根据转化为机器语言的程序的指令来进行数据运算,并控制整个计算机。
CPU是怎么运作的呢?不得不从CPU的组成说起。CPU由寄存器、控制器、运算器和时钟共四个部分组成,各部分间由电流信号相互连通。寄存器可用来暂存指令、数据等处理对象,可以将其看作是内存的一种。根据种类的不同,一个CPU内部会有20~100个寄存器。控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。运算器负责运算从内存读入寄存器的数据。时钟负责发出CPU开始计时的时钟信号。
CPU获取的指令和数据来自内存,但怎么从内存获取的呢?通常说的内存是计算机的主存储器(main memory),又叫主存。主存通过控制芯片等与CPU相连,主要负责存储指令和数据。主存由可读写的元素构成,每个字节(1字节=8位)都带有一个地址编号。CPU通过该地址(内存地址)读取主存中的指令和数据,也可以写入数据,但主存中存储的指令和数据会随着计算机的关机而自动清除。
磁盘中存储的程序,必须加载到内存后才能运行。在磁盘中保存的原始程序是无法直接运行的,因为负责解析和运行程序内容的CPU要通过内部程序计数器来指定内存地址,然后才能读出程序。即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序的运行速度还是会降低。
用户发出启动程序的指示后,Windows等操作系统会把硬盘中保存的程序复制到内存中,比如程序运行的开始位置为0100,则会会将程序计数器(CPU寄存器的一种)设定为0100,然后程序便开始运行。根据时钟信号,控制器会从内存中读取指令和数据,CPU每执行一个指令,程序计数器的值就会自动加1。然后,CPU的控制器就会参照程序计数器的数值,从内存中读取命令并执行。也就是说,程序计数器决定着程序的流程。
读书笔记内容整理,来自《程序是怎样跑起来的》