Skip to main content

图解计算机原理

· 9 min read
王大水

牛顿曾经说过:如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。(If I have seen further, it is by standing on the shoulders of giants.)

计算机硬件

拆开机箱,能看到什么呢?

主板、硬盘、内存、显卡,最核心是 CPU

维基百科:中央处理器 (英语:Central Processing Unit,缩写:CPU)是计算机的主要设备之一,功能主要是 解释计算机指令以及处理计算机软件中的数据。1970年代以前,中央处理器由多个独立单元构成,后来发展出由集成电路制造的中央处理器,这些高度收缩的器件就是所谓的微处理器,其中分出的中央处理器最为复杂的电路可以做成单一微小功能强大的单元,也就是所谓的核心。

tip

总之,CPU 会执行一条条的 指令

指令可能是这个样子:

操作码|----------地址----------
info

由于计算机只能识别 二进制,所以对应的 二进制指令 应该是这样的:000010|00010110000101101011001010

CPU 会连续的执行 指令 从而进行 逻辑运算 操作,然后将计算结果通过 显示器 展示出来,同时会接收 鼠标和键盘 的输入信息,执行下一步的指令。

最终,一个完整的计算机工作流程就是这样的:

  • 硬盘:存储量大,数据不会丢失,但读写速度慢,所以程序指令通常首先存储在硬盘;
  • 内存:存储量小,关机后数据会丢失,但是读写速度快,所以 CPU 在执行 指令 之前,通常会将程序指令从 硬盘 读取至 内存
tip

如果执行的程序比较大,超过了内存的容量,那么 CPU 就无法一次将所有的程序读取至内存, 只能边执行的同时,再去硬盘读取部分数据,就会导致程序运行变慢;所以我们买手机或者电脑的时候,都会尽可能买大一点的内存(手机中叫运行内存)。

操作系统

在了解了计算机硬件工作的流程之后,我明白了计算机是通过 CPU 执行 指令 来进行工作的,那么问题来了,这些 指令000010|00010110000101101011001010)是从哪来的?

这就是早期程序员要干的事情。

二进制指令也被称为 机器语言,虽然 CPU 可以直接执行,但对于人类来说,使用机器语言编程过于残暴了。

于是人们使用文本来代替二进制指令,比如 000010 可以用 ADD 来替代,这就是 汇编语言

DATA SEGMENT  
BUF DB 'HELLO WORLD!'
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX

LEA DX,BUF

MOV AH,09H
INT 21H

MOV AH,4CH
INT 21H

CODE ENDS
END START
tip

汇编语言的指令和二进制指令是 一一对应 的,在编写完成需要计算机执行的时候,使用 汇编器 将汇编语言逐条编译成 二进制指令

好了,在了解了一点点汇编语言之后,还是回到本章的主题 - 操作系统;先来看看,在没有操作系统的情况下。

写好的代码指令会直接送到 计算机硬件 去执行,但是这货 非常难沟通,脾气暴躁,稍有不顺就可能罢工!

所以,我们就需要一个 中间人,来专门负责和计算机硬件打交道,当我们需要使用计算机的时候,只需要和这个中间人沟通就好!

info

操作系统本质上也是一段写好的程序指令,每次开机后都会自动加载运行,通过轮询的方式,接收用户的指令,调用计算机硬件资源。

说到操作系统,就不能不提大名鼎鼎的 Unix,最初的 Unix 是使用 汇编语言 编写,但由于性能不佳,大神们于 1971 年发明了里程碑式的编程语言 C语言,然后在 1973 年用 C语言 又重写了 Unix

C 语言 Hello world
#include <stdio.h>

int main(void) {
printf("Hello, world!\n");
return 0;
}
info

由于早期计算机主要应用于学术机构或者大型企业,所以 Unix 系统并不为大家所熟知,大家更熟悉的可能是 Windows 操作系统。

进入 80 年后,随着个人计算机(PC)开始普及,两大操作系统开始崛起,微软的 MS-DOS 和苹果的 Mac OS

caution

注意,此时的操作系统还都是基于 命令行 的,并没有为后人所熟知的 图形化操作界面

最早的 图形化用户界面(GUI) 是由施乐开发,但施乐是研发单位而不是商业单位;苹果极为重视图形用户界面,也发布了 Mac OS X,但最终风靡全球的图形化操作系统却是微软的 Windows

图形化操作系统的兴起,不仅让微软赚的 盆满钵满,同时也改变了人们对计算机形态的认知,从一个专业的工具逐步变得 平民化、娱乐化

info

1991 年,Linus Benedict Torvalds 在赫尔辛基大学发布了 Linux,由于和 Unix 有渊源,所以也称为 类 Unix 操作系统Linux 走的是开源路线,更偏重于技术,因此 Linux 系统非常适合用于学习计算机编程。

2007 年,苹果公司发布第一代 iPhone,终于在移动互联网时代扳回一城。至此,手机操作系统,基本是 iOSAndroid 的天下。

结语

计算机发展至今,已经非常成熟,无论我们是用计算机来办公、娱乐或者编程,都不需要直接和硬件打交道,操作系统本身已经帮我们解决了绝大部分的事情;尤其是编程,操作系统已经把功能封装成了一个个的接口,称为 应用程序接口(API),所以应用程序编程,更多的时候就像 搭积木 一样。