所有接触过的人应该都了解,计算机由两大部分组成:硬件、软件。比方说现在个人电脑、智能手机都可以称为一个计算机,只不过硬件组成方式不太一样而已。
一、硬件
1、冯·诺依曼体系结构
无论是个人电脑、服务器、智能手机,都遵循着同一个“计算机”的抽象概念。计算机祖师爷之一冯·诺依曼提出的冯·诺依曼体系结构,也叫存储程序计算机。
如下图所示:
任何一台计算机的部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的。
鼠标、键盘、触摸板等都可以归为输入设备
硬盘、内存、各类高级缓存等都可以归为存储器,只不过读取速度和造价成本不一样。
显示器等归为输出设备
智能手机的触摸屏既是输入设备也是输出设备:触摸功能用于输出,显示功能用于输出
2、典型系统的硬件组成
各组成部分是如何串联运作的呢?我们继续深入
看下图:
一个典型系统的硬件组成,不要被图片吓到,其实只是比上边介绍的抽象模型更细化了一些,但还是那几个部分。
处理器:
中央处理单元(CPU),简称处理器,对应抽象模型中的控制器和运算器。
处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。
在任何时候PC都指向主存中的某条机器语言的指令。
处理器一直在不断的执行程序计数器指向的指令,执行完更新程序计数器,指向下一条指令。
主存:
主存是一个临时储存设备,在处理器执行程序时,用来存放程序和程序处理的数据。
从物理上来说,主存是由一组动态随机存储存储器(DRAM)芯片组成的。
从逻辑上来说,存储器是一个线性的字节数组,每个字节都有其唯一的地址。
I/O设备:
即输入/输出设备,键盘、鼠标、显示器等
总线:
贯穿整个系统的一组电子管道,称作总线。负责在各个部件间传递数据。通常总线被设计成传送定长的字节块,也就是字(word)。字中的字节数(字长)是一个基本的系统参数。比如现在存在的32位、64位系统,对应的机器字长是4字节、8字节。
CPU执行命令的过程简单理解为:
加载:从主存复制一个字节或一个字到寄存器
操作:把两个寄存器的内容复制到ALU,ALU对这两个字做算术运算,并将结果存放到一个寄存器中
存储:从寄存器上复制计算结果到主存的某个位置
跳转:从指令中抽取一条指令,并复制到程序计数器(PC)中。
3、高速缓存
通过上边的描述可知,CPU的主要执行操作就是从主存复制数据计算完成后再复制到主存。但因为CPU的计算速度与主存的读取和写入速度完全不是一个量级,为了提高计算机的运行速度,加入了高速缓存存储器的概念。
4、存储设备层次结构
根据机械原理,较大的存储设备要比较小的存储设备运行的慢,而快速设备的造价远高于同类的低速设备。
比如说,一个典型系统上的磁盘驱动器可能比主存大1000倍不止,但读取数据的开销要比主存的开销大1000万倍。
为了解决各层次之间的读取读取差及平衡造假成本问题,因此产生了存储设备的多层次结构。如下:
其中各层次结构的读取速度对比如下:
二、软件
计算机程序,都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。
操作系统
但我们的应用程序不能直接访问各硬件设备,不然会因为混乱。他们都依靠操作系统来提供服务。
我们可以把操作系统看成是应用程序和硬件之间插入的一层软件,所有的应用程序对硬件的操作都必须通过操作系统。
操作系统的两大主要功能:
1. 防止硬件被失控的应用程序滥用
2. 向应用程序提供简单一致的机制来控制复杂而又大不相同的各种硬件设备。
操作系统如何实现以上两个功能呢?
操作系统将硬件设备抽象化为:文件、虚拟内容和进程。
* 文件: 对I/O设备的抽象表示。各种输入、输出都可以抽象为文件,包括网络等。
* 虚拟内存: 对主存和磁盘I/O设备的抽象表示。
* 进程: 对处理器、主存和I/O设备的抽象表示。
通过以上三种抽象表示,应用程序可以实现统一调用,完全可以忽略底层的硬件细节。操作系统又可以达到统一控制的目的。
进程
进程是操作系统对一个正在运行的程序的一种抽象。使得应用程序形成一种假象,就好像系统上只有自己一个应用程序在运行一样。程序看上去独占地使用处理器、主存和I/O设备。
在一个系统上可以同时运行多个进程,而每个进程都好像自己独占硬件,即并发运行:一个进程的指令和另一个进程的指令是交错执行的。
以上一个独立的计算机系统基本介绍完了。下边扩展一些其他知识:
虚拟机
通过以上的介绍,大家印象中的计算机应该就是一个实实在在存在,看得见摸得着的机器。
那什么是虚拟机?是虚幻的吗?
这要提到计算机科学中一个非常重要的概念:抽象
上边介绍操作系统的时候我们已经提到了三种抽象:文件、虚拟内存和进程。通过以上的抽象概念,应用程序完全可以忽略硬件的具体细节。只要针对三个抽象概念操作就可以了。
虚拟机:它提供对整个计算机的抽象,包括操作系统,以及各硬件设备:处理器、主存和I/O设备。
因为虚拟机的诞生,一台实实在在存在的高配置物理机,就可以虚拟化为多个不同配置,不同操作系统的虚拟机,方便部署不同类型的应用程序,做了进一步的隔离。一台物理主机上的虚拟机共享主机的硬件设备,但又像是一个完全独立的计算机。
网络
一台计算机是一个孤立的硬件和软件的集合体,现代系统通过网络将他们连接在一起。
而从一个单独的系统来看,网络可视为一个I/O设备。系统可以从主存复制数据到网络,经过网络流转到达另外一台机器,另外一台机器将数据从网络复制到主存,经过CPU计算后,再将数据从主存复制到网络,返还给原机器。
如下图:
小结
* 计算机系统是由硬件和系统软件组成,他们共同协作以运行应用程序。
* 为了解决CPU和存储之间的速度差问题,计算机加入的高速缓存的概念,并实现的多层次存储架构。
* 操作系统是应用程序和硬件之间的媒介。提供了三种基本的抽象。
* 虚拟机是计算机系统又一抽象概念的体现。
* 网络提供了计算机系统之间通信的手段,从单系统角度看,网络就是一种I/O设备。
领取专属 10元无门槛券
私享最新 技术干货