计算机发展史
-
第一代计算机
-
体积127m2
-
1946-1957
-
主要使用真空电子管
- 电子管体积大,散热多
-
-
第二代计算机
- 晶体管
- 1958-1964
- 价格降低,体积减小,性能提高(代替了真空电子管)
- 推进广泛使用电子计算机
- 电子线路结构大大改观
-
第三代计算机
- 使用的集成电路
- 1965-1970
- 集成电路使用的元器件数量在短时间内翻倍增长
- 1cm2可以集成上百万个电子器件(第四代计算机铺垫)
-
第四代计算机
- 大规模集成电路
-
第五代计算机?人工智能计算机(日本)
可以看出计算机发展是按照计算机所使用的的物理器件来划分的,电子组成元器件
摩尔定律(计算机界的黄金定律)
- 价格不变动时,制作计算机的集成电路上可容纳的晶体管数目,约每隔24(18)个月就增加一倍
- 微处理器的性能每隔18个月提高一倍,而价格下降一半
- 用一美元买到的电脑性能,每隔18个月翻一倍
计算单位(用来衡量计算机的发展速度)
1k = 1024
1M = 1024K
1G =1024M
1T = 1024G
1P = 1024T(世界最快的计算机已经达到了P的级别)
1E = 1024P
超级计算机(巨型机)
它的发展可以看作国家科技发展水平的标志
应用
- 天气预报
- 地质勘测
- 卫星图像处理
- 。。。
以上这些都是需要大量计算来完成的
大规模数据计算一定会用到超级计算机
- 研制水平
- 生产水平
- 应用能力
以上为超级计算机发展方向,来衡量国家经济实力与科学水平的重要标志
Scratch
Scratch由美国麻省理工学院开发的免费的程序设计的语言环境
应用
- 互动故事
- 动画
- 游戏
- 音乐
- 艺术
BYOB-会唱歌的小精灵
- 积木式编程
- 自底向上编程的方法
二进制
- 逢二进一
- 相邻为高位为低位的二倍
- 小数位
- 小数第一位代表2的负一吃放
- 小数第二位代表2的负二次方
- 以此类推
二进制加法
同样可以使用竖式计算
进制问题
如果采用的数制有R个基本符号,那么这个数制为R进制
R称为这种数制的基数
逢R进一
把一个R进制转换为10进制
25什么情况下等于31?
(25)10进制 =(31)8进制
十进制转换为2进制
整数十进制转换为二进制
技巧:整数十进制数除以2,第一次所得余数即为2进制数整数部分的最低位(即b0),第二次除以2得到的余数为b1
除以2取余,余数为整数部分依次低位到高位
小数部分十进制转换为二进制(并不一定每位十进制小数都能找到对应的二进制对应的等值转换)
技巧:小数乘2取整,第一次取整为二进制小数部分的高位,第二次取第一次的结果的小数部分再次乘2,得到的整数部分为小数部分的第二高位,依次类推,直到乘到小数部分的数字为0为正
乘以2取整,整数为小数部分依次高位到低位,每次乘完结果的小数部分为0则计算结束
win10计算机的进制转换
- FN+f12切除计算机
- 点击左上角切换到程序员模式
0与1的故事
计算机为什么使用0,1二进制来操控
- 状态简单(适合计算机这样严密的机器使用)
- 相比用10个稳定状态操控,2个稳定状态无疑是最简单的
- 电流的有无
- 开关的闭合
- 更经济
- 。。。
这里举一个例子:比较一下2的33次方与10的10次方各需要的状态数(2的33次方与10的10次方所表示的数值范围非常相近)
- 可靠性,稳定性高
- 运算规则简单,简化设计
- 通用性强
计算机
- 计算机的核心
- CPU
- ALU 算术逻辑单元
- CU
- CPU
计算机当中的溢出
在使用电子计算装置的时候都要考虑计算转置的范围和精度
- 范围
- 计算机所表示的数值的上限
- 精度
- 计算机所表示的数值的下限
溢出:超出电子计算装置所能表示的数值的范围称为溢出
计算机当中的数字截断误差
程序编写
- 变量 初始化
- 分支
- 循环
- 顺序结构
结构化程序设计
目的:为了解决问题
自顶向下
- 搭积木的自底向上方式
- 自顶向下,计算机结构化程序设计就是采用自顶向下(结构指的是计算机使用的3个基本机构,顺序结构、循环结构、分支结构
- 大问题化解为一系列小问题
- 这些小问题化解为更小的一系列问题
- 直至计算机能够做到的小问题(即这里怎么知道写程序来解决整个问题,直到用程序设计语言能够实现为止),最后拼接起来这些所有的小问题
自顶向下,逐步求精,抽象化到具体化,抽象的不好,具体求精也不能很好实现
模块化设计
大块的功能分为若干个子模块
结构化编码
高级语言使用的基本程序结构顺序结构、循环结构、分支结构(如果,那么)
图灵与图灵机(计算机理论上的突破)
既能完成八音盒的功能(根据纸带来弹奏音乐 自动输入,手动输出),又能完成自动加法器的功能(根据手动输入的弹珠,来计算加法,手动输入,自动输出)
- 图灵机工作原理**(自动输入,自动输出)**
- 读写器(读写输入的内容,写出空白格的内容)
- 控制器(声明运算法则)
- 输入符号
图灵机工作表(一组转换规则)(用来完成N+1的动作)
- S起始状态
- G结束状态
图灵机为理想计算机的数学模型
变换规则表=>控制器,完成不同的计算
规则表由一系列的规则组成
起始状态,读写头所在位置的符号=>是否输出符号=>动作:是否移动,左移还是右移=>状态的改变。。。
什么是计算,到底什么是计算?
- 加法毋容置疑为计算
- x的平方转换为2x 也是计算 求导计算
- China=>中国
- 排序
- 公里与推到规则转换为定理
以上都是属于计算,本质上从一个符号变换为另一个符号
输入相同的结果,不同的计算程序(图灵机上的控制器),得到的结果也不同
计算机是如何工作的
布尔代数
构成了计算机的数学和逻辑基础
基本的三中布尔运算
- 二元与
- 二元或(OR)
- 一元非(NOT)
布尔代数运算可以使用电路来实现
-
二元与 串联
-
二元或 并联
-
非 开关短接负载
冯诺依曼
101报告 1945.6
把计算机分为5大组件,指出了基本工作方法,给出了计算机结构设计---- 称为冯诺依曼体系结构
-
存储器 为内存 存放执行的程序 ,数据指令
- 内存 计算机运行的过程中,需要的使用的数据和指令都放在内存当中,CPU也是直接跟内存打交道
- 外存
- 这里举个例子
- 当我们准备使用计算机的浏览器的时候
- 在你双击浏览器的一瞬间,浏览器程序就会从外存进入内存了
- 此时浏览器启动
- 可以使用CPU来解决用户的需求
-
运算器(算术逻辑单元)对数据进行处理和运算
- 寄存器 用来暂存数据
-
控制器(控制单元) 实现计算机本身的自动化过程,指令自动装入,自动执行
计算机里把运算器和控制器集成在一个芯片上,称为中央处理单元(CPU)
- 输入设备 用来指挥计算机工作 包括鼠标,键盘 来输入原始数据和运行的程序
- 输出设备 显示器 ,显示屏,打印机
总线作为5大计算机组件的信息通道
- 数据总线
- 地址总线
- 控制总线
计算机系统
-
刚生产的计算机什么都没安装只有硬件,叫裸机
-
在1969年,IBM360系统取得成功后,1970年1月一日正式出现了软件硬件的划分
-
硬件 所有的电子机械装置
-
软件 是相对硬件而言的 有计算机硬件执行,完成一定任务的所有程序和数据 使用计算机的资源的软件
-
系统软件 面向计算机的软件
-
应用软件 面向用户的软件
-
-
-
计算机造出来第一个安装的软件就是系统软件------操作系统
-
操作系统也是由千万行代码所组成的
- 操作系统本质上是软件
- 用来管理计算机的硬件与软件的协调
- 向下来管理计算机硬件—对底层硬件进行封装
- 向上给用户提供与计算机的交互接口
- 操作系统的管理功能:
- 操作系统对CPU的管理叫做进程管理
- 对内存的管理叫做存储管理(处理器管理)
- 对输入输出设备的管理叫做设备管理
- 对所有软件的管理叫做文件管理
- 操作系统的服务功能
- 给计算机用户提供用户接口
- 电脑桌面的各种应用软件就是用户接口
-
杀毒,办公文档,娱乐软件,游戏等都为应用软件
每一个外接到计算机的硬件都要给计算机操作系统进行报道
- 比如,在计算机上外接一个打印机(硬件)
- 那么这个报道过程就是你要给计算机装驱动打印机的程序(软件)
冯·诺伊曼瓶颈
在CPU与存储器之间的流量(数据传输率)与存储器的容量相比起来相当小,在现代计算机中,流量与CPU的工作效率相比之下非常小,在某些情况下(当CPU需要在巨大的数据上运行一些简单指令时),数据流量就成了整体效率非常严重的限制。CPU将会在数据输入或输出存储器时闲置。由于CPU速度远大于存储器读写速率,因此瓶颈问题越来越严重。
计算机中的程序
完成既定任务的一组指令序列
程序是一组指令的集合,为了完成某项任务而用某种编程语言编写的一组指令的集合 这种工作模式称作存储程序控制
指令是对计算机进行程序控制的最小单位
- 操作码 加法,减法等等
- 操作数 需要操作的数据,谁来加法,减法
指令周期
- 取指令
- 分析指令
- 执行指令
- 指令计数器处理 用来记载指令执行到了哪一条(递增动作)
计算机存储程序控制原理
- 能够存储程序
- 控制程序(自动执行)
CPU可以看作计算机的大脑,程序就是计算机的“灵魂”
计算机高级程序设计语言
- 对计算机来说它是精确的
- 对人来说它是比较容易理解的
- 设计出来的语言独立于CPU的,不包含CPU相关的指令内容
人机交互通过计算机程序设计语言
源代码
人们设计的高级程序语言
目标代码
0101代码 计算机能够识别的代码
编译器
计算机上能够把源代码自动转换为目标代码的工具
解释器(有别于编译器)
是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行
计算机编程
- 把组成计算机程序的指令称为代码
- 程序可以包含几百万行代码,由程序员开发
汇编语言
了解硬件的使用指令来编写汇编语言相关程序
- 汇编语言也要转换为0101 才能够让计算机去执行
- 这个转换汇编语言为0101的程序称为汇编程序
计算机语言分类
- 高级语言
- 计算机高级程序设计语言
- 。。。。
- 低级语言
- 汇编语言
- 机器语言(0101)
进程
- 进程是程序执行的一次过程
- 系统进行资源分配和调度的独立单位
- 应用程序启动进入内存就变成了一个进程
- 进程在CPU当中是走走停停,间断性的
- 由于CPU运算速度非常快,让用户觉得CPU可以同时处理多个进程
- 事实上,CPU每次都只处理一个进程
CPU直接跟内存中的进程打交道,不与程序直接打交道
特征
- 动态性
- 独立性
- 开发性
进程周期:创建而产生,调度而执行,等待而暂停,完成而消亡
进程与程序的区别
- 进程是动态暂时性的
- 程序是静态永久性的
- 程序每次执行构成不同的进程,一个程序可以对应多个进程
线程(应用程序被使用和调度的最小单位)
线程被包含在进程当中
- 一个进程中可以存在多个线程
- 线程在进程中是并行运行的
- 这些进程中的线程公用CPU,轮流使用并执行
- 利用分时,CPU的告诉并行执行
存储管理
虚拟内存管理
虚拟内存为计算机在外存上开辟的一个临时内存空间,内存运行程序暂时用不到的指令存放在这里
当用户使用计算机进行很多个应用程序时,为什么计算机能够顺利的对用户打开的多个程序进行处理呢?
- 用户所打开的应用程序,计算机只会把可能用到的程序指令送入内存
- 用过的指令可能存在内容当中,也可能被送入虚拟内存
- 计算机访问虚拟内存的速度与访问内存速度相差还是很大的