《重新了解计算机基础》- Crash Course Computer Science(计算机科学速成课)笔记15-21
-
阿兰 图灵(1912生于伦敦)没太看懂这章
-
相关问题
-
可判断性问题
-
Lambdo算子
-
图灵机:
-
纸带、读写头、状态变量、一组规则
-
一个强大的计算模型
-
图灵证明了图灵机可以完成任何计算
Turing 完备是指在可计算性理论中, 运算规则系统的集合(例如指令集、编程语言或细胞自动机)能够模拟单带图灵机的行为。
-
图灵机的停机问题
-
如何证明无法实现:
一台机器:这台机器负责判定输入程序是否会终止运行。若能终止运行,则继续执行当前操作;若无法终止,则会停止执行自身操作。
假设输入的程序即为此机器自身编写的程序,则当该程序运行至停机时(即完成任务并停止执行),若返回结果为yes,则表示任务已完成;若返回结果为no,则表示任务未完成。
然而所得结果自相矛盾(涉及罗素悖论及理发师悖论),因而导致该方案不可行。无法实现其设想。
-
事实证明,不是所有事情都可以用计算来完成
-
丘奇图灵论题:可计算性理论
图灵测验即指测试者与被测者分别处于隔离状态下的情景,在此环境下使用键盘等装置向被测者发出问题。在经过多轮实验后若机器使参与者的平均误判率高于30%则判定该机器具备人类智能
-
现代的延伸图灵测试:验证码
-
软件工程:预防程序错误
面向对象编程作为一种编程范式,在软件开发中被广泛采用。其核心思想在于通过将相似的功能整合到层次结构中来提升效率和可维护性。
-
核心:隐藏复杂度,选择性公布功能
-
API:程序编程接口,实现不同对象之间的连接与交互
-
对象权限举例
-
public:其他对象都可以调用
-
private:只有同一对象内的其他函数可以调用
-
集成开发工具:IDE,idea、eclipse等。
-
程序文档:为了帮助开发者理解代码提高代码的复用性
-
常用方式
-
文档
-
注释
-
源代码管理:版本控制,代码仓库。例如GIT、SVN等。
源码测试:通过自动化质量保证测试确保系统稳定运行;在完成代码编写后进行;发现并修复潜在问题相当于进入预发布版本阶段。
-
集成电路和摩尔定律(了解完软件发展之后又回归硬件发展)
-
电子计算机时代(1940-1960):
-
计算机由不同的分立元件(只有一个电路元件的组件)用线连接而成
分立元件:仅由一个电路元件构成的组件
ENICA:世界上第一台电子数字计算机(EDC),拥有17284个晶体管、约7 \times 1e4个电阻、约9 \times 1e3个二极管以及5 \times 1e6个焊接点
数字暴政:指的是为了提升计算机性能而必须配备的复杂部件组合。
-
计算机2.0时代(1950年)(晶体管商业化):
-
IC集成电路(多个组件封装在一起):芯片的核心
-
出现的契机:数字暴政,复杂繁多的分立元件,无法更高效利用发展计算机。
-
现代集成电路之父:1954年Robert Noyce在其职业生涯初期即被视为"仙童半导体":硅材料(Si)使集成电路成为现实并开启了电子技术的新纪元,并催生了硅谷这一全球科技中心。
-
IC发展
-
1960初期集成电路只能容纳五个左右晶体管
-
1960中期IC可容纳100个左右晶体管
-
1971年的Intel 4004 可容纳2300个晶体管
-
1980年可容纳3万个晶体管
-
1990年可容纳100万个晶体管
-
2000年可容纳3000万个晶体管
-
2010年可容纳10亿个晶体管
-
摩尔定理(趋势):
集成电路中所支持的晶体管数量每隔约18至24个月的时间段内会翻一番。
-
然而近些年
-
PCB印刷电路板:时刻金属线
集成电路在将组件封装之后,并非能够避免连接电路所需的大量插线。这也导致了计算机必须采用复杂的布线系统来完成任务。
-
印刷电路板通过蚀刻金属线来连接线路,有效的解决了布线问题
-
光刻:用光把图案印在材料上,例如半导体材料
出现契机:印刷电路板和集成电路在显著地扩大组件尺寸的同时,在芯片集成度方面仍有提升空间;尽管如此,在单块集成电路上实现5个晶体管以上的布局仍然具有挑战性。
- 光刻原理(举例为晶体管,其他分立元件也可以通过类似的蚀刻制造):
依次在一块晶圆(半导体硅)上涂覆一层氧化层保护膜,并在其表面涂覆一层光刻胶;然后将不需要曝光的部分用光刻胶进行覆盖。
用强烈光照照射未被遮盖的光刻胶后会引发化学反应导致其溶解并显示出氧化层的存在
-
再用一种特定的酸洗掉露出的氧化层。在用特殊化学品将光刻胶洗掉。
-
通过“掺杂”修改硅的露出部分,提高导电性
-
用高温气体磷掺杂
-
渗透进暴露的硅,改变其电学性质
-
重复上述第一步及之后的操作,通过另一种掺杂吗,转化硅的另一种性质。
-
在氧化层上通过光掩模、光刻胶蚀刻出新的小通道,用于连接其他晶体管。
-
在最上方再放一层金属铝或铜。
-
在金属层上再放一层光掩模、光刻胶,蚀刻光刻胶和金属层。
-
优点:
-
晶体管越小,移动电荷量越小,状态切换越快,耗电量更小
-
电路紧凑,信号延迟更低、时钟速度更快
-
摩尔定理(趋势):
集成电路上可容纳的晶体管数量每隔18至24个月就会翻一番。
然而近年来,在微小规模下由于晶体管尺寸减小导致电子间距缩短至仅隔几个原子的距离的现象——即量子隧道效应的影响下,并且光波长度及精度已经达到现有技术极限的前提下,在维持现有技术框架的情况下无法进一步提高集成度;因此需要探索利用波长更短、光源更小的新型光源系统来突破现有技术瓶颈并实现芯片容量的持续提升。
-
系统(具备对硬件的操作权限,并能够执行并管理其他应用程序,并支持多任务处理)
-
OS的发展
在20世纪40至50年代期间, 计算机仅能以串行方式执行程序, 即每次完成一条指令后, 必须由操作人员将下一条指令的卡片依次放入机器中才能继续运行.然而随着科技的进步, 计算机处理速度显著提升, 此时单个程序的处理速度已超越逐个插入卡片所需的时间间隔.为实现更高效率与机器性能的有效结合, 操作系统(OS)应运而生.
-
第一台超级计算机系统的最初的超级计算机系统命名为 Atlas,并于1974年10月正式投入运行。其最初的操作系统命名为 Atlas Supervisor,在全球范围内处于领先地位,并成功实现了虚拟内存和动态保护机制
-
实现了自动加载程序:
-
批处理:多个程序连续自动执行
-
多任务处理:程序调度
-
实现单个CPU同时运行多个程序
-
程序同时运行需要解决以下问题:
-
在切换程序时,如何保证之前的程序数据不会丢失
解决方法:为每个程序单独分配一块专有内存区域,在获得许可的情况下将为该程序分配一组非连续的内存区域。这种情况下,输出显示这两部分地址之间存在明显的断层。为了隐藏潜在的地址断裂问题,操作系统的实现方式如下所示:
-
操作系统将内存虚拟化:虚拟内存
-
这样就很好的实现了动态内存分配
-
也实现了内存保护,不会让一块程序错乱影响到另一块。
-
OS支持了外部设备的API抽象:其中一种实现方式是采用标准对话机制,并通过输入/输出硬件I/O交互完成
-
分时操作系统:实现了多用户可以通过终端(键盘加屏幕)同时访问
为了避免单一用户占据全部的处理器和内存资源:分时操作系统通过将处理器和内存资源划分为若干份来实现对不同用户的公平分配
-
Multics多任务信息与计算操作系统:
-
早期最著名的分时操作系统
-
第一个在设计时考虑安全的系统
但是由于考虑到各种安全问题所导致的系统复杂性上升后
-
UNIX操作系统
-
将OS分为两块
-
内核:多任务、输入输出处理 、内存管理
-
工具:程序、运行库等
-
内核恐慌:当程序错误,循环弹出“恐慌”
微软在1985年的早期版本中缺乏内存保护功能,在这种情况下程序崩溃将引发特定错误代码并导致系统出现蓝色屏幕现象
-
现代操作系统还有
-
Mac OS X
-
Windows11
-
Linux
-
Android
-
内存和存储介质
-
内存:易失性存储器
-
存储器:非易失性
-
最早的存储介质:打孔纸卡打孔纸带
-
美国空军SAGE计算机主程序有62500张打孔纸卡
-
打孔纸卡便宜、耐用,但读取慢,且只能读取一次
-
延迟线存储器
充满液体的管道两侧分别安装了扬声器和麦克风,并通过导线将两端连接起来。利用扬声器每次发出的压力波变化,在两端形成高低电平信号。每个时间点只记录一位二进制数值(0或1),因此这种特性也使该装置被命名为顺序循环移位寄存器。
-
EDVAC计算机中用到了128位延迟线存储器,一条存352位数据,总共存45000位
-
仍然需要解决的问题
-
内存密度
-
随机存储
-
磁致伸缩延迟存储器:通过金属线震动来代表数据
-
增加了存储密度
-
磁芯存储器:通过将慈心上缠绕电线。并施加电流,来存储数据
-
可以通过磁芯排列网络来增加内存密度
-
第一次大规模使用磁芯存储器:
-
1953年 的Whirlwindl:一块上磁芯排列32x32,用了316块,存16000位
-
磁带存储器
-
需要使用到磁带存储器
UNIVAC于[公式]年推出了一系列技术成果,并在其中推出了存储磁带系统。该系统采用高密度存储方案,在设计上实现了以下特点:单个磁带卷可储存约[公式]的信息内容,并通过高效的数据排列方式实现了整体空间利用率的最大化。
-
问题:访问速度慢:访问数据需要前进或回退磁盘很多位。才能定位。
-
磁鼓存储器
-
一个高速运转的铁桶,每分钟上千转。
-
1953年,可以存80000位(10KB),1970年停产。
-
硬盘
-
1956年IBM第一台存储计算机 RAMAC 305,50张24英寸的磁盘存5MB左右
-
寻道时间:磁盘访问一位数据的时间
-
现代磁盘可以存100万MB数据,平均寻到时间低语1/100秒
-
软盘:相较于磁盘是软的,已淘汰
-
光学存储器
-
1972年出现,12英寸激光盘
-
通过凹槽光反射来存储0/1
-
包括光盘CD和DVD
-
机械硬盘(电磁存储)
-
固态硬盘SSD(使用集成电路半导体存储),寻道速度为1/1000秒
-
第一个RAM集成电路出现于1972
-
文件系统(用于存储一整块文件)
-
文件格式:按格式排列文件
-
简单的文件格式列举
-
文本文件(TXT):
-
用于文字数据
-
使用ASCLL解码
-
波形文件(WAV):
-
用于存储音频数据
-
文件的文件头用来保存元数据(文件数据的数据)
-
码率
-
单声道、立体声道
-
元数据之后的数据为
-
每秒捕获多次的声音振幅
-
振幅越大、声压越大、数字越大
-
每秒可达上千次
-
位图(bmp)
-
用来存图片数据
-
文件的文件头存放元数据:图宽、图高
-
后面存储颜色深度(24位)
-
8位RED(0-255)
-
8位GREEN(0-255)
-
8位BLUE(0-255)
-
文件系统
-
平面文件系统
-
文件连续存储在内存块内
-
目录文件,记录其他文件的目录,包括:
-
文件名+.+扩展名
-
创建时间
-
最后修改时间
-
文件所有者
-
读写权限
-
文件起始位置
-
块地址
-
当文件增加数据时,出现的溢出该如何解决
-
在每块数据中预留数据
-
拆分文件,存入多个块中
-
文件删除:
-
当删除文件,不需要删源文件,只需要删除目录信息
-
新文件可直接覆盖数据
-
碎片
-
当文件进行增删改查之后,文件数据隔开,且每块的顺序也被打乱
-
解决方法:
-
碎片整理:将数据来回移动,排列出正确顺序
-
分层文件系统
-
出现契机:内存容量的发展以及数据暴增,存在一个目录,查找麻烦
与平面文件系统的区别在于,在目录文件的文件信息中增加了是否为目录的标记
-
用元数据分开文件和目录
-
目录里还可以包括目录
-
压缩(把数据占用空间尽可能压到最小,用更少的位表示数据)
-
压缩方式
-
无损压缩(基本采用两种方式:消除冗余和更紧凑的表示方式)
-
行程编码
-
给所有数据前都标上长度,多次重复的数据只保留一位即可
-
字典编码:DFTBA
-
用符号来表示数据
-
用到哈夫曼树:
-
1950年 大卫 哈夫曼 发明的高效编码方式
-
通过列出数据出现频率,每轮列出两个最低频率,按频率排序
-
例如 黑黄 出现一次 ,黑白 出现一次 , 白黄 出现两次 黄黄出现四次
-
按哈夫曼树排列
-
最后压缩的结果为:字典加上数据对应符号

-
有损压缩
-
感知编码:依赖人类感知模型
-
音频压缩:用不同精度编码不用频段
-
删掉人类听不到的超声波等
-
完整保留人类敏感的人声
-
图片压缩:通过降低分辨率来压缩
-
如使用8x8像素,将相似颜色统一成一个颜色
-
经典格式:JPEG
-
视频压缩:
-
时间冗余:视频中不动的像素
-
找出帧与帧之间的相似不定,用简单的效果来实现移动、旋转等效果
-
经典格式:MPEG-4
