编译之后的可执行的程序文件是如何运行的?

图灵机

图灵机是一个抽象的模型,它是这样的:有一条无限长的纸带,纸带上有无限个小格子,小格子中写有相关的信息,纸带上有一个读头,读头能根据纸带小格子里的信息做相关的操作并能来回移动。

image

不理解?下面我再带你用图灵机执行一下“1+1=2”的计算,你就明白了。我们定义读头读到“+”之后,就依次移动读头两次并读取格子中的数据,最后读头计算把结果写入第二个数据的下一个格子里,整个过程如下图:

image

这个理想的模型是好,但是理想终归是理想,想要成为现实,我们得想其它办法。

冯诺依曼体系计算机

根据冯诺依曼体系结构构成的计算机,必须具有如下功能:

  • 把程序和数据入到计算机中;

  • 必须具有长期记住程序、数据的中间结果及最终运算结果;

  • 完成各种算术、逻辑运算和数据传送等数据加工处理;

  • 根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;

  • 能够按照要求将处理的数据结果显示给用户。

为了完成上述的功能,计算机必须具备五大基本组成部件:

  • 装载数据和程序的输入设备;

  • 记住程序和数据的存储器;

  • 完成数据加工处理的运算器;

  • 控制程序执行的控制器;

  • 显示处理结果的输出设备。

根据冯诺依曼的理论,我们只要把图灵机的几个部件换成电子设备,就可以变成一个最小核心的电子计算机,如下图:

image

是不是非常简单?这次我们发现读头不再来回移动了,而是靠地址总线寻找对应的“纸带格子”。读取写入数据由数据总线完成,而动作的控制就是控制总线的职责了。

现代电子计算机正是通过内存中的信息(指令和数据)做出相应的操作,并通过内存地址的变化,达到程序读取数据,控制程序流程(顺序、跳转对应该图灵机的读头来回移动)的功能。
这和图灵机的核心思想相比,没有根本性的变化。只要配合一些 I/O 设备,让用户输入并显示计算结果给用户,就是一台现代意义的电子计算机。

posted @ 2021-07-27 16:38  hochan_100  阅读(449)  评论(0)    收藏  举报