计算机的工作模式
对于一个计算机来讲,最核心的就是CPU(Central Processing Unit,中央处理器)。这是这台计算机的大脑,所有的设备都围绕它展开。CPU和其他设备连接,要靠一种叫作总线(Bus)的东西,其实就是主板上密密麻麻的集成电路,总线东西组成了CPU和其他设备的高速通道。这些设备中,最重要的是内存(Memory)。因为单靠 CPU是没办法完成计算任务的,很多复杂的计算任务都需要将中间结果保存下来,然后基于中间结果进行进一步的计算。CPU本身没办法保存这么多中间结果,这就要依赖内存了。
平时我们说计算机的"计算"两个字,其实说的是两个方面,第一,进程和线程对于CPU的使用,第二,对于内存的管理。

CPU结构
CPU 其实也不是单纯的一块,它包括三个部分,运算单元、数据单元和控制单元。
-
运算单元:只管算,例如做加法、做位移等等,它不知道应该算哪些数据,运算结果应该放在哪里。
-
数据单元:暂时存放运算数据和运算结果
-
控制单元:控制单元是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令。指令会指导运算单元取出数据单元中的某几个数据,计算出个结果,然后放在数据单元的某个地方。
进程内存结构
执行的一个程序,需要依赖操作系统为其分配内存,用来加载binary file和存储程序运行的过程中要操作的数据和产生的计算结果,加载到内存中运行起来的程序在操作系统中被称为进程。不同的进程,会有独立的内存空间,互相隔离。
在进程的内存大致可以分为2块,"代码段","数据段"。
- 代码段:用来存储程序的二进制文件,里面包含CPU能识别的指令。
- 数据段:用来存放程序运行的过程中要操作的数据和产生的计算结果。
CPU内存运行程序原理
1 获取进程代码段中指令
CPU 的控制单元里面,有一个指令指针寄存器,它里面存放的是下一条指令在内存中的地址。控制单元会不停地将代码段的指令拿进来,先放入指令寄存器。
2 执行指令的执行
指令分两部分,一部分是做什么操作(例如是加法还是位移),一部分是操作哪些数据。要执行这条指令,就要把第一部分交给运算单元,第二部分交给数据单元。
-
1 数据单元 根据数据在进程数据段的地址,从进程内存数据段里读取计算需要的数据放入到数据寄存器里。
-
2 运算单元 执行运算。
-
3 控制单元,将做完运算产生的结果会暂存在数据单元中
-
4 最终,会有指令将数据写回进程内存中的数据段。

总线(Data Bus)
CPU 和内存来来回回传数据,靠的都是总线。其实总线上主要有两类数据,
数据总线:表示总线一次从物理内存中访问数据大小,位数越大一次拿的数据就越多,访问速度也就越快。
地址总线:也被称为“段”,表示操作系统一次访问数据大小,位数越多,能够访问的位置就越多,能管理的内存的范围也就越广。

网友评论