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

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

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

  在这里我们先做一个比喻,假设CPU,内存,硬盘等这些东西都是来自一个星球的外星人,既然是外星人,当然不懂我们地球人的语言啊,而且这些外星人有一个特点,他们只有一只手,且手上只有一根手指,每次算数的时候,因为要靠手指来计数,我们的10进制数字,他们一根手指根本不够用啊,这就和我们小时候数到11就得借用脚趾头一样,所以他们来计算我们地球人的数字时就需要借用很多小伙伴手来表示一个大于2的数字,这个就是他们的2进制。

  现在知道了CPU,内存,硬盘的特殊算数方式,我们来进一步来看看他们之间的协作,他们是怎么完成我们人类的要求的。

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

  这样我们就可以一次性把很多任务的流程写好堆给硬盘兄,什么开会的流程啊,查看天气预报的流程啊,给女朋友打电话的流程啊统统提前写好塞给硬盘,然后当我们需要计算机完成一个任务时,内存从硬盘那把这个任务的流程全都要过来,此时的程序是一堆的指令集(做事的流程),cpu从内存逐条要指令,一条指令计算调度一次,每完成一个步骤后都要内存帮忙翻到相应的地方,看这个流程下一步要求是什么,从头到尾一路算完,这样他们就完成了计算机程序。

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

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

计算机程序是怎么通过cpu,内存,硬盘运行起来的?的更多相关文章

  1. Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)

    [转]Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Wind ...

  2. VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试

    现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...

  3. Windows 性能监视器的基本指标(CPU,内存,硬盘参数)

    转载:http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的 ...

  4. 一个统计 CPU 内存 硬盘 使用率的shell脚本

    一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 #!/bin/bash #This script is use for describle CPU Hard Memery Uti ...

  5. centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息

    1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localhost ~]# uname -a Linux localhost.localdomain 3. ...

  6. DSAPI 获取实时统计信息CPU/内存/硬盘/网络

    有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...

  7. CPU 内存 硬盘的区别

    第一点:CPU 是处理器,内存和硬盘是存储器,受CPU 的控制.  第二点:由于内存的速度很快,在电脑运行的过程中,CPU通常只与内存交换数据,但内存断电数据就会全部丢失,因此电脑使用硬盘作为主要的存 ...

  8. linux 查看cpu 内存 硬盘 文件夹大小

    文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | w ...

  9. 查看CPU 内存 硬盘 网络 查看进程使用的文件 uptime top ps -aux vmstat iostat iotop nload iptraf nethogs

    #安装命令 yum install  sysstat #包含 iostat vmstat yum install iotop yum install  nload yum install iptraf ...

  10. centOS下实践查询版本/CPU/内存/硬盘容量等硬件信息

    更详细参考: https://blog.csdn.net/dream_broken/article/details/52883883 1.查看内存 DirectMap2M: 33544192 kB [ ...

随机推荐

  1. Vue+Iview+Node 安装环境 运行测试Vue

    1.运行环境及设置 备注:建议设置 npm config set registry https://registry.npm.taobao.org 2.全局安装vue/cli 3.创建vue 项目 v ...

  2. platform模块和ctypes模块

    一.ctypes模块 Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件.先来看一下 ...

  3. ThinkPHP 的缓存大概多久更新一次

    ThinkPHP 的缓存大概多久更新一次可以自己设置: thinkPHP的缓存默认是文件缓存,保存在Runtime文件夹里面, 如果不设置过期时间,且不清除Runtime文件,就会一直存在. 如果设置 ...

  4. tomcat JAVA_OPTS设置

    原文地址:https://blog.csdn.net/bamboo_cqh/article/details/72820700 AVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量. JVM ...

  5. AutowireCapableBeanFactory 根据名称:自动装配的BeanFactory,其实也是对BeanFactory的增强

    //自动装配的Bean 工厂 public interface AutowireCapableBeanFactory extends BeanFactory { //工厂没有自动装配的Bean int ...

  6. HDFS under replicated blocks

    under replicated blocks 解决: 找出没有复制的block: hdfs fsck / | grep 'Under replicated' | awk -F':' '{print ...

  7. Python flask 构建可扩展的restful apl✍✍✍

    Python flask 构建可扩展的restful apl  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  8. Visual Studio 2019安装教程

    一.下载 网址:https://visualstudio.microsoft.com/zh-hans/vs/ 下载后是一个.exe文件 二.安装 双击打开下载的.exe文件,进入文件的提取 提取完成后 ...

  9. <Django> MVT三大块之Models(模型)

    1.ORM(对象-关系-映射)---面向对象,不需要面向SQL语句 根据对象的类型生成表结构 将对象.列表的操作,转化成SQL语句 将SQL语句查询的结果转化成对象.列表 目的:实现数据模型与数据库的 ...

  10. JS数组 编程练习 使用Javascript语言,把以下数组 在页面显示如下图所示的图案

    编程练习 使用Javascript语言,把以下数组 var  arr = ['*','##',"***","&&","****&quo ...