计算机体系结构可以类比人类社会的构成:

以helloworld为例,我们常见的helloworld程序背后发生了什么?这里我们详尽,完整的梳理一下整个过程,加深对计算机体系结构的理解:
caozilong@caozilong-Vostro-3268:~/Workspace/helloworld$ gcc main.c
caozilong@caozilong-Vostro-3268:~/Workspace/helloworld$ ./a.out
hello world.
caozilong@caozilong-Vostro-3268:~/Workspace/helloworld$
caozilong@caozilong-Vostro-3268:~/Workspace/helloworld$

整个过程的流程图如下:

1.shell命令解释器,这里是BASH,接收用户输入, shell程序会将用户从键盘输入的每个字符读入CPU寄存器,对应于图中的路径1。在细分下去,其实这里有两种情况,USB控制器和CPU中间有一个寄存器FIFO,寄存器FIFO和内存之间传输有两种方式,第一种方式也就是图中画出的这种,需要通过CPU执行指令从FIFO中读如,再写入主存/内存,由于需要CPU介入,所以效率比较低,还有另外一种方式,FIFO和主存之间通过总线桥中的DMA直接传输数据,无需CPU介入,这种方式效率比较高,途中虚线6绘制的就是这种情况。
2.操作系统会将读取到的"a.out"字符写入内存缓冲区,同时启动加载程序,加载a.out
3.当检测到用户敲入回车后,加载程序会从磁盘加载a.out程序,写入内存。
4.加载程序将PC指针指向主村中的a.out,操作系统将执行流交给a.out继续执行。
5.CPU执行a.out,将a.out中的逻辑输出内容打印出来,现实到屏幕上。
总结:
一个简单的a.out程序,其实足够覆盖计算机体系结构中的大部分内容,图中,CPU,总线,外设,存储器在操作系统的统一支配下联动,完成了输出helloworld的功能,还是非常复杂的。

本文通过分析一个简单的Hello World程序的执行流程,详细阐述了计算机体系结构的工作原理。从用户在命令行输入到程序执行并显示结果,涉及到了CPU、总线、外设、存储器和操作系统的协同工作。过程中提到了数据传输的两种方式,以及加载程序如何将程序从磁盘加载到内存,并由CPU执行输出。整个过程揭示了计算机内部的复杂性和高效性。
2473

被折叠的 条评论
为什么被折叠?



