计算机程序是怎么经过cpu,内存,硬盘运行起来的?

 

  虽然之前知道计算机里有CPU,内存,硬盘,显卡这么些东西,我还真不知道这些东西是怎么协做起来完成一段程序的,能写出程序却不懂程序,也不会向别人解释他们的关系,因此特地总结了一下,写的比较浅显,和我同样是菜鸟或小白的人能够看一看,解释的角度是从彻底不懂的人的角度来考虑的。程序员

首先程序是什么?程序和咱们的电脑硬件CPU,内存,硬盘,到底有什么关系?翻译

  程序是指一套作事的流程,好比村里召开妇女大会的流程,可能就是先找好开会场地,而后通知领导和妇女,安排领导讲话等等。计算机指的程序也差很少,也是一套作事的流程,只不过计算机只能读懂他们所理解字符,咱们开会的流程是经过人与人之间的协做完成,计算机的程序跑起来是经过硬件的协做完成。内存

  在这里咱们先作一个比喻,假设CPU,内存,硬盘等这些东西都是来自一个星球的外星人,既然是外星人,固然不懂咱们地球人的语言啊,并且这些外星人有一个特色,他们只有一只手,且手上只有一根手指,每次算数的时候,由于要靠手指来计数,咱们的10进制数字,他们一根手指根本不够用啊,这就和咱们小时候数到11就得借用脚趾头同样,因此他们来计算咱们地球人的数字时就须要借用不少小伙伴手来表示一个大于2的数字,这个就是他们的2进制。编译器

  如今知道了CPU,内存,硬盘的特殊算数方式,咱们来进一步来看看他们之间的协做,他们是怎么完成咱们人类的要求的。编译

  首先每一个人都有本身擅长的东西,计算机星球的这几个小伙伴也是,各有各的属性,CPU这我的最聪明,算数最快,缺点就是记不住太多东西,算完的东西不存起来就忘了,因此须要别人协助记流程数据。再看看硬盘,硬盘体格最大,记性好(虽然慢点),因此他被分配了一个任务,那就是记住咱们地球人分配的各类无聊的流程数据(什么开会的流程啊,请那些人啊,这些人的电话号码多少啊等等),可是呢因为硬盘反应慢,cpu并不想直接和硬盘打交道,而后再看看内存, 内存比硬盘小不少,反应比硬盘快好多倍,可是就是记的东西有点少,并且没电的时候就罢工,把东西忘的一干二净 ,但由于反应快,且记的东西比本身多,cpu决定和内存直接打交道要流程数据。效率

  这样咱们就能够一次性把不少任务的流程写好堆给硬盘兄,什么开会的流程啊,查看天气预报的流程啊,给女友打电话的流程啊通通提早写好塞给硬盘,而后当咱们须要计算机完成一个任务时,内存从硬盘那把这个任务的流程全都要过来,此时的程序是一堆的指令集(作事的流程),cpu从内存逐条要指令,一条指令计算调度一次,每完成一个步骤后都要内存帮忙翻到相应的地方,看这个流程下一步要求是什么,从头至尾一路算完,这样他们就完成了计算机程序。硬件

  刚刚咱们提到了程序员这个角色,那为何他们写的东西,计算机星球的这些外星人能听懂呢?明明刚刚说的计算机星球的这些人只懂0和1嘛,程序员写的好歹也是英文嘛,难道,计算机星球的外星人懂英文?他们固然不懂,程序员理论上写好计算机能直接读懂的01代码是能够的,可是程序员若是每次都要把程序直接转写成01代码势必会大大下降写程序的效率,并且每一个程序员要从底层这么深刻了解计算机语言也会很是费时间,因此早期的程序员大神干脆写了个翻译程序,这个程序也叫编译器,这个编译器能够专门把一门特定的语言转成机器能读懂的计算机语言,这样有了这个么翻译,后来的程序员写程序就会轻松不少,能够直接写上地球程序员方便阅读的代码,因此咱们应该感谢发明编译器的人,他们让人类世界和计算机世界交流变得更便捷了。程序

     以上只是大概介绍了下计算机cpu,内存,硬盘和程序的关系,用了些可能不算好的比喻,若有纰漏和不正确的地方,望指正。总结