计算机基础知识(1)-- 概论背景篇
计算机概论是计算机科学领域的一门基础课程,它旨在介绍计算机的基本概念、原理和应用。通常包括以下主题:
- 计算机系统结构:介绍计算机硬件组成和系统级编程的基础知识。
- 操作系统:介绍操作系统的基本概念和功能,如进程管理、存储管理和文件系统。
- 数据结构和算法:介绍数据结构和算法的基本概念,如数组、链表、树和图等。
- 编程语言和编译器:介绍编程语言的基本概念和语法,以及编译器的工作原理。
- 软件工程:介绍软件开发的基本流程和方法,如需求分析、设计、实现和测试等。
- 计算机网络:介绍计算机网络的基本概念和技术,如TCP/IP协议、域名系统和网络安全等。
通常涵盖了计算机科学领域的基本概念和知识,现主要从以下的几个方面进行表述,也是主要学习理解的部分。
- 计算机的发展简史
- 计算机的分类
- 计算机的体系结构
- 计算机的层次与编程语言
- 计算机的计算单位
- 计算机的字符与编码集
从以上的六个方面对计算机概论背景进行知识点的整理。
1.计算机发展简史
计算机的发展简史主要是分为以下的四个阶段以及第五个阶段未来的计算机。
1.1第一个阶段:电子管计算机
- 第二次世界大战是电子管计算机产生的催化剂英国为了解密德国海军的密文
- 战争使用了飞机和火箭,打得准,则需要计算射击参数
- 射击参数需要几千次运算才能计算出来,没有计算机前,需要人手算
- 18000多个电子管
- 运行耗电量150千瓦
- 重量达30吨,占地1500平方英尺
- 集成度小,空间占用大
- 功耗高,运行速度慢
- 操作复杂,更换程序需要接线
1.2第二个阶段:晶体管计算机
贝尔实验室的三个科学家发明了晶体管
- 4k内存,每秒200,000指令
- 配备512x512的显示器
- 集成度相对较高,空间占用相对小
- 功耗相对较低,运行速度较快
- 操作相对简单,交互更加方便
1.3第三个阶段:集成电路计算机
德州仪器的工程师发明了集成电路(IC)
- 计算机变得更小
- 功耗变得更低
- 计算速度变得更快
计算机具备进入千家万户的条件
1.4第四个阶段:超大规模集成电路计算机
- 一个芯片集成了上百万的晶体管
- 速度更快,体积更小,价格更低,更能被大众接受
- 用途丰富:文本处理、表格处理、高交互的游戏与应用
1.5第五个阶段:未来的计算机
以蛋白质分子作为主要原材料的生物计算机
- 体积小,效率高
- 不易损坏,生物级别的自动修复
- 不受信号干扰,无热损耗
遵循量子力学的物理计算机
- 2013年5月,谷歌和NASA发布D-Wave Two
- 2017年5月,中国科学院宣布制造出光量子计算机
- 2019年1月,IBM展示了世界首款商业化量子计算机
- 腾讯在2017年就组建了量子实验室
- 阿里巴巴在2017年成立了达摩院
1.6 微型计算机的发展历史
单核CPU — 受限于性能
多核CPU — 摩尔定律
集成电路的性能,每18-24个月就会提升一倍
2.计算机分类
2.1超级计算机
-
功能最强、运算速度最快、存储容量最大的计算机
-
多用于国家高科技领域和尖端技术研究
-
标记他们运算速度的单位是TFlop/s
1TFlop/s=每秒一万亿次浮点计算
Intel® Core™ i7-6700K CPU @ 4.00GHz: 44.87 GFlop/s
44.87 GFlop/s = 0.04487TFlop/s
世界前三(截止2018年11月)
名字 制造商 处理器 峰值速度 Summit IBM(美国) 2,397,824 200,795 TFlop/s 神威 太湖之光 中国 10,649,600 125,436 TFlop/s Sierra IBM(美国) 1,572,480 119,193 TFlop/s 中国前三(截止2018年11月)
名字 制造商 处理器 峰值速度 神威 太湖之光 国家并行计算机工程 技术研究中心 10,649,600 125,436 TFlop/s 天河二号 国防科大 3,120,000 33,862 TFlop/s 天河一号 国防科大 202,752 2,566 TFlop/s
2.2大型计算机
-
又称大型机、大型主机、主机等
-
具有高性能,可处理大量数据与复杂的运算
-
在大型机市场领域,IBM占据着很大的份额
COBOL编程语言
-
NASA 最后一台大型机
-
Red Hat Enterprise Linux
-
大型机造价高昂
-
去”IOE“ 是阿里巴巴提出的概念
-
代表了高维护费用的存储系统
-
不够灵活,伸缩性弱
2.3迷你计算机(服务器)
- 也称为小型机,普通服务器
- 不需要特殊的空调场所
- 具备不错的算力,可以完成较复杂的运算
2.4工作站
- 高端的通用微型计算机,提供比个人计算机更强大的性能
- 类似于普通台式电脑,体积较大,但性能强劲
2.5微型计算机
-
又称为个人计算机,是最普通的一类计算机
-
麻雀虽小、五脏俱全
从构成的本质上来讲,个人计算机与前面的分类无异
3.计算机的体系与结构
3.1冯诺依曼体系
冯诺依曼体系是计算机科学中最重要的体系结构之一,它的设计基于以下原则:
- 存储程序:计算机中的指令和数据都存储在同一个存储器中,可以在程序运行时动态加载和执行。
- 中央处理器(CPU):CPU是计算机的核心,它执行指令和进行数据处理。
- 算术逻辑单元(ALU):ALU是CPU的一部分,负责执行算术和逻辑操作。
- 存储器:计算机中的数据和指令都存储在存储器中,可以在程序运行时随时读取和写入。
- 输入输出设备:计算机可以通过输入设备(如键盘和鼠标)向程序输入数据,通过输出设备(如显示器和打印机)向用户输出结果。
冯诺依曼体系结构被广泛应用于现代计算机系统中,它提供了一种简单、高效和灵活的方式来组织和执行计算机程序。
现代计算机都是冯诺依曼机,将程序指令和数据一起存储的计算机设计概念结构。
冯诺依曼机所具备的特点:
- 必须有一个存储器
- 必须有一个控制器
- 必须有一个运算器
- 必须有输入设备
- 必须有输出设备
冯诺依曼机所具备的优势:
- 能够把需要的程序和数据送至计算机中
- 能够长期记忆程序、数据、中间结果及最终运算结果的能力
- 能够具备算术、逻辑运算和数据传送等数据加工处理的能力
- 能够按照要求将处理结果输出给用户
3.2冯诺依曼瓶颈
冯诺依曼瓶颈是一种计算机体系结构中的性能瓶颈,其中主要指的是处理器在同一时间只能处理一条指令,而不能同时处理多条指令的情况。这意味着处理器必须等待下一条指令被发送到它的寄存器中才能继续执行,因此在某些情况下,处理器的效率会受到限制。这种情况可以通过多处理器计算机系统的使用来解决,其中多个处理器可以同时处理不同的指令,从而提高整个系统的性能。
CPU相对存储器的运行速率更快,导致经常出现空转的现象。
3.3现代计算机的结构
- 现代计算机在冯诺依曼体系结构基础上进行修改
- 解决CPU与存储设备之间的性能差异问题
3.4 现代计算机结构和冯诺依曼结构的主要区别
现代计算机结构和冯诺依曼结构的主要区别在于:
- 现代计算机结构包括多核心、多处理器和并行处理等技术,而冯诺依曼结构仅限于单一处理器和串行处理。
- 现代计算机结构通常采用存储程序技术,允许程序和数据在内存中自由移动,而冯诺依曼结构仅限于存储程序中指令的数据流。
- 现代计算机结构通常采用更先进的总线技术和缓存技术,以提高计算机的性能和效率。
- 现代计算机结构通常采用更灵活的处理器架构和多核心技术,以满足不同的应用需求。
总的来说,现代计算机结构比冯诺依曼结构更加高效、灵活和多样化。
4.计算机的层次与编程语言
4.1程序翻译与程序解释
程序翻译是将一种计算机程序源代码翻译成另一种计算机程序的过程。它可以将源代码从一种计算机程序语言翻译成另一种计算机程序语言,以便于在不同的计算机系统上运行。程序翻译通常是由一个计算机程序来实现的,它将源代码翻译成目标代码,并在目标系统上执行翻译后的代码。
程序解释是一种将计算机程序源代码逐行解释执行的过程。程序解释器会将源代码转换成目标代码,并在目标系统上执行。相对于程序翻译,程序解释是一种逐行执行的过程,不需要将整个源代码翻译成目标代码。程序解释通常比程序翻译更容易理解和调试,但运行速度较慢。
以下实例中,较为高级的计算机语言L1、较为低级的计算机语言L0
- 计算机执行的指令都是L0
- 翻译过程生成新的L0程序,解释过程不生成新的L0程序
- 解释过程由L0编写的解释器去解释L1程序
4.2计算机的层次与编程语言
计算机的层次通常包括以下几个方面:
- 硬件层:计算机硬件层是指计算机的物理部分,包括处理器、内存、硬盘、输入输出设备等。这些硬件组成了计算机的基础结构。
- 操作系统层:操作系统层是指计算机上的操作系统,它是控制和管理计算机硬件资源的软件系统。操作系统的主要作用是提供给用户和应用程序一个友好的接口,以及管理和协调各种硬件资源。
- 应用程序层:应用程序层是指各种应用程序,如办公软件、游戏、图形图像处理软件等。应用程序通过操作系统提供的接口来使用计算机硬件资源。
- 编程语言层:编程语言层是指人类使用的各种编程语言,如C、Java、Python等。编程语言提供了一种抽象的方式,使程序员可以通过语法来描述计算机应该执行的操作,从而实现各种应用程序。
编程语言的类型通常分为低级语言和高级语言。低级语言包括机器语言和汇编语言,它们直接控制计算机的硬件资源。高级语言包括各种类型的面向对象编程语言、函数式编程语言等,它们更接近人类的自然语言,并且提供了更高级别的抽象和封装,使得程序员可以更加专注于解决问题,而不需要关注计算机的底层细节。
-
硬件逻辑层
- 门、触发器等逻辑电路组成
- 属于电子工程的领域
-
微程序机器层
- 编程语言是微指令集
- 微指令所组成的微程序直接交由硬件执行
-
传统机器层
- 编程语言是CPU指令集(机器指令)
- 编程语言和硬件是直接相关
- 不同架构的CPU使用不同的CPU指令集
-
操作系统层
- 向上提供了简易的操作界面
- 向下对接了指令系统,管理硬件资源
- 操作系统层是在软件和硬件之间的适配层
-
汇编语言层
- 编程语言是汇编语言
- 汇编语言可以翻译成可直接执行的机器语言
- 完成翻译的过程的程序就是汇编器
-
高级语言层
- 编程语言为广大程序员所接受的高级语言
- 高级语言的类别非常多,由几百种
- 常见的高级语言有:Python、Java、C/C++、Golang等
-
应用层
- 满足计算机针对某种用途而专门设计
5.计算机的计算单位
5.1容量单位
- 在物理层面,高低电平记录信息
- 理论上只认识0/1两种状态
- 0/1能够表示的内容太少了,需要更大的容量表示方法 0/1称为bit(比特位)
字节:1Byte=8bits
1000000000Bytes
bit | Byte | KB | MB | GB | TB | PB | EB | |
---|---|---|---|---|---|---|---|---|
名字 | 比特位 | 字节 | 千字节 | 兆字节 | 吉字节 | 太字节 | 拍字节 | 艾字节 |
比例 | - | 8bits | 1024B | 1024KB | 1024MB | 1024GB | 1024TB | 1024EB |
常见设备 | 门电路 | - | 寄存器 | 高速缓存 | 内存/硬盘 | 硬盘 | 云硬盘 | 数据仓库 |
1024 = 2 10 1024=2^{10} 1024=210
1G内存,可以存储多少字节的数据?可以存储多少比特数据?
1G = 1024^3Bytes = 1024^3*8bits
为什么网上买的移动硬盘500G,格式化之后就只剩465G了?
这里的100M并不是指容量
5.2速度单位
-
网络速度
100M = 100M/s
为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
网络常用单位为(Mbps)
100M/s = 100Mbps = 100Mbit/s
100Mbit/s=(100/8)MB/s=12.5MB/s -
CPU速度
- CPU的速度一般体现为CPU的时钟频率
- CPU的时钟频率的单位一般是赫兹(Hz)
- 主流CPU的时钟频率都在2GHz以上
- Hz其实就是秒分之一
- 并不是描述计算机领域所专有的单位
- 它是每秒中的周期性变动重复次数的计量
6.计算机的字符与编码集
6.1字符编码集的历史
-
ASCII码
- 使用7个bits就可以完全表示ASCII码
- 包含95个可打印字符
- 33个不可打印字符(包括控制字符)
𝟑𝟑 + 𝟗𝟓 = 𝟏𝟐𝟖 = 𝟐𝟕
-
Extended ASCII码
- 常见数学运算符
- 带音标的欧洲字符
- 其他常用符、表格符等
-
字符编码集的国际化
- 欧洲、中亚、东亚、拉丁美洲国家的语言多样性
- 语言体系不一样,不以有限字符组合的语言
- 中国、韩国、日本等的语言最为复杂
6.2中文编码集
- 《信息交换用汉字编码字符集——基本集》
- 一共收录了 7445 个字符
- 包括 6763 个汉字和 682 个其它符号
- GB2312
- 《汉字内码扩展规范》
- 向下兼容GB2312,向上支持国际ISO标准
- 收录了21003个汉字,支持全部中日韩汉字
- GBK
- Unicode:统一码、万国码、单一码
- Unicode定义了世界通用的符号集,UTF-*实现了编码
- UTF-8以字节为单位对Unicode进行编码
- 兼容全球的字符集:Unicode
Windows系统默认使用GBK编码
编程推荐使用UTF-8编码