《重新了解计算机基础》- Crash Course Computer Science(计算机科学速成课)笔记15-21

  1. 阿兰 图灵(1912生于伦敦)没太看懂这章

  1. 相关问题

  1. 可判断性问题

  1. Lambdo算子

  1. 图灵机:

  1. 纸带、读写头、状态变量、一组规则

  1. 一个强大的计算模型

  1. 图灵证明了图灵机可以完成任何计算

  1. 图灵完备:图灵完备是指在可计算性理论里,如果一系列操作数据的规则(如指令集、编程语言、细胞自动机)可以用来模拟单带图灵机

  1. 图灵机的停机问题

  1. 如何证明无法实现:

  1. 一台机器:机器的程序为判断输入程序是否会停机,如果会停机,就继续运行程序,如果不会停机就把,就停止运行程序。

  1. 假设输入的程序就是该机器本身的程序,那么当输入的程序会停机的话,那么输出yes,程序继续运行不会停机,假设不会停机得到话,输出no程序停止运行。

  1. 然而得出的结果相悖(涉及到罗素悖论和理发师悖论),所以不成立,无法实现。

  1. 事实证明,不是所有事情都可以用计算来完成

  1. 丘奇图灵论题:可计算性理论

  1. 图灵测试:指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果机器让平均每个参与者做出超过30%的误判,那么这台机器就通过了测试,并被认为具有人类智能。

  1. 现代的延伸图灵测试:验证码

  1. 软件工程:预防程序错误

  1. 面向对象编程:为了解决代码过多,一个人无法完成,用到了将函数打包成对象层级的思想

  1. 核心:隐藏复杂度,选择性公布功能

  1. API:程序编程接口,实现不同对象之间的连接与交互

  1. 对象权限举例

  1. public:其他对象都可以调用

  1. private:只有同一对象内的其他函数可以调用

  1. 集成开发工具:IDE,idea、eclipse等。

  1. 程序文档:为了帮助开发者理解代码提高代码的复用性

  1. 常用方式

  1. 文档

  1. 注释

  1. 源代码管理:版本控制,代码仓库。例如GIT、SVN等。

  1. 源码测试:质量保证测试QA,z在代码编写完成后,测试代码的bug也就是软件的beta版

  1. 集成电路和摩尔定律(了解完软件发展之后又回归硬件发展)

  1. 电子计算机时代(1940-1960):

  1. 计算机由不同的分立元件(只有一个电路元件的组件)用线连接而成

  1. 分立元件:只有一个电路元件的组件,可以是被动的电容、电阻、电感也可以是主动的晶体管、真空管

  1. ENICA:世界上第一台电子数值计算机,包含1万7千多个晶体管,7万个电阻、1万个电阻、7千个二极管、5百万个手工焊点。

  1. 数字暴政:指提高计算机性能,就需要更多的部件,也就需要更复杂更多的电线。

  1. 计算机2.0时代(1950年)(晶体管商业化):

  1. IC集成电路(多个组件封装在一起):芯片的核心

  1. 出现的契机:数字暴政,复杂繁多的分立元件,无法更高效利用发展计算机。

  1. 现代集成电路之父:1954年Robert Noyce的仙童半导体:硅Si让集成电路成为现实,开创了电子时代,创立了硅谷。

  1. IC发展

  1. 1960初期集成电路只能容纳五个左右晶体管

  1. 1960中期IC可容纳100个左右晶体管

  1. 1971年的Intel 4004 可容纳2300个晶体管

  1. 1980年可容纳3万个晶体管

  1. 1990年可容纳100万个晶体管

  1. 2000年可容纳3000万个晶体管

  1. 2010年可容纳10亿个晶体管

  1. 摩尔定理(趋势):

  1. 内容:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍

  1. 然而近些年

  1. PCB印刷电路板:时刻金属线

  1. 出现契机:集成电路虽然将组件封装起来,但以及需要很多插线来连接电路,这使计算机需要复杂的布线,才能完成工作。

  1. 印刷电路板通过蚀刻金属线来连接线路,有效的解决了布线问题

  1. 光刻:用光把图案印在材料上,例如半导体材料

  1. 出现契机:印刷电路板和集成电路有效的所建立组件的大小,但晶体管缩小困难,一块集成电路上最多也只能放5个晶体管。

  1. 光刻原理(举例为晶体管,其他分立元件也可以通过类似的蚀刻制造):

  1. 都先在一块晶圆(半导体硅)上覆盖一层氧化层保护膜,保护膜上再覆盖一层光刻胶,再将不需要光照射的部分用光刻胶覆盖。

  1. 用强光照射未被覆盖的光刻胶,发生化学反应,光刻胶被溶解,暴露出氧化层。

  1. 再用一种特定的酸洗掉露出的氧化层。在用特殊化学品将光刻胶洗掉。

  1. 通过“掺杂”修改硅的露出部分,提高导电性

  1. 用高温气体磷掺杂

  1. 渗透进暴露的硅,改变其电学性质

  1. 重复上述第一步及之后的操作,通过另一种掺杂吗,转化硅的另一种性质。

  1. 在氧化层上通过光掩模、光刻胶蚀刻出新的小通道,用于连接其他晶体管。

  1. 在最上方再放一层金属铝或铜。

  1. 在金属层上再放一层光掩模、光刻胶,蚀刻光刻胶和金属层。

  1. 优点:

  1. 晶体管越小,移动电荷量越小,状态切换越快,耗电量更小

  1. 电路紧凑,信号延迟更低、时钟速度更快

  1. 摩尔定理(趋势):

  1. 内容:集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍

  1. 然而近些年因为量子隧穿效应(晶体管非常小时,电子之间可能只距离几个原子,电子可能会穿过间隙),以及光的波长及精度已经到了极限,需要研究波长更短,光源更小的光来继续发展芯片容量大小。

  1. 操作系统(有操作硬件的权限,可以运行和管理其他程序,实现同时运行多个程序)

  1. OS的发展

  1. 出现契机:1940-50年代,一台计算机只能一次运行一个程序,一个程序运行完,需要工作人员再把下一个程序的纸卡放入计算机,但是随着科技的发展,程序运行速度加快,一个程序运行的速度比放入纸卡的时间还快,为了更高效利于计算机,出现了操作系统OS.

  1. 世界第一台超级计算的Atlas的世界第一个操作系统Atlas Supervisor:实现了虚拟内存和动态保护

  1. 实现了自动加载程序:

  1. 批处理:多个程序连续自动执行

  1. 多任务处理:程序调度

  1. 实现单个CPU同时运行多个程序

  1. 程序同时运行需要解决以下问题:

  1. 在切换程序时,如何保证之前的程序数据不会丢失

  1. 解决方法:给每个程序分配专属的内存块,当一个程序需要请求多块内存,操作系统同意后,会分配给程序可能不连续的内存块,这就使得内存地址打印出来可能是完全不连续的两块地址,为了隐藏不同地址内存块可能出现的复杂度,操作系统给出了以下解决方案:

  1. 操作系统将内存虚拟化:虚拟内存

  1. 这样就很好的实现了动态内存分配

  1. 也实现了内存保护,不会让一块程序错乱影响到另一块。

  1. OS为外部设备提供了API抽象:设备驱动程序,可以用变准话机制和输入输出硬件I/O交互

  1. 分时操作系统:实现了多用户可以通过终端(键盘加屏幕)同时访问

  1. 为了防止一个用户占用所有CPU和内存:分时操作系统是给每个用户分配一小块处理器和内存

  1. Multics多任务信息与计算操作系统:

  1. 早期最著名的分时操作系统

  1. 第一个在设计时考虑安全的系统

  1. 然而因为考虑安全等问题,使操作系统的复杂度超过了当时的水准,而后发明了UNIX

  1. UNIX操作系统

  1. 将OS分为两块

  1. 内核:多任务、输入输出处理 、内存管理

  1. 工具:程序、运行库等

  1. 内核恐慌:当程序错误,循环弹出“恐慌”

  1. Windows:1985年微软早期的Windows仍然缺少内存保护,程序崩溃会导致系统蓝屏

  1. 现代操作系统还有

  1. Mac OS X

  1. Windows11

  1. Linux

  1. Android

  1. 内存和存储介质

  1. 内存:易失性存储器

  1. 存储器:非易失性

  1. 最早的存储介质:打孔纸卡打孔纸带

  1. 美国空军SAGE计算机主程序有62500张打孔纸卡

  1. 打孔纸卡便宜、耐用,但读取慢,且只能读取一次

  1. 延迟线存储器

  1. 装满液体的管道内一边放扬声器,一边放麦克风,并将两端连接起来通过扬声器每次发出的压力波来存储数据0/1,一个时刻存一位,所以也叫顺序存储器循环存储器。

  1. EDVAC计算机中用到了128位延迟线存储器,一条存352位数据,总共存45000位

  1. 仍然需要解决的问题

  1. 内存密度

  1. 随机存储

  1. 磁致伸缩延迟存储器:通过金属线震动来代表数据

  1. 增加了存储密度

  1. 磁芯存储器:通过将慈心上缠绕电线。并施加电流,来存储数据

  1. 可以通过磁芯排列网络来增加内存密度

  1. 第一次大规模使用磁芯存储器:

  1. 1953年 的Whirlwindl:一块上磁芯排列32x32,用了316块,存16000位

  1. 磁带存储器

  1. 需要使用到磁带存储器

  1. 1951年设计的UNIVAC,推出了存储磁带,每英寸存128位,每卷1200英尺,存1500万位,相当于2MB左右

  1. 问题:访问速度慢:访问数据需要前进或回退磁盘很多位。才能定位。

  1. 磁鼓存储器

  1. 一个高速运转的铁桶,每分钟上千转。

  1. 1953年,可以存80000位(10KB),1970年停产。

  1. 硬盘

  1. 1956年IBM第一台存储计算机 RAMAC 305,50张24英寸的磁盘存5MB左右

  1. 寻道时间:磁盘访问一位数据的时间

  1. 现代磁盘可以存100万MB数据,平均寻到时间低语1/100秒

  1. 软盘:相较于磁盘是软的,已淘汰

  1. 光学存储器

  1. 1972年出现,12英寸激光盘

  1. 通过凹槽光反射来存储0/1

  1. 包括光盘CD和DVD

  1. 机械硬盘(电磁存储)

  1. 固态硬盘SSD(使用集成电路半导体存储),寻道速度为1/1000秒

  1. 第一个RAM集成电路出现于1972

  1. 文件系统(用于存储一整块文件)

  1. 文件格式:按格式排列文件

  1. 简单的文件格式列举

  1. 文本文件(TXT):

  1. 用于文字数据

  1. 使用ASCLL解码

  1. 波形文件(WAV):

  1. 用于存储音频数据

  1. 文件的文件头用来保存元数据(文件数据的数据)

  1. 码率

  1. 单声道、立体声道

  1. 元数据之后的数据为

  1. 每秒捕获多次的声音振幅

  1. 振幅越大、声压越大、数字越大

  1. 每秒可达上千次

  1. 位图(bmp)

  1. 用来存图片数据

  1. 文件的文件头存放元数据:图宽、图高

  1. 后面存储颜色深度(24位)

  1. 8位RED(0-255)

  1. 8位GREEN(0-255)

  1. 8位BLUE(0-255)

  1. 文件系统

  1. 平面文件系统

  1. 文件连续存储在内存块内

  1. 目录文件,记录其他文件的目录,包括:

  1. 文件名+.+扩展名

  1. 创建时间

  1. 最后修改时间

  1. 文件所有者

  1. 读写权限

  1. 文件起始位置

  1. 块地址

  1. 当文件增加数据时,出现的溢出该如何解决

  1. 在每块数据中预留数据

  1. 拆分文件,存入多个块中

  1. 文件删除:

  1. 当删除文件,不需要删源文件,只需要删除目录信息

  1. 新文件可直接覆盖数据

  1. 碎片

  1. 当文件进行增删改查之后,文件数据隔开,且每块的顺序也被打乱

  1. 解决方法:

  1. 碎片整理:将数据来回移动,排列出正确顺序

  1. 分层文件系统

  1. 出现契机:内存容量的发展以及数据暴增,存在一个目录,查找麻烦

  1. 与平面文件系统的区别是,在目录文件的文件信息内加入了是否为目录文件

  1. 用元数据分开文件和目录

  1. 目录里还可以包括目录

  1. 压缩(把数据占用空间尽可能压到最小,用更少的位表示数据)

  1. 压缩方式

  1. 无损压缩(基本采用两种方式:消除冗余和更紧凑的表示方式)

  1. 行程编码

  1. 给所有数据前都标上长度,多次重复的数据只保留一位即可

  1. 字典编码:DFTBA

  1. 用符号来表示数据

  1. 用到哈夫曼树:

  1. 1950年 大卫 哈夫曼 发明的高效编码方式

  1. 通过列出数据出现频率,每轮列出两个最低频率,按频率排序

  1. 例如 黑黄 出现一次 ,黑白  出现一次 , 白黄 出现两次 黄黄出现四次

  1. 按哈夫曼树排列

  1. 最后压缩的结果为:字典加上数据对应符号

《重新了解计算机基础》- Crash Course Computer Science(计算机科学速成课)笔记15-21_第1张图片
  1. 有损压缩

  1. 感知编码:依赖人类感知模型

  1. 音频压缩:用不同精度编码不用频段

  1. 删掉人类听不到的超声波等

  1. 完整保留人类敏感的人声

  1. 图片压缩:通过降低分辨率来压缩

  1. 如使用8x8像素,将相似颜色统一成一个颜色

  1. 经典格式:JPEG

  1. 视频压缩:

  1. 时间冗余:视频中不动的像素

  1. 找出帧与帧之间的相似不定,用简单的效果来实现移动、旋转等效果

  1. 经典格式:MPEG-4

你可能感兴趣的:(学习)