程序是怎么运行的

        作为一个计算机专业的学生,你有没有认真思考过,当你在编译器里写出程序的时候,它是如何在计算机上运行的?接下来我们以最简单的C语言的"Hello world"代码来告诉你,程序是如何运行

//文件名称为sum;#include<stdio.h>

int main(void)

{

inta=1,b=2,sum;

sum=a+b;

printf("%d\n",sum);}

1.编写完程序后,一个sum.c文件就保存在了桌面上,这个叫做C源文件。那桌面又属于计算机的哪一个部分呢?一台计算机包含如下基本五个部分:

在计算机中,存储器用来保存信息。存储器又分为内部存储器和外部存储器,内部存储器即我们所说的内存,而外部存储器就是我们说的磁盘,磁盘又分为硬盘和软盘(软盘基本已经从PC中消失),而我们电脑中的大部分就都是硬盘了,这里也分为固态硬盘和传统机械硬盘。不管怎么说吧,磁盘也好内存也罢,就是用来存放数据的,那么我们就知道了这个C源文件应该就是存放在电脑中的硬盘中了。

代码被保存到硬盘之后,当计算机要运行程序的时候,就把代码从硬盘复制到内存中。那么在这个过程中,CPU起到什么作用?

CPU与内存的关系

通过这张图,我们可以清晰直观的了解到CPU,内存和硬盘三者之间的关系。我们之前的代码被保存到了硬盘中,如果要执行这段程序的话,需要把这段代码从硬盘中读取到内存中,此时的代码已经变成了二进制文件存储在内存中。代码的作用是把求出a + b 的值并输出显示到屏幕上,CPU收到“加”这个指令后,就把a的值和b的值读入到寄存器中?那么问题又来了,寄存器是个啥?要了解寄存器,先了解CPU。

2.CPU是个什么东西?

CPU基本由四部分组成,如下图所示:

CPU组成

CPU的作用主要有以下几种功能:

CPU功能

接下来,我们重点介绍寄存器和运算器。

寄存器是存储部件,容量非常有限,能存储的数据的大小。寄存器用来存放指令、数据等处理对象。现在来说一般有两种,也就是我们常听说的32位和64位,32位的寄存器就能存储4个字节的数据,64位的寄存器就能存储8个字节的数据,另外CPU也分为32位和64位其实就是由其中的寄存器的位数决定的。现在的CPU一般都内置了很多的寄存器,依此来完成比较复杂的操作。

运算器是计算的核心,主要的作用负责从内存读入寄存器的数据。需要注意的是:运算器是没法直接操作内存中的数据的,运算器操作的数据是寄存器中存放的数据。

3.CPU和内存的交互

程序代码被读取到内存中了,现在要执行这段代码,那就需要CPU出马了,首先,CPU会去读取需要进行操作的数据。继续看这代码:也就是需要读取数据a和b,那么读取到的数据a和b存放在哪了呢?根据我们上面对CPU简单的了解可知,数据a和b是被放到了CPU中的寄存器中,如下图所示:

在CPU中有两个比较重要的组件就是运算器和寄存器,CPU中的寄存器可以有很多个,再看内存,是一个个类似楼房形状,每层楼房都有编号,比如说现在数据a和b分别存放在#1和#2上,然后CPU将他们读取放在寄存器R1和R2上。

这个时候就要计算a和b的和,这就用到了运算器,它会拿到寄存器R1和R2,也就是拿到数据a和b,然后做加法运算

计算之后的结果即sum,运算器会再次把它放到寄存器,比如R1中,这个时候之前的数据b就会被覆盖,如此一来,CPU和内存就一起完成一次加法运算操作。

接下里,我们的关注点从加法运算转移到内存,实际上,程序代码被加载到内存的时候会产生数据和指令两部分,数据我们都清楚,那指令是什么?

指令就是说明程序该怎么执行。对于CPU来说就是告诉CPU该做什么,比如告诉CPU,读取数据a和b,然后再将他们相加,即CPU是根据指令干活,指令让怎么干,CPU就执行什么操作。

这就是程序从编写到执行的全部过程,怎么样,是不是感觉豁然开朗。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 又是一年秋招季,哎呀妈呀我被虐的惨来~这不,前几阵失踪没更新博客,其实是我偷偷把时间用在复习课本了(雾 坚持在社区...
    tengshe789阅读 2,009评论 0 8
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 2,417评论 0 1
  • 文|晶晶 五款风格迥异的女性,各有各的性格,追求,和家庭背景。在上海这座纸醉金迷的城市里,她们每个人都有自己的位置...
    晶晶Jane阅读 1,072评论 2 14
  • 一.觉察日记 (一)事件:做关于进15天蜕变学习群的决定。 (二)我的反应和应对:反省自己的模式。 (三)感受:恐...
    感恩一切_e707阅读 165评论 0 0
  • 女儿今年4岁了,最近经常问我:“爸爸今天什么时候回来陪我啊,为什么到现在还不回来?” 有时候甚至当着爷爷奶奶的面,...
    漫紫雪怡阅读 960评论 2 5