码迷,mamicode.com
首页 > 其他好文 > 详细

深入理解计算机系统(1.2)---hello world的程序是如何运行的

时间:2015-07-07 10:52:14      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:

本文转载地址http://www.cnblogs.com/zuoxiaolong/p/computer2.html

 

hello world的执行

 

           我们以linux系统为例,当我们执行一个简单的打印字符串的C程序时,我们需要在命令行输入./hello以及回车去执行该程序。在整个执行过程中,计算机主要做了三件事,或者说经历了三个阶段来完成程序的运行。

 

一、linux的外壳扫描用户输入的字符

 

           当我们在键盘输入./hello时,linux的外壳程序(也就是命令行)会扫描我们输入的字符,将这些字符一一读入到寄存器当中,然后再一一放入主存。换句话说,./hello这几个字符是经过了CPU中的寄存器从而到达了主存。下面LZ将这一过程的图示画出来。

技术分享

 

二、加载hello文件的代码以及数据到主存

 

            这一过程的触发是在我们按下回车的那一刻,此时系统会将存储在磁盘上的hello文件加载到主存,而此过程会利用一种叫做存储器存取的技术,使得数据不通过寄存器直接到达主存。下图是这一过程的图示。

技术分享

 

 

三、根据主存中代码的指令执行程序

 

            在代码以及程序所需要的数据加载到主存后,CPU就开始从main函数的起始位置,依次执行代码中的指令。由于我们的代码只是简单的输出“hello world”这样的字符串,因此系统只是将这个字符串依次加载到寄存器,然后传输到显示器终端显示。这个过程如下图。

技术分享

 

本章小结

 

          本章只是简单的介绍了一下hello程序的执行过程,我们可以简单的这么理解,hello程序的执行,其实就是将数据和代码加载到主存,并由CPU从主存获取指令从而执行的过程。

深入理解计算机系统(1.2)---hello world的程序是如何运行的

标签:

原文地址:http://www.cnblogs.com/hthuang/p/4626239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!