计算机程序是怎么通过cpu,内存,硬盘运行起来的?
虽然以前知道计算机里有CPU,内存,硬盘,显卡这么些东西,我还真不知道这些东西是怎么协作起来完成一段程序的,能写出程序却不懂程序,也不会向别人解释他们的关系,所以特意总结了一下,写的比较浅显,和我一样是菜鸟或小白的人可以看一看,解释的角度是从完全不懂的人的角度来考虑的。
首先程序是什么?程序和我们的电脑硬件CPU,内存,硬盘,到底有什么关系?
程序是指一套做事的流程,比如村里召开妇女大会的流程,可能就是先找好开会场地,然后通知领导和妇女,安排领导讲话等等。计算机指的程序也差不多,也是一套做事的流程,只不过计算机只能读懂他们所理解字符,我们开会的流程是通过人与人之间的协作完成,计算机的程序跑起来是通过硬件的协作完成。
在这里我们先做一个比喻,假设CPU,内存,硬盘等这些东西都是来自一个星球的外星人,既然是外星人,当然不懂我们地球人的语言啊,而且这些外星人有一个特点,他们只有一只手,且手上只有一根手指,每次算数的时候,因为要靠手指来计数,我们的10进制数字,他们一根手指根本不够用啊,这就和我们小时候数到11就得借用脚趾头一样,所以他们来计算我们地球人的数字时就需要借用很多小伙伴手来表示一个大于2的数字,这个就是他们的2进制。
现在知道了CPU,内存,硬盘的特殊算数方式,我们来进一步来看看他们之间的协作,他们是怎么完成我们人类的要求的。
首先每个人都有自己擅长的东西,计算机星球的这几个小伙伴也是,各有各的属性,CPU这个人最聪明,算数最快,缺点就是记不住太多东西,算完的东西不存起来就忘了,所以需要别人协助记流程数据。再看看硬盘,硬盘体格最大,记性好(虽然慢点),所以他被分配了一个任务,那就是记住我们地球人分配的各种无聊的流程数据(什么开会的流程啊,请那些人啊,这些人的电话号码多少啊等等),但是呢由于硬盘反应慢,cpu并不想直接和硬盘打交道,然后再看看内存, 内存比硬盘小很多,反应比硬盘快好多倍,但是就是记的东西有点少,而且没电的时候就罢工,把东西忘的一干二净 ,但因为反应快,且记的东西比自己多,cpu决定和内存直接打交道要流程数据。
这样我们就可以一次性把很多任务的流程写好堆给硬盘兄,什么开会的流程啊,查看天气预报的流程啊,给女朋友打电话的流程啊统统提前写好塞给硬盘,然后当我们需要计算机完成一个任务时,内存从硬盘那把这个任务的流程全都要过来,此时的程序是一堆的指令集(做事的流程),cpu从内存逐条要指令,一条指令计算调度一次,每完成一个步骤后都要内存帮忙翻到相应的地方,看这个流程下一步要求是什么,从头到尾一路算完,这样他们就完成了计算机程序。
刚刚我们提到了程序员这个角色,那为什么他们写的东西,计算机星球的这些外星人能听懂呢?明明刚刚说的计算机星球的这些人只懂0和1嘛,程序员写的好歹也是英文嘛,难道,计算机星球的外星人懂英文?他们当然不懂,程序员理论上写好计算机能直接读懂的01代码是可以的,但是程序员如果每次都要把程序直接转写成01代码势必会大大降低写程序的效率,而且每个程序员要从底层这么深入了解计算机语言也会非常费时间,所以早期的程序员大神干脆写了个翻译程序,这个程序也叫编译器,这个编译器可以专门把一门特定的语言转成机器能读懂的计算机语言,这样有了这个么翻译,后来的程序员写程序就会轻松很多,可以直接写上地球程序员方便阅读的代码,所以我们应该感谢发明编译器的人,他们让人类世界和计算机世界交流变得更便捷了。
以上只是大概介绍了下计算机cpu,内存,硬盘和程序的关系,用了些可能不算好的比喻,如有纰漏和不正确的地方,望指正。
计算机程序是怎么通过cpu,内存,硬盘运行起来的?的更多相关文章
- Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数)
[转]Windows 性能监视器的基本指标说明(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的数据至关重要,关系着优化和分析出现的问题.我是在运维过程中要用到的.因此,今天给出Wind ...
- VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
现在便宜的VPS主机越来越多了,一些美国的VPS主机甚至给出1美元一月的VPS,堪比虚拟主机还要便宜,巨大的价格优势吸引不少人购买和使用,而近些年来国内的主机商也开始意识到便宜的VPS对草根站长的诱惑 ...
- Windows 性能监视器的基本指标(CPU,内存,硬盘参数)
转载:http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的 ...
- 一个统计 CPU 内存 硬盘 使用率的shell脚本
一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 #!/bin/bash #This script is use for describle CPU Hard Memery Uti ...
- centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
1.系统 1.1版本 uname -a 能确认是64位还是32位,其它的信息不多 [root@localhost ~]# uname -a Linux localhost.localdomain 3. ...
- DSAPI 获取实时统计信息CPU/内存/硬盘/网络
有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...
- CPU 内存 硬盘的区别
第一点:CPU 是处理器,内存和硬盘是存储器,受CPU 的控制. 第二点:由于内存的速度很快,在电脑运行的过程中,CPU通常只与内存交换数据,但内存断电数据就会全部丢失,因此电脑使用硬盘作为主要的存 ...
- linux 查看cpu 内存 硬盘 文件夹大小
文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | w ...
- 查看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 ...
- centOS下实践查询版本/CPU/内存/硬盘容量等硬件信息
更详细参考: https://blog.csdn.net/dream_broken/article/details/52883883 1.查看内存 DirectMap2M: 33544192 kB [ ...
随机推荐
- SpringBoot2.0+ 使用Log4j2日志输出
据说Log4j2相比log4j效率有很大提升. pom.xml导入 <dependency> <groupId>org.springframework.boot</gro ...
- JavaScript中的表单编程
表单编程 1获取表单相关信息 1.什么是表单元素 1.什么是表单元素 在H TML中表单就是指form标签,它的作用是将用户输入或选择的数据提交给指定的服务器 2.如何获取表单元素 <form ...
- clientHeight / scrollHeight / offsetHeight 等属性的区别图
网页(内容)可见区域宽:document.body.clientWidth 网页(内容)可见区域高:document.body.clientHeight 即页面浏览器中可以看到内容的这个区域的高度,一 ...
- VS2010-MFC(工具栏:工具栏资源及CToolBar类)
转自:http://www.jizhuomi.com/software/215.html 上一节讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的 ...
- 全局CSS设置
全局CSS设置 1.清除所有的标记的内外边距 body,ul,li,a,img,p,input{ margin:0; padding:0; } 2.去除项目符号或编号前面的符号 ul,ol,li{ l ...
- LightOJ-1007-Mathematically Hard-欧拉函数打表+前缀和+预处理
Mathematically some problems look hard. But with the help of the computer, some problems can be easi ...
- <每日一题>题目12:列表解析及zip、dict函数的简单应用
''' 分析: 1.列表解析:迭代机制的一种应用 语法: [expression for iter_val in iterable] [expression for iter_val in itera ...
- Spring AspectJ 切入点语法详解(7)
1.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指 ...
- 实现Linux下不间断聊天和退出处理
实现Linux下不间断聊天和退出处理
- vertx使用过程中浏览器端Cookie重复问题
[问题描述] 背景: 使用vertx提供的服务,使用Dispatcher做路由转发,内部通过routingcontext做请求传递及响应. 现象: 在谷歌浏览器的Network中,看到Cookie中有 ...