计组学习1--计算机系统概论
写在最前面:
本节内容主要以概论为主,不需要死记硬背,为以后学习建立框架。同时在本节标注好学习重点、难点。
课程相关与笔记整理
计算机发展历程(简略介绍)
国外计算机发展概括
大概可以分为4个阶段:
摩尔定律
1 | “当价格不变时,集成电路上可容纳的晶体管数量大约18~24个月翻一番,性能也将提升一倍。” |
近年来,摩尔定律已经放缓,但是其对计算机发展的指导意义难以忽略:
- (1)单个芯片集成度提高后,其成本变化不大,因此总体成本明显下降;
- (2)高集成度的芯片中,电路间的距离更近,其连线更短,工作速度可以更高;
- (3)增加了芯片内部的连线,从而减少了外部连线,可靠性得以提高;
- (4)计算机体积越来越小,减少了电能的消耗,适应性更好。
我国计算机发展历程
计算机系统组成
一台完整的计算机包括
硬件
和软件
两部分,另外还有一部分固化的软件称为固件(Firmware)
,固件兼具软件和硬件的特性,常见的如个人计算机中的BIOS
。硬件与软件结合才能使计算机正常运行并发挥作用。因此,对计算机的理解不能仅局限于硬件部分,应该把它看作一个包含软件系统与硬件系统的完整系统。
计算机组成原理
这么课程侧重于硬件层面,而操作系统
这门课程侧重于软件层次,二者互补、相互加深理解。
下面我们就从整体上介绍一下计算机结构,为之后的这两门课打好基础。
计算机硬件系统
计算机硬件系统
是构成计算机系统的电子线路和电子元件等物理设备的总称。硬件是构成计算机的物质基础,是计算机系统的核心。
冯诺依曼的贡献
在计算机的发展史上,冯诺依曼
可以说是一个里程碑式的人物,他为计算机的设计与优化奠定了基调。其主要贡献有以下三点:
- 数制基础。提出以二进制作为计算机的数制基础。
- 存储程序思想。将解题的步骤编制成程序,然后将程序和运行程序所需要的数据以二进制的形式存放到存储器中。
- 程序控制思想。计算机中的控制器逐条取出存储器中的指令并按顺序执行,控制各功能部件进行相应的操作,完成数据的加工处理。
硬件系统结构与功能分析
根据冯诺依曼的设计思想,可以得到一个“简单的”硬件机构:
计算机的硬件系统
包含运算器
、控制器
、存储器
、输入设备
和输出设备
五大部件。
- 运算器与控制器又合称为
中央处理器(CentralProcessingUnit,CPU)
- CPU和存储器通常称为
主机(Host)
; - 输入设备和输出设备统称为
输入输出设备
,因为它们位于主机的外部,所以有时也称为外部设备(外设)
下面我们将从硬件层面简要介绍一下这些部件的功能:
部件1:存储器
存储器的主要功能是存放程序和数据。程序是计算机操作的依据,数据是计算机操作的对象。不管是程序还是数据,在存储器中都是用二进制形式表示的.
哇卡哇卡:在操作系统中,我们在学习内存管理时就涉及到存储器的使用,不过那时我们是从软件层次介绍的:段页式、地址翻译
。下面我们会从硬件层次进行介绍。
目前,计算机的主存储器都是半导体存储器
。存储体由许多个存储单元组成,信息按单元存放。存储单元按某种顺序编号,每个存储单元都对应一个编号,称为单元地址。存储单元地址与存储在其中的信息一一对应。每个存储单元的单元地址只有一个且固定不变,而存储在其中的信息则可改变。下图所示为一个存储器的组成框图。
在此篇博客的专题中第一篇博客我们简要介绍过存储器的组成,在那里,我们从最底层的门电路出发,到锁存器、寄存器,一步步抽象封装,最后得到一个完整的存储器结构。
向存储单元存入或从存储单元取出信息,都称为访问存储器。
访问存储器时,先由地址译码器
将送来的单元地址进行译码,找到相应的存储单元;然后由读/写控制电路
确定访问存储器的方式,即取出(读)或存入(写)
;再按规定的方式完成取出或存入操作。与存储器有关的部件还有地址总线
与数据总线
。它们分别为访问存储器传递地址信息和数据信息,地址总线是单向的,数据总线是双向的。
有关存储器的详细内容将在第4章讲述。
部件2:运算器
运算器
是一种用于信息加工处理的部件,它对数据进行算术运算和逻辑运算。算术运算是按照算术规则进行的加、减、乘、除等运算。逻辑运算一般泛指非算术运算,如比较、移位、逻辑加、逻辑乘、逻辑取反及异或等。
运算器
通常由算术逻辑单元(ALU)
和一系列寄存器
组成。上图所示为一个最简单的运算器示意图。ALU
(算术逻辑单元)是具体完成算术与逻辑运算的部件;寄存器用于存放运算操作数;累加器除存放运算操作数外,在连续运算中,还用于存放中间结果和最后结果,累加器也由此而得名。
哇卡哇卡:
运算器=ALU+寄存器
,前者进行运算、后者存储数据
一般将运算器一次运算能处理的二进制位数称为机器字长
,它是计算机的重要性能指标。常用的计算机字长有8位、16位、32位及64位。寄存器、累加器及存储单元的长度一般与机器字长相等。现代计算机的运算器具有多个寄存器,如8个、16个、32个,多的有上百个,这些寄存器统称为通用寄存器组。设置通用寄存器组可以减少访问存储器的次数,提高运算器的运算速度。
有关运算器的详细内容将在
第3章
中叙述。
部件3:控制器
控制器
是整个计算机的指挥中心,它可使计算机各部件协调的工作。控制器工作的实质就是解释程序
,它每次从存储器读取一条指令,经过分析译码产生一串操作命令,再发给各功能部件控制各部件动作,使整个机器连续地、有条不紊的运行,以实现指令和程序的功能。
计算机中有两股信息
在流动:一股是控制流信息
,即操作命令,它分散流向各个功能部件;另一股是数据流信息
,它受控制流信息的控制,从一个部件流向另一个部件,在流动的过程中被相应的部件加工处理。简单的说,控制流就像菜谱、数据流就是食材,厨师根据菜谱的指示将食材放到对应的厨具并进行处理,得到最终的菜肴。
控制流信息
的发源地是控制器
。控制器产生控制流信息的依据来自以下3个方面:
- 一是存放在指令寄存器中的机器指令,它是计算机操作的主要依据。
- 二是状态寄存器,用于存放反映计算机运行的状态信息。计算机在运行过程中,会根据各部件的即时状态,决定下一步操作是按顺序执行指令还是按分支转移执行指令。
- 三是时序电路,它能产生各种时序信号,使控制器的操作命令被有序地发送出去,以保证整个机器协调的工作。
哇卡哇卡:运算器和控制器共同构成CPU,在操作系统和计算机组成原理中,关于CPU的相关内容都是
重点、难点
,就行人类的大脑一样——复杂而关键。
关于指令系统和控制器的详细内容将分别在
第5章和第6章
讲述。
部件4:输入输出设备
输入设备
就是将信息输入计算机的外部设备,它将人们熟悉的信息形式转换成计算机能接收并识别的信息形式。
输出设备
就是将计算机运算结果转换成人们和其他设备能接收和识别的信息形式的设备,如字符、文字、图形、图像、声音等。
输出设备与输入设备一样,需要通过接口与主机连接。
关于输入输出系统和输入输出设备的详细内容将在
第9章
讲述。
部件5:总线
总线(Bus)
是连接两个或多个设备(部件)的公共信息通路。它主要由数据线
、地址线
和控制线
组成。CPU连接计算机中各主要部件的总线称为系统总线。基于单总线结构的系统互连如下图所示:
关于总线的相关内容将在
第八章
介绍。
计算机软件系统
一台计算机中
全部程序的集合
统称为这台计算机的软件系统
。
计算机软件按其功能分成应用软件
和系统软件
两大类:
- 应用软件是用户为解决某种应用问题而编制的一些程序,如科学计算程序、自动控制程序、数据处理程序、情报检索程序等。
- 系统软件用于对计算机系统进行
管理、调度、监视和服务
等,其目的是方便用户、提高计算机使用效率、扩充系统的功能。
注:我们下面主要介绍的是系统软件,其主要功能是帮助应用软件更好、更高效的使用硬件。
操作系统
操作系统
是管理计算机中各种资源、自动调度用户作业、处理各种中断的软件。操作系统管理的资源通常有硬件、软件和数据信息。操作系统的规模和功能,随不同的要求而异。常见操作系统包括UNIX、Windows、Linux、Android、iOS
等。
操作系统是最核心的一个系统软件,其通过内存管理
、cpu管理
、IO设备管理
、文件管理
等管理硬件,并向上提供系统调用
,为应用程序调用硬件提供途径。关于操作系统的内容会在一个单独的专题进行记录、学习。
程序设计语言及语言处理程序
程序设计语言是用于书写计算机程序的语言,其基础是一组记号和一组规则。程序设计语言通常分为3类:机器语言、汇编语言和高级语言。
语言翻译程序
主要包括编译程序、汇编程序、解释程序和其他软件操作程序。
- 编译程序负责将高级语言翻译成汇编代码,也称为编译器;
- 汇编程序负责将汇编语言翻译成机器语言目标程序,也称为汇编器;
- 解释程序用于将源程序中的语句按执行顺序逐条翻译成机器指令并执行,且不生成目标程序,也称为解释器。
下图所示为常见的C语言源程序转换成最终目标程序的过程,除了常见的编译和汇编以外,这里还增加了预处理和多目标程序链接的过程
有关这部分的内容会在:
逆向实践课程
、编译原理专题
进行介绍。
数据库管理系统
数据库管理系统(DataBaseManagementSystem,DBMS)
又称数据库管理软件。数据库是为了满足数据处理和信息管理的需要,在文件系统的基础上发展起来的,在信息处理、情报检索、办公自动化和各种管理信息系统中起着重要的支撑作用。
应用程序
应用程序是为实现某种特定应用而编制的程序,如文本编辑软件、聊天工具、浏览器、游戏等
哇卡哇卡:应用程序和应用软件是不同的概念。
计算机层次结构
系统层次结构
- 第6层是
高级语言层
,是面向用户的抽象层次。用户使用与机器无关的高级语言编程,编程过程中不需要知道机器的技术细节,只需掌握高级语言的语法规则、算法和数据结构等就可以编程。高级语言大大降低了学习和使用计算机的难度,便于计算机的应用与推广。 - 第5层是
汇编语言层
。该层为用户提供基于助记符表示的汇编语言编程。汇编语言与机器结构直接相关,用户必须在了解机器内部的详细技术细节(如寄存器、寻址方式等)后才能编程。本层的编程难度比高级语言层难度大。 - 第4层是
操作系统层
。该层用于对计算机系统的硬件和软件资源进行统一管理和调度,提高计算机系统的使用效率,方便用户使用计算机。 - 第3层是
指令集架构层
。该层可通过机器语言编写程序实现对计算机硬件的控制,也称为传统机器层或ISA(InstructionSetArchitecture)层,是计算机中软件系统与硬件系统之间的界面和纽带。一方面,用户在该层可用二进制表示的机器语言编程控制计算机的硬件系统;另一方面,该层之上的软件系统的各种程序必须转换成该层的机器语言形式才能被底层的硬件执行。与高级语言层和汇编语言层相比,该层的编程更加烦琐。 - 第2层为
微代码层
。该层是实际的机器层,该层的用户使用微指令编写微程序,用户所编写的微程序由硬件直接执行,注意只有采用微程序设计的计算机系统才有这一层。 - 第1层为
逻辑门层
。该层是计算机系统最底层的硬件系统,由逻辑门、触发器等逻辑电路组成,它是由逻辑设计者采用布尔代数设计的硬件内核。
上述关于计算机系统的6层结构中,第l、2、3层是硬件层,是计算机系统的基础和核心,计算机的所有功能最终都由硬件来完成;第4、5、6层是软件层,第4层是面向机器
的,它是为满足高层的需要而设置的;第5、6层是面向应用
的,它们是为程序员解决应用问题而设置的。
哇卡哇卡:上述层次结构很重要,也很复杂,每一层都可以扩展出一门课程。
软件层次:高级语言层可以通过
编程语言课程
学习,如:C、JAVA、Python等;汇编语言可以通过汇编语言课程
学习,在很多地方都要使用;操作系统层可以通过操作系统课程
学习;同时由高级语言到机器语言的编译、汇编、链接可以通过编译原理课程
学习。
硬件层次:对于非硬件专业人员可以通过计算机组成原理
和数电课程
简单了解一下硬件的设计与工作原理。
软件和硬件的逻辑功能等价性
软件和硬件逻辑功能的等价性是计算机系统设计的重要依据,软件和硬件的功能分配及其界面的确定是计算机系统结构研究的重要内容。当研制一台计算机时,设计者必须明确分配每一级的任务,确定哪些功能使用硬件实现,哪些功能使用软件实现。软件和硬件功能界面的划分是由设计目标、性能价格比、技术水平等综合因素决定的。
哇卡哇卡:不论是硬件层次还是软件层次,都是为了实现某些特定的功能而存在的,只是实现的形式不同。
随着大规模集成电路技术的发展,软件硬化或固化是必然趋势。例如,目前PC主板上的BIOS芯片
就是将基本输入输出系统程序(BIOS)
固化在只读存储器(ROM)
中实现的。它在形式上是硬件,但其实际内容是软件。
写在最后:本篇文章记录了计算机系统概论相关内容,核心内容是计算机系统的组成和层次结构,已经建立了基本的框架,以后就要在这个基础上进行完善,主要通过:
计组课程与实验
、操作系统课程与实验
、编译原理自学与逆向课程实践
、汇编语言自学与多课程实践
、python和java学习
等。所有内容都会分类在博客上进行介绍。