计算机系统全貌概览 全景图

Posted 无私故成其私

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机系统全貌概览 全景图相关的知识,希望对你有一定的参考价值。

前言

我认为了解计算机系统的发展对于理解今天的计算机系统是如何运作的将会有帮助,其内涵就是计算这一概念的表达及其操作方式的发展。
计算系统的设计一定是由简单到复杂,那么这一过程是如何推进的?在各个阶段有什么样的特征?最后,计算系统的功能是如何越来越丰富以至深刻影响当今世界的发展?
就我而言,我最关心的是:当前精妙的计算系统是如何发展来的。

1 计算(机)系统


计算机是一种设备,而计算(机)系统是一种动态实体,用于解决问题以及与它所处的环境进行交互。计算(机)系统由硬件、软件和它们管理的数据构成。计算机硬件是构成机器及其附件(包括机箱、电路板、芯片、电线、硬盘驱动器、键盘、显示器、打印机等)的物理元件集合。计算机软件是提供计算机执行的指令的程序集和。计算机系统的核心是它管理的信息。如果没有数据,硬件和软件都毫无用处。


事实上,计算机真正所做的只是非常简单的任务,它盲目、快速地执行这些任务,而许多简单的任务组织成较大的复杂任务。当把各个计算机分层组织在一起时,让它们各自扮演自己的角色,这种简单组合产生的结果却是惊人的。

1.1 计算(机)系统的分层

  1. 硬件层由计算机系统的物理硬件组成。计算机硬件包括的设备有门和电路,它们都按照基本原理控制电流。正是这些核心电路使专用的硬件元件(如计算机的中央处理器(CPU)和存储器)得以运转。

  2. 程序设计层负责处理软件、用于实现计算的指令以及管理数据。

  3. 操作系统(OS)管理计算机资源,使我们与计算机系统进行交互,管理硬件设备、程序和数据间的交互方式。了解操作系统为我们做了什么通常是理解计算机的关键。

  4. 之前(内部)的分层重点在于使计算机系统运转,而应用层的重点则是用计算机解决真实世界的问题。我们通过运行应用程序在其他领域利用计算机的能力。

  5. 我们使用计算机技术进行通信,通信层是计算系统操作的基础层。万维网(World Wide Web)使通信变得相对容易,它从根本上改变了计算机的使用价值。

有时,我们很容易过度关注细节而失去全局观念。所有的细节都只是为了给大整体贡献一个特定的部分。每前进一步,你都会为它们如此精妙而吃惊不已。

1.2 抽象

所谓抽象,是一种心理模型,是一种思考事情的方式,它删除或隐藏了复杂的细节。抽象只保留实现目标所必需的信息,而不去考虑那些使问题复杂化的不必要的信息。当我们与计算机的一个分层打交道时,没有必要考虑其它分层的细节。例如,在编写程序时,我们不必关心硬件是如何执行指令的。

信息隐藏是和抽象相关的概念。为了获取程序中其他部分的信息,计算机程序员通常会尽可能降低对程序中某一部分的需求或减少这一部分的功能。这种技术将程序段各自分离,也就减少了错误,并使得每一块程序段更易理解。抽象更关注于外部视图——机器的运作方式以及我们与这些机器的交互形式。信息隐藏和抽象就像同一枚硬币的两面,尽管看似不同,却密不可分。

信息隐藏(information hiding):一种使程序段独立的技术,通过削减一个代码段的功能来获取其它代码段的信息。

抽象艺术是抽象的另一个例子。一幅抽象画确实表示某些东西,但绝不会陷于事实细节的泥淖。事实上,真实的细节反而会妨碍画家表达那些他们认为重要的问题。

2 计算的历史

2.1 计算硬件简史

1.第一代商用计算机(从约1951~1959年)使用真空管存储信息。
在这一代将要结束时,出现了磁带驱动器。磁带是顺序存储设备,也就是说,必须按照线性顺序访问磁带上的数据。
计算器存储器外部的存储设备叫做辅助存储设备。磁带是第一种辅助存储设备。输入设备、输出设备和辅助存储设备一起构成了外围设备。

2.晶体管的出现标志着第二代(1959~1965)商用计算机的诞生。
磁盘 作为一种新的辅助存储设备出现在第二代计算机硬件中。磁盘比磁带快,因为使用数据项在磁盘上的位置就可以直接访问它。访问磁带上的一个数据项时,必须先访问这个数据项之前的所有数据,而磁盘上的数据都有位置标识符,我们称之为地址。磁盘的读/写头可以被直接送到磁盘上存储所需信息的特定位置。

3.第三代计算机(1965~1971)的特征是集成电路(IC)
这是一种具有晶体管和其它元件以及它们的连线的硅片。辅助存储设备仍然是必须的,因为晶体管存储器不稳定,也就是说,断电之后,所有的信息都将消失。

4.大规模集成化是第四代计算机(1971年至今)的特征。
20世纪70年代末,词汇表中出现了个人计算机(PC)这个词。微型计算机已经变得非常便宜,几乎每个人都可以有一个。

5.并行计算
20世纪80年代末,新的机器体系结构出现了,使用并行体系结构的计算机依靠的是一套互相连接的中央处理器。一种并行机器的组织结构是所有处理器共享同一个存储单元;另一种组织结构是每个中央处理器具有自己的本地存储,与其它处理器通过高速内部网进行通信。

6.连网
20世纪80年代,多用户大型机的概念被小型机器连接成的网络代替,这些小型机器通过连网共享打印机、软件和数据等资源。
**因特网(Internet)**使用包交换 的方法共享信息。但是,Internet由分布在世界各地的不同网络组成,这些网络之间采用通用的TCP/IP(传输控制协议/网际协议,Transmission-Control Protocol/Internet Protocol)协议通信。

2.2 计算软件简史

了解软件进化的方式对理解软件在现代计算系统中是如何运行的至关重要。

1.第一代软件(1951~1959)
第一代程序是用机器语言编写的。
所谓机器语言,即内置在计算机电路中的指令。即使是对两个数字求和这样的小任务也要动用3条二进制指令(0和1),程序员必须记住每种二进制数字的组合表示什么。
由于编写机器代码非常乏味,有些程序员就开发了一些工具辅助程序设计。因此,第一代人工程序设计语言出现了。这些语言被称为汇编语言,它们使用助记忆码表示每条机器语言指令。
由于每个程序在计算机上执行时采用的最终形式都是机器语言,所以汇编语言的开发者还创建了一种翻译程序,把用汇编语言编写的程序翻译成机器代码。一种称为汇编器的程序读取每条用助记忆码编写的程序指令,把它翻译成等价的机器语言。这些助记忆码都是缩写码,有时难以理解,但它们比二进制数字串用起来容易得多。
那些编写辅助工具的程序员简化了他人的程序设计,他们是最初的系统程序员。因此,即使在第一代计算机软件中,也存在编写工具的程序员和使用工具的程序员这样的区分。
汇编语言是程序员和机器硬件之间的缓冲器。

2.第二代软件(1959~1965)
当硬件变得更强大时,就需要更强大的工具有效地使用它们。使用高级语言,程序员就能够用类似于英语的语句编写指令。
高级语言的出现为在多台计算机上运行同一个程序提供工具。每种高级语言都有配套的翻译程序,这种翻译程序可以把高级语言编写的语句翻译成等价的机器码指令。这样的翻译程序被称作编译器,它还用来检查高级语言的语法是否被正确执行。
在第二代软件末期,系统程序员编写诸如汇编器和编译器这样的工具,使用这些工具编写程序的人被称为应用程序员。随着包围硬件的软件变得越来越复杂,应用程序员离计算机硬件越来越远了。

3.第三代软件(1965~1971)
计算机在等待运算器准备下一个作业时,无所事事。解决方法是使所有计算机资源处于计算机的控制中,也就是说,要编写一种程序来决定何时运行什么程序。这种程序被称为操作系统
在前两代软件时期,实用程序用于处理频繁执行的任务。装入器 把程序载入内存,连接器 则把大型程序连接在一起。第三代软件改进了这些实用程序,使它们处于操作系统的引导之下。实用程序、操作系统和语言翻译程序(汇编器和编译器)构成了系统软件
**起初,计算机用户和程序员是一体的。**在第一代软件末期,为其他程序员编写工具的程序的出现带来了系统程序员和应用程序员的区分。但是,程序员仍然是用户。在第三代软件中,系统程序员为其他人编写软件工具。计算机用户的概念骤然出现了,他们不再是传统意义上的程序员。
**用户与硬件的距离逐渐加大。硬件已演化成整个系统的一小部分。**由硬件、软件和它们管理的数据构成的计算机系统出现了。虽然程序员们有时仍然需要使用低级计算机,但是可以获得的高级工具极大地改变了形式。


4.第四代软件(1971~1989)
20世纪70年代出现了更好的程序设计技术,即结构化程序设计方法,这是一种有逻辑,有规则的程序设计方法。
更好、更强大的操作系统也被开发出来了。AT&T公司作为研究工具而开发的UNIX系统成了许多大学的标准设置。Apple公司在Macintosh机的操作系统中引入了鼠标的概念和点击式的图形界面,从而带来了计算机人机交互的重大变革。
可以买到高品质的、价格合理的应用程序软件包。这些程序可以让一个没有计算机经验的用户实现一项特定的任务。

5.第五代软件(1990年至今)
第五代中有三个著名实践,即在计算机软件业具有主导地位的Microsoft公司的崛起,面向对象的设计和编程方法的出现以及万维网(World Wide Web)的普及。
面向对象的程序设计方法成为大型程序设计项目的首选。结构化设计基于任务的层次划分,而面向对象的设计则基于数据对象的层次划分。
虽然Internet已经存在几十年了,但是万维网的出现让使用Internet在世界范围内共享信息变得容易了。
**第五代软件最重要的特征是用户概念的改变。**首先出现的用户是程序员,他们编写程序来解决自己或他人的问题。接下来出现的用户是系统程序员,他们为其他程序员编写越来越复杂的工具。到20世纪70年代早期,应用程序员使用这些复杂的工具为非程序员编写应用程序。随着个人计算机、计算机游戏、教育程序和用户友好的软件包的出现,许多人成为计算机用户。万维网的出现使网上冲浪成了一种娱乐方式,所以更多的人成了计算机用户。

在硬件和软件的简史中,我们把重点放在传统的计算机和计算系统上。与这些历史并驾齐驱的是使用集成电路(或芯片)来运行或控制烤面包机、汽车、重病特别护理监控器和卫星的历史。这种计算技术称为嵌入式系统。虽然芯片不是我们要在本书中研究的真正意义上的计算机,但它们确实是过去55年中技术革命的产物。

以上是关于计算机系统全貌概览 全景图的主要内容,如果未能解决你的问题,请参考以下文章

计算机系统全貌概览 全景图

计算机系统全貌概览 全景图

AQS源码剖析第一篇---全貌概览

NINANCE尼南斯:Web3.0生态全景概览

Linux Kernel TCP/IP Stack — Overview

Linux Kernel TCP/IP Stack — Overview