计算机系统的拓展阅读

1、计算机系统简介

  一个完整的计算机系统由硬件系统和软件系统构成。硬件系统是看得见、摸得着的物理部件或设备,如主板、显卡等,是计算机的一个实体部件。软件系统以程序或文档的形式存在,它以硬件为载体来传达信息,如QQ和Microsoft Word等。
  计算机的硬件系统由运算器、控制器、存储器、输入设备、输出设备五个基本部分组成,各部件之间用总线相连接,系统总线成为计算机内部传输各种信息的通道。运算器和控制器是计算机的核心,一般集成为中央处理器(CPU)。主机一般包括CPU和内存储器,通常放在主机箱中。存储器按用途可分为内存诸器(内存)和外存储器(外存),它们有严格的分工。外存是存放程序和数据的“仓库”,如硬盘、光盘、U盘等,可以长时间地保存大量信息。但程序必须调入内存方可执行,待处理的数据也只有进入内存后才能被程序加工。键盘、鼠标是常用的输入设备,打印机、显示器是常用的输出设备。
    软件系统着重解决如何管理和使用计算机的问题,没有任何软件支持的计算机称为“裸机”。软件一般可分为系统软件和应用软件两大类。系统软件包括操作系统、语言处理程序(汇编和编译程序等)、数据库管理系统等,如Windows10操作系统、C++编译程序都是系统软件。应用软件是为满足各种需求而编写的程序,如文字处理软件WPS、学籍管理系统、校园铃声系统等都是应用软件。
  计算机系统是硬件和软件有机结合的整体,随着技术的发展,系统中的同一功能既可以用硬件实现,也可以由软件来完成,从这个意义上说,硬件和软件在逻辑功能上是可以等效的。

2、计算机系统图文展示

按软硬件组成来展示:



按层次来展示:


    计算机系统的用户视角:

3、深入学习

(1)计算机系统复杂性研究的方法————层次、抽象、虚拟

层次

  下层是计算机系统的硬件。硬件被进行了相对的封装,它为软件提供了接口。比如:提供了指令集,软件可以利用这些指令集编写能够完成一定功能的软件。而软件又分成了应用软件和系统软件。系统软件利用硬件提供的接口完成自己的功能,比如:对系统当中的软硬件资源进行管理,给用户提供人机交互界面;应用软件使用系统软件提供的接口来调用系统软件的功能,来实现自己的功能。在这个过程中,我们把一个非常复杂的计算机系统用一个简单的层次结构来进行表述。通过封装,可以分层来实现一个复杂的计算机系统。当然,在分层的过程当中,要处理好各层之间的接口。

抽象

抽象:对于一个过程或者一件制品的某些细节有目的的隐藏,以便把其它方面、细节或者结构表达得更加清楚。----百度百科。
抽象:指高级的模型,和低级的实体相对。----维基百科。
抽象:隐藏系统中不重要的细节。----David Harris
  可以看到,更高级的模型是指在抽象层次上更高、更少的考虑实体或者是系统的实现细节。那么底层的实体系统,则更多得考虑了它的实现细节。一个系统,我们可以从不同的角度去进行抽象。抽象与分层是一体的,结果是虚拟化。

(2)从物理结构角度来看,计算机系统可以分成9层


依据是每一层典型的构建模块:

  • 最底层是物理层,电子设备依靠电子的移动来工作,可以用量子机制和麦克斯韦方程描述量子的移动。
  • 在电子元件层,利用电子在不同物质中的移动特征来构建电子元件,这些电子元件体现出来的特征可以用连接点或者是管脚它的电流和电压进行描述。
  • 模拟电路层,利用下层的接口进一步的构建放大器、滤波器等模拟电路部件,这些部件工作在连续的电压下。
  • 数字电路层,利用模拟电路元件构建与门、或门、非门。
    计算机组成原理主要研究逻辑层和微体系结构层,计算机主要部件的逻辑实现和主要部件之间的连接,来实现datapath和控制。

(3)从程序员的视角,计算机系统可以分成5层

  根据计算机系统的发展,最早出现的语言是机器语言。这个时候的机器是实际的硬件的机器。编程人员利用机器提供的指令集,使用机器语言,也就是二进制代码,直接对硬件机器进行编程。编写完毕的程序在计算机系统当中,在实际的硬件上直接进行执行。机器语言是由01代码构成的。这样的代码很难编程,很难使用。
  在此基础上,人们又提出了利用汇编语言进行编程。将机器语言符号化,不直接使用01代码。那么,编程的难度进一步降低。实际上,实际的机器或者硬件的机器,并不能直接识别由汇编语言编写的程序。汇编语言要在机器上正确的运行起来的话,那必须为这台机器提供汇编程序。把汇编语言编写的程序转化成机器语言程序,再在实际的计算机上跑。相当于在实际的这个硬件的机器上,外层又造了一层软件。这层软件完成了由汇编语言到机器语言的一个翻译。但是汇编语言是符号语言和机器语言之间的对应关系,基本上是一一对应的。一条机器语言的指令,对应了一条汇编语言的指令。编写起程序来,依然比较复杂,和人类的自然语言还有非常大的差距。
  后来,人们又提出了高级语言,利用高级语言进行编程。高级语言编写的程序,要想在计算机上能够正确执行的话,必须为高级语言提供编译程序或者是解释程序。由编译程序、解释程序生成可执行代码,在实际的机器上去执行。相当于在汇编语言的机器上,外面又加了一层软件。这台机器在高级语言程序员的眼中似乎就直接可以执行高级语言了,这是实际机器向上的发展。
  实际上,机器还在向下发展。一条机器语言指令,执行过程也是很复杂的。比如要把这条机器语言的指令从存储器当中把它取出来。要把这条指令的地址传送给存储器。要告诉存储器进行读,那么这条指令取出来以后,要送给控制器进行一码一码的结果,再控制,去操作数,再完成相应的操作。所以,这个执行过程也是非常复杂的。而且这些操作之间是有先后关系的。有些操作可以同时进行,有些操作是有时序的。必须等其它操作做完,或者是有些操作做完之后才能继续的去执行。这样的话,我们把一条机器指令,给它继续的进行细化。在每个时间点上能够执行的那些操作。把它放到一个微指令当中,执行之间有先后顺序的那些操作,把它放到不同的微指令当中。通过微指令的执行顺序来控制这些操作之间的先后顺序。这样的话,对于利用微指令编写微程序来实现机器语言指令的这些程序员来说,它所面对的指令就是一个微程序的机器。这台机器能够执行微指令,能够执行微程序。进而实现对机器语言指令、机器语言程序的操作运行。
  现在已经从程序员的角度把计算机分成4层。那么中间这部分还留了一个很大的这个空隙,这部分也是一层很大的机器,这层就是操作系统。

从另一顺序看:

  • 机器语言向上发展到高级语言程序员眼中似乎就可以直接运行语言了,实际上实际机器还要向下发展,一条机器语言指令执行过程也很复杂,比如执行一条机器语言指令:要把这条指令的地址传送给存储器,要告诉存储器进行读,取出来之后要送给控制器进行译码,译码的结果再控制操作器完成相应的操作。而且这些操作是有顺序的,把机器语言指令按在执行操作期间的顺序,放到不同的微指令当中。
  • 对通过编写微指令来编写微程序来实现机器语言的程序员来说,他所面对的指令就是一个微程序的机器,这个机器能够执行微指令、微程序进而实现对机器语言指令或程序的操作运行。
  • 汇编的操作系统也是一层机器,汇编程序员可以利用操作系统提供的功能进行编程,操作系统可以管理软硬件的资源,比如汇编语言程序最后都有MOV AH4CH,@21H 这两条指令完成了汇编语言应用程序的退出,返回了DOS系统。实际上是汇编语言程序调用了DOS系统当中提供的中断功能实现了程序的退出。

(4)计算机组成与计算机体系结构区别?

  计算机系统结构定义了计算机系统的软硬件的交界面,对功能由软件还是硬件实现进行了分配,定义了哪些功能由软件来实现,哪些功能由硬件来实现,提供了上层软件编写时和硬件交互的接口。计算机系统结构是,程序员(按层次分为很多种)所见到的计算机系统的属性(例如机器语言程序员编写一个能够在计算机硬件系统上正确执行的程序他所必须了解的计算机系统的属性,比如说指令集、寄存器的文件组织、内存器的编址单位、以及指令集能对哪些类型的数据操作)概念性的结构和功能特点。
  计算机组成是,实现计算机体系结构所体现的属性(比如具体指令的实现,例如在这个指令集当中有无乘法指令,能够乘法操作的数据类型,数据的长度,这些都是在体系结构中做的规定,计算机组成利用这些规定对乘法逻辑实现)。

对比而言:

  计算机体系结构:(有无乘法指令的问题) 机器语言程序员所见到的计算机系统的属性概念性的结构与功能特性。(指令系统、数据类型、寻址技术、I/O机理)机器语言程序员所见到的计算机系统的属性指的是:机器语言程序员要想编写一个能够在计算机硬件系统上正确执行的程序,他所必须了解的计算机系统的属性。比如:指令集、寄存器文件的组织。内存的编制单位以及指令集能够对哪些类型的数据进行操作。这些数据,在专业术语上,被称为“数据表示”。
  计算机组成:(如何实现乘法指令的问题) 是实现计算机体系结构所体现的属性(具体指令的实现)。例如:在这个指令集当中有没有乘法指令,能够对什么类型的数据做乘法操作。数据的长度是多长。这些内容都是在体系结构当中做的规定。计算机组成的设计者则利用上面的规定,来研究如何实现乘法指令,这个实现指的就是逻辑实现。

posted @   gdyyx  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示