程序员进阶之路一: 介绍cpu,内存,硬盘,指令及其之间关系

来源:互联网 发布:js获取单选框是否选中 编辑:程序博客网 时间:2024/06/05 00:35

对我们程序猿来说,工作中大部分时间都在编程。对于刚入职场的菜鸟更是如此,比如笔者我,从大二下学期接触编程到现在,2年多了,接触过很多编程语言,最终选择学习java,从刚开始自己在痛苦中摸索,到现在初入职场,有了一个明确的方向。好了,题外话不多说了。以后有机会我会写一些我2年多总结的学习方法和分享一些收集来的面试真经。
从我接触编程开始的时候,就开始困惑,为什么输入N行由字母拼音组成的代码,就可以产生这么多让我意想不到结果,那时,我就接触到了一个不一样的世界,由于当时太菜,脑海中有十万个为什么,也无从入手去解决。随着学习的深入,对这些问题,也得到了初步的解答,程序员进阶之路是一个开始,之后我会每周至少写一篇文章。

  • cpu ,内存(主内存,负责存储cpu中运行程序指令和数据的内存),指令 ,磁盘(主要指硬盘)

cpu是计算机的大脑,它根据程序的指令来进行数据运算,并控制整个计算机的设备。 对于程序员来说,cpu是具有各种功能寄存器的集合体。

内存是保存命令和指令的场所,内存地址是保存命令和指令的位置,用整数值表示。

指令基本结构包括两方面的内容:操作码和操作数。

硬盘是计算机的存储媒介。

首先我们要清楚的明白几点:
第一: 什么是程序?它由什么组成?
第二: 正在运行的程序是存储在计算机什么位置的?
第三: 在计算机中负责程序解释和运行的是哪个?
第四: 内存和硬盘的关系?

1.程序是指示计算机每一步动作的指令。它由指令和数据组成,好比java中输出hello,hello是数据,system.out.printf就是指令。
2. 存储在计算机内存中。
3. 是cpu,cpu能够直接识别和运行的只有机器语言,所以,我们写的代码,最后都会转化为机器语言(机器语言就是由二进制代码指令表达的计算机语言,指令由0和1组成)。
4. 在计算机硬盘和磁盘上保存的程序只有被复制到内存中去,才可以被运行 !而我们可以通过磁盘缓存来提高磁盘的访问速度。下图是程序加载到内存示意图:

这里写图片描述

  • 程序的运行流程

我大概的说一下程序运行的流程,首先程序员用c语言编写代码,经过编译后转化为了exe文件,也就是机器码(机器语言,计算机只识别机器语言),之后,程序运行时,就从硬盘上把exe文件在内存中复制一份,最后由cpu去解释并执行程序内容。

也就是说exe文件是二进制文件,但是它只能在windows上直接运行,是不能跨平台的!因为在linux上对虚拟内存的管理和windows不一样,他在大部分情况下,找不到要操作的数据,所以哪怕是cpu能识别,它也无能为力为我们做什么!

java经过编译后得到的class文件是二进制文件,它是机器语言吗?它不是机器语言!!!它只是JVM能够识别的二进制文件,可以跨平台,它只对JVM负责,离开了JVM,它也就没有什么作用了!所以,它可以运行在任何有JVM的操作系统上。

  • 磁盘和内存

接下来,我们来了解一下磁盘缓存和虚拟内存。
从计算机存储程序命令和指令来说,其实内存和磁盘功能是相同的。那么二者之间的关系又是什么,下面我就来说说部分:

首先,需要了解,磁盘缓存就是把从磁盘中读出的数据存储在内存中,当程序再次读取该数据时,就可以从内存中读取,不需要再次从磁盘读取,这样可以更快的获取数据,但是,需要注意的就是,当停电或者关闭计算机之后,内存中的数据将会被清除。通俗的说,磁盘缓存就是把内存假想为磁盘。

下图是硬盘缓存提高访问速度机制示意图:

引用块内容

虚拟内存就是把磁盘的一部分作为假想内存来使用,这样的好处就是哪怕内存不足的计算机,也可以运行很大的程序!

下图是分页式内存机制:

这里写图片描述

好了,这次的内容有很多不足之处,希望大家指出。

0 0
原创粉丝点击