计算机体系结构-helloworld背后发生了什么?

156 篇文章 17 订阅

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

以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的功能,还是非常复杂的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值