
🌈 say-fall:个人主页 🚀 专栏:《手把手教你学会C++》 | 《C语言从零开始到精通》 | 《数据结构与算法》 | 《小游戏与项目》 💪 格言:做好你自己,才能吸引更多人,与他们共赢,这才是最好的成长方式。
程序员或者电子从业者在学习计算机编程语言的时候经常会遇到一些底层的原理,而这些原理也是随着处理器的发展而发展形成的,本专栏会以C语言为例子,讲解微型计算机的组成原理,本篇文章主要是讲解一下微机运行总概
计算机中存储的程序都是以01的二进制码存储的,而我们现在的程序都是用计算机不能直接识别的高级语言编写的,下面以C语言的编译过程为例,讲解从源程序到计算机能够执行的程序的过程:
test.c → test.i预处理程序会读取头文件中的内容,然后将头文件内容插入test.c文件的过程,插入后源文件会变为test.i文件
#include头文件:把<stdio.h>的内容直接复制到main.c中;#define宏:把代码中的宏全部替换成对应值;#ifdef/#if):根据条件保留 / 删除对应代码;#line等调试信息(方便后续报错定位行号)。test.i → test.s编译器将刚才的test.i文件编译为汇编文件,所有的语言编译器都会将高级语言编译为相同的汇编语言
3. 汇编:
test.s → test.o/obj汇编会将汇编语言变为计算机可读取的计算机语言指令,打包成一种或可重定位目标文件,将结果保存在目标文件(Hello.o/.obj)
4. 连接:
test.o/obj → test.exe头文件中包含一些函数,将头文件中的函数(如printf.o)连接到test.o中,连接程序以后就得到了计算机可执行的文件test.exe

CPU是执行存储在内存中的指令的引擎,是整个计算机系统的核心,由运算器、控制器和一组寄存器组成。 运算器的主要组成部分是ALU(算术逻辑单元),主要作用是在控制信号下进行运算(执行指令)。 寄存器组是由若干个一字节的寄存器组成,其中有一个关键寄存器是PC(程序计数器),在任何时候,PC中都是内存中机器指令的地址。 控制器是整个CPU的指挥控制中心。

RAM,也称运行内存或者主存,是程序运行时的占用空间。也称主存,是一个临时存储设备,在CPU运行时存放指令和数据。内存可以理解为一个物理的线性表,将单元编码,每个单元都是一个独立的地址,每个单元中的一字节数据称为单元内容。 8bit = 1byte 1024byte = 1 MB
总线是贯穿整个系统的一组电子通道,是系统中各部件传输地址、数据和控制信息的公共通路。总线按照字(word)传送,一字中的字节数(字长)是一个基本的系统参数。总线具有公用性,但是某一时刻只能有一个部件或者设备进行信息传送。
类似于键盘、鼠标、显示器和外部磁盘等设备,能够通过I/O口与计算机通信的设备称为I/O设备,需要通过I/O接口与主线进行连接,但是计算机与这些外部设备不能直接连接和信息交换,需要适配器或者控制器来与总线相连接。控制器是外部设备或者是主板上的芯片组,适配器一般是插在拓展槽上的卡。

计算机程序是由一条一条的指令组成的,计算机执行程序的过程就是读取指令的过程,下面介绍指令的执行过程:

总线的条数称为总线宽度,一般为8、16、32条,称为8、16、32位,总线宽度决定了一次传送二进制码的位数,是系统整体性能的关键因素之一 1. 数据总线:是传送数据用的总线,具有双向性(CPU → 其他设备 and 其他设备 → CPU) 2. 地址总线:用来传送地址信息,因为所有的地址信息都是由处理器产生的,所以他的传送方向是单向的(CPU → 其他设备),即总是去某个地址取信息/写信息 3. 控制总线:传送控制信号,控制信号的作用是系统内各部件之间发送操作命令和请求、响应、定时信号。 总体上来说,传送控制信号是双向的,但就某一具体信号,他的传送方向是单向的。
微机系统的各种操作从本质上来讲都是总线操作(传输信息)。总线操作的特点是:在任意时刻,总线上只允许一对设备进行信息交换,多个设备进行信息交换时,只能分时使用。 分时使用,即将总线时间分为若干段,每一个时间段完成一次设备间的信息交换,这个时间段称之为一个总线周期或者数据传送周期。
总线的基本功能包括:数据传送、仲裁控制、总线驱动和出错处理
⼀个完整的计算机系统应该是由三层结构组成的,包括硬件、软件和操作系统。 操作系统是⼀组控制和管理计算机软、硬件资源、为⽤⼾提供便捷使⽤计算机的程序集合。 是应⽤程序和硬件之间插⼊的⼀层软件,是⽤⼾和计算机之间进⾏“交流”的界⾯。

操作系统有两个基本功能:管理系统资源、为用户使用计算机提供友好界面 计算机主要通过进程、虚拟内存和文件来实现上述两个功能:
