admin 管理员组文章数量: 887021
1.继电器
进化过程:继电器->真空管->晶体管
2.内存
算数逻辑单元ALU
输入二进制,它会执行计算
逻辑门
-
特殊的异或门:
-
使用逻辑门可以做到储存数据–>进而可以实现手搓内存;
内存
引入锁存器——是数字电路中一种具有记忆功能的逻辑元件,用于存储一位二进制信息(0或1)。通常由多个逻辑门组成,并且可以根据输入信号的状态保持或改变其输出状态。
- 锁存器
放入数据称为“写入”,拿出数据称为“读取”。
一个简单的锁存器一般只能储存一个 位(bit),0或1。
- 锁存器进化成寄存器
寄存器是由多个锁存器组成的存储器阵列,可以存储多个位的数据。可以理解为很小的一块内存,能存一个值。
并排放置8个锁存器,可以存8位的数据,比如一个8位的数字。寄存器能存一个数字,这个数字有多少位,叫做“位宽”。
写入数据之前,需要打开来启用内存,可以使用一根线来连接所有的“允许输入线”。
比如说8位寄存器(8位内存),8条输入线,8条输出线,一条贯穿的允许写入线(是否启用内存):
可是,尽管简化了允许输入线,但是这种形式下,并排放置组成的寄存器的每个锁存器都需要2条线(数据输入和数据输出)。那么如何简化这部分?
- 解决方法是矩阵
如果要启用寄存器中的某个锁存器,就相应的打开行线和列线,放大每一个锁存器来看:
这种情况下,还是用一根“允许写入线”来贯穿所有的锁存器。但是想要启用某个锁存器的内存(也就是想要向里面存/取数据),就需要满足两个条件:一个是锁存器“允许写入线打开”;另一个是行线和列线被打开。
简化结果:一条“允许写入线”、一条“数据线(读/写数据经过的线)”、一条“允许读取线”,16X16=256,16条行线、16条列线。可以理解为:因为有了行线和列线的约束,其他权限线和数据线可以都设置为一条即可。
可以将允许写入线和允许读取线理解为权限线,这只是权限是否允许,具体的操作还是在数据线那里执行。
- 矩阵中锁存器的地址
因为这个例子是256个锁存器排成的矩阵,16X16=256。一共16行16列,每个锁存器的地址就可以表示为(行,列)。行/列的表示使用4位足矣。例如,12行8列可以表示为(1100行,1000列),八位地址:11001000. - 多路复用器
使用一个多路复用器处理行,另一个多路复用器处理列,那么我们抽象一下:
- 扩大规模—RAM
RAM是一块大内存,能在不同地址上存大量数字
不断把内存打包到更大规模…
将8个256位内存并排放置,组成:
8个256内存有256个不同的地址,每个地址对应着8个位的位置,那么一个地址可以存1*8=8位=1字节的数据;总共可以存256字节数据:
内存的一个重要特性是:可以随时访问任何位置。
不同种类的RAM本质上都是矩阵的层层嵌套,来储存大量信息
3.中央处理器—CPU
- 主要组成:寄存器+RAM+ALU+ …
- 基本流程:取指令->解释->执行
4.编程方式
-
早期的编程方式进化过程:打孔纸卡->插线板->面板拨动开关
-
计算机只能理解二进制,称为“机器语言”或者“机器码”。所以在编早期,只能通过写对程序的高层次描述(伪代码),然后使用操作码表转换成机器码来进行编程
-
之后出现了助记符——汇编语言,通过汇编器读取使用汇编语言写的程序,然后转成机器码。汇编器能够将汇编语言转换成机器码。但是,一条汇编指令对应一条机器指令,这个时候程序员依旧需要思考用什么寄存器和内存地址;
-
高级语言的出现
第一个高级语言—A-0诞生。通过编译器,一行高级语言可转换成几十条二进制机器指令。编译器专门把高级语言转换成汇编或者机器码等低级语言。需要注意的是,计算机只能直接执行机器码。
与使用汇编语言不同,使用高级语言不用从内存取值和寄存器打交道,只需要使用内存的抽象——变量来储存数据。
5.计算机科学之父—阿兰·图灵
- Lambda算子证明了不存在可以回答可判定性问题的算法
- 阿兰·图灵发明了图灵机—具有和Lambda算子等同的数学计算力。图灵起初证明了图灵计算机理论上可以执行任何计算;然而证明了停机问题是无法解决的,所以计算机的能力有限,无论有多少时间和内存,有些问题是无法通过计算解决的。
- 图灵测试:如果计算机能够欺骗人类相信它是人类,才算是智能。
6.软件工程(Software Engineering)
1.打包成对象的思想——“面向对象编程”
一个大的项目程序可以打包成若干函数(Function);某些相关的函数又可以分类打包成层级、对象(Object);相关的对象可以作为子对象打包成新的一个层级对象。
总的来说,对象可以包括其他对象、函数以及变量。
- API—Application Programming Interface
定义好的“程序编程接口”。不用知道具体细节,只要知道怎么使用就行了。API控制哪些函数和数据能够让外部访问,那些仅供内部,即设置public和private来设置权限。隐藏复杂度,选择性的公布功能。
- IDE—Integrated Development Environment集成开发环境
- Coding——码代码
- Debugging——调试
- Documentation——代码文档 README
- Source Control——源代码管理
- Check out——检查编辑代码
- Commit——提交代码
- Rolled Back——回滚版本
- QA——质量保证测试
7.集成电路与摩尔定律
-
集成电路(IC)
-
印刷电路板 (PCB)
通过蚀刻金属线的方式,把零件连接到一起。把PCB和IC结合使用,可以大幅减少独立组件和电线,实现同样的功能。 -
全新制作工艺—光刻
用光把复杂图案印到材料上,可以制作出更加复杂的电路
-
半导体、芯片和集成电路
半导体材料就是元素周期表上特定位置的元素;集成电路就是许多小的电子组件的集成;集成电路一般约等于芯片,将集成电路进行封装:
(两种不同的封装方式)
- 摩尔定律
集成电路上可容纳的晶体管数目,约每隔两年便会增加一倍;
8.操作系统 (OS)
计算机越来越快,迫切需要一种方式,让计算机自动运作,于是,操作系统诞生了。
- 操作系统也是程序
但它有硬件操作的特殊权限,可以运行和管理其他程序。操作系统一般是开机第一个启动的程序,其他所有程序都由操作系统启动。 - 批处理
一次给计算机多个程序,运行完一个会自动运行下一个程序。 - 外部设备
和计算机连接着的其他设备。
和早期的外部设备交互是非常底层的,程序员要了解硬件的细节…
OS的功能
- 设备驱动程序
所以操作系统来充当硬件和软件之间的媒介,提供API来抽象硬件 - 多任务处理
操作系统能力的进化——多个程序可以同时运行,在单个CPU上共享时间 - 虚拟内存
真正的程序可能会分配到内存中数十个地方,存在一堆不连续的内存中。为了隐藏这种复杂性,操作系统会把内存地址进行虚拟化——虚拟内存。程序可以假定内存总是从地址0开始。操作系统会自行处理虚拟内存和实际物理内存之间的映射。 - 动态内存分配
程序的内存大小可以灵活增减。为操作系统同时运行多个程序提供了极大的灵活性。 - 内存保护
如果一个程序开始出错,它只会捣乱自己所被分配的内存,而其他程序所在的内存不受影响。
发展
- Unix 和 panic警告
Unix,当时最流行的操作系统之一 - 个人电脑(PC)
操作系统很小,缺乏内存保护和多任务处理等功能,程序经常崩溃,但是可以重启解决。
对比现代的操作系统:Mac系列、Win系列、Linux、iOS 和 Android。虽然大多是情况下个人使用,但它们都具有“多任务、虚拟内存、内存保护”等功能。
9.内存与储存介质
机械化信息存储形式
- 最早的储存介质是打孔纸卡和打孔纸带
磁性存储时代的开始
-
磁带,顺序存取数据
电流方向决定了极性,代表1和0。缺点是访问速度很慢。
-
磁鼓存储器,顺序存取数据
类似磁带,硬盘驱动器的前身,之后有了磁盘的发展。
-
延迟线存储器,顺序存储器
-
磁芯存储器,随机存储器的早期版本
磁盘储存时代
- 磁盘(包括硬盘和软盘等)
磁盘属于直接存取存储器,即既不像 RAM 那样随机地访问任何一个存储单元,又不像顺序存取存储器那样完全按顺序存取,而是介于两者之间。存取信息时通常先寻找整个存储器中的某个小区域(如磁盘上的磁道),再在小区域内顺序查找。
原理还是一样的,磁盘表面有磁性,使得写入头和读取头可以处理0和1。优点是可以叠在一起。
另外还有光存储
如DVD和CD,原理如下:
硬盘细究
如今储存技术正在朝固态前进,机械硬盘(HDD)逐渐被固态硬盘(SSD)取代,二者都属于非易失性内存类型。
- SSD是完全没有机械零件的,使用的是集成电路,而不是光纤或磁力存储媒介;数据存储在哪里并不重要,因为固态硬盘各个扇区的访问速度都一样,访问时间是很快的。
- HDD基于磁性旋转盘片技术,使用移动磁头在旋转盘片或磁盘上执行数据读取和写入操作,在外边缘上存储的数据访问起来要比中心位置存储的数据快;使用了大量的活动机械结构,因此较容易发生机械性的故障,同时也容易因为热、冷、冲击及震动等环境条件而产生数据损毁的问题。
内存层次结构
访问速度、空间大小、成本因素不同
10.文件系统
文件格式
- TXT文件
原始数据是一堆二进制机器码,先将二进制转成十进制,解码数据的关键是ASCII码。 - WAV文件
-
波形(Wave)文件 ,它来存储音频数据。数据的数据称为元数据,WAV音频数据的元数据有码率、单/双音道、立体声等。
-
元数据存在文件开头,在实际数据前面,因此也叫文件头(Header)。WAV文件的前44个字节的元数据形式是这样的:
-
其中有一部分都是一样的(写着WAVE的部分),其他部分的内容会随着数据具体内容变化;
-
音频数据紧跟在元数据之后,是一长串的数字。
-
储存的就是音频采样数据的振幅。
- BMP文件
-
位图(Bitmap),它存储图片。计算机上图片是由许多像素方块组成的,每个像素由红绿蓝三种颜色组成(RGB)。
-
其中,颜色深度24位(8位红色、8位蓝色、8位绿色)。8bit=1byte,所以表示颜色的深度程度是0-255。由于成色效果是在三种颜色共同作用下,所以每3字节组成一个像素的颜色,第一个像素颜色为白色(255红+255蓝+255绿)。
-
假设元数据中的图片大小是4X4像素的,那么成像效果就是4x4的像素矩阵:
以上文件格式或是其他文件格式,文件在底层是完全一样的:一长串的二进制数字。为了知道文件是什么,文件格式至关重要。
储存文件
-
将储存器抽象成能排数据的桶。
-
把文件连续储存,分文件。为了记录不同文件位置,需要额外的“目录文件”。目录文件经常放在开头,位置0,方便寻找。
-
在目录文件中,其他不同文件的显示格式为“文件名” + “.文件格式”,还有其他的文件信息。如果对任何分文件进行改动,需要更新目录文件。
-
以上属于一个文件系统管理文件的例子,属于“平面文件系统”,因为文件都在同一个目录里、文件都在同一个层次。可以想到,如果对顺次连接的文件新增内容,那么就会覆盖掉后面的文件数据…
-
所以现代文件系统会做两件事:1.把空间划分成一块一块的,预留一些空间方便改动和管理,那么饿目录文件还要记录每个文件储存在哪个块里面;2.拆分文件,将文件存放在多个块里面。因为预留的空间是有限的,假如增添的内容过大,为了避免覆盖掉之后文件的数据,文件系统会分配一个没用的块来容纳额外的数据。这种操作有点像“虚拟内存”。
-
如果要删掉文件,只需要将目录文件中的记录删除,表示那块空间可用。但是保持内存块中的文件不动,当需要存入新的数据的时候,只需要覆盖掉无用的数据即可。注意在此之前,只是擦除了记录,并没有立刻删除数据,所以某种情况下的计算机数据是可以恢复的!
-
碎片
由于对文件数据的增加和删除等操作,会导致某个文件中的数据占用不同的块,处于分隔的状态,顺序也是乱的。碎片的产生不可避免。 -
碎片整理
-
分层文件系统
-
与平面文件系统相对的,平面文件系统将文件放在不同的文件夹下,文件夹套文件夹。
最大的变化是,需要在目录添加额外元数据(Is Directory?)。因为目录之下还可以有目录,所以要区分出文件和目录。
-
最顶层的目录文件是根目录,所有其他的文件和目录都在根目录下。可以看到这个根目录下有三个文件和两个子目录文件。
-
如果要查看子目录文件有什么文件,就要去访问它:
-
轻松移动文件:如果想把根目录中的一个WAV文件移动到music子目录文件,不需要改动任何数据块,只需要在对应的两个文件中增、删记录即可。
- 文件系统使我们不必关心文件在磁盘或磁带中的具体位置,使得整理和访问文件更加方便。
11.压缩
无损压缩
即不损失任何数据,解压之后和压缩前的数据完全一样。以下两种方法经常组合起来使用,现在几乎所有无压缩格式都是用它们完成。
-
游程编码
减少重复数据,适合经常出现相同值的文件。连续的数据就可以新增一个字节来储存个数进行简化。删除掉后那边的重复数据,为了保持一致,所有像素化成格式一致。有的情况会导致字节数会变多,那就说明不适合这种压缩方式。
-
字典编码 (DFTBA)
需要一个“字典”,储存“代码”和“数据”间的关系。使用更紧凑的方式表示数据块。
1,把图像看做是一块一块而不是一个一个像素。(以下例子把两个像素看做一块)2,根据频率生成哈弗曼树。3,使用0 1进行生成字典(也就是哈夫曼编码)4,最后整理成压缩后的数据,编码+对应的字典。
有损压缩
一些其他文件,丢掉一些数据影响不大。
- 感知编码
删掉人类无法感知的数据的方法。
- 有损音频压缩。人类对有某些音频的频率是不敏感的、听不到的(如超声波),可以扔掉;而对于人声是敏感的,不可扔掉;低音介于两者之间,听得到但是不怎么敏感,只是感受得到震动。有损音频压缩利用这一点使用不同的精度编码不同的频段。结果是听不出什么区别,不会影响体验。
- 有损图像压缩。最著名的是JPEG。人类的视觉也不是完美的,对于图像,我们善于看到尖锐对比(比如物体的边缘),但是不善于发现颜色的细微变化。利用这一点,JPEG把图像分解成8X8像素的块,然后删掉大量高频率空间数据
效果图
视频也算是一连串的图像,压缩的方法类似。
12.命令行界面
- 人机交互
- 早期机械计算设备使用齿轮、旋钮、开关等机械结构来输入输出,运行完毕之后数据通过打印机打印到纸上;
- 之后机械输入完全消失,出现了打孔纸卡和打孔纸带。但是输出还是打印到纸上,还有大量指示灯,在运行中提供实时反馈。
以上时期,计算机不会和人类进行交互式回应,程序开始运行后会一直运行,直到结束。 - 出现了与计算机的交互。使用类似现代的键盘——打字机,将数据输入。之后逐渐兴起了由单手到十指打字、十指盲打,使得打字速度大幅提高。这个时候是将字打到纸上。
之后出现了电传打字机,有电子接口,稍作修改就可以连接到计算机,电传交互界面诞生,用户和计算机来回“对话”——命令行界面。 - 随着电视的量产、处理器和内存的发展,屏幕代替电传打字机变得可能。协议没有改变,这种“虚拟电传打字机”叫做终端。使用命令行界面操作计算机仍传至今。
13.图形显示
早期屏幕是用来追踪运行的程序,例如寄存器的值。实时性显示,对于更新很快的屏幕来说刚好。但屏幕很少用于输出计算结果,结果一般都会打印在纸上。
- 阴极射线管
- 使用磁场来控制电子,发射到屏幕;
- 绘制图像:
矢量扫描。引导电子束描绘出形状;
光栅扫描。使用很多小线段绘制形状甚至文字。
14.图形学
简单了解:
- 扫描线填充
- 抗拒齿
- 光照
- 纹理化
对于渲染图形,CPU(中央处理器)不是为此设计的,负责处理操作系统和应用程序运行所需的各类计算任务,它的图形运算能力不强。所以计算机工程师为图形做了专门的处理器——GPU(图形处理器),做图像和图形相关运算工作,实现图形加速。
15.计算机网络
- 第一个计算机网络
“球鞋网络”。1,安全可靠;2,联网可以共享打印机、储存空间… - 局域网(LAN)
计算机近距离构成的小型网络。小到同一个房间里的两台电脑,大到校园里的上千台机器。 - 以太网
在不同的LAN技术中,最著名和成功的是“以太网”,至今仍在使用中。使用一条以太网电线连接数台计算机,当其中一台计算机要传递数据时,就会以电信号的形式将数据传入电缆,因为电缆是共享的,所其他任何计算机都可以看到数据,但不知道传递的数据是给哪一台计算机的。
- 为了解决这个问题,以太网需要每台计算机有唯一的媒体访问控制地址(MAC地址)。将要发送到的计算机的地址放在头部,作为数据的前缀发送到网络,那么其他计算机只有看到自己的MAC地址才会处理数据。
- 这种多台计算机共享一个传输媒介的方法,称为“载波监听多路访问”,Carrier Sense Multiple Access,简称“CSMA”。因为很多计算机同时监听载体,所以叫监听、多路访问。
- 载体(Carrier)是指运输数据的共享媒介。以太网的载体是铜线;WIFI的载体是传播无线电波的空间。
- 载体传输数据的速度,叫“带宽”。
- 一个缺点是如果两台计算机同时传输数据,就会检测到冲突。
- 以太网的一个解决方法是,计算机会等待1s+随机时间,如果有网络堵塞,就会等待更多的时间…——指数退避
- 载体和其中的设备总称为“冲突域”。最好减少同一载体上计算机的数量。下面这种情况下,只有需要跨过交换机的数据传输才会同时占用两个网络。
- 路由
计算机网络由许多机器(称为节点)和连接这些节点的路径或链接组成。互连网络中两个节点之间的通信可以通过许多不同的路径进行。
路由是根据一些预先确定的规则选择最佳路径的程序,提高了网络通信的效率。
- 路由的类型
有两种不同的路由类型,取决于路由器创建路由表的方式:
1)静态路由
静态路由本身并不需要像动态路由那样通过协议来交换路由信息。静态路由是由网络管理员手动配置和维护的,不会自动更新。
2)动态路由
动态路由使用动态路由协议来自动学习和更新路由信息,尝试使用路由协议找出到目的地的最快路径。
- 路由表
路由表是存储在路由器或节点中的一个数据表,用于存储网络路径信息,供路由器查找路径使用,帮助路由器确定将数据包发送到哪个路径。
储存的信息包括:
1)接口:数据包应从哪个接口发送出去。
2)目的网络:目标网络的地址。
3)子网掩码:用于确定目标网络的网络部分和主机部分。
4)下一跳地址:数据包应发送到的下一个路由器或节点的地址。 - 路由器
路由器是连接多个网络、进行数据包的路由选择(执行路由过程)的联网设备。主要功能包括:
1)路径选择:使用路由协议和路由表选择最佳路径。
2)数据包转发:根据路径选择的结果,将数据包转发到下一个路由器或目标设备。
-
动态路由协议
一组用于创建、维护和更新动态路由表的规则,使用具体的动态路由算法。
-
动态路由算法
是实现动态路由协议的核心算法,用于计算最佳路由路径。
-
度量标准
跳数、带宽和延迟都是用于评估和选择最佳路由路径的度量标准,帮助路由协议在不同网络环境下选择最优路径。某些高级路由协议会综合考虑多个度量标准。
- 跳数
指数据包从源到目的地经过的路由器数量。每经过一个路由器,跳数增加1。 - 带宽
带宽是指链路上传输数据的最大能力(传输速度),通常以比特每秒(bps)为单位。带宽越大,链路的传输能力越强。 - 延迟
延迟是指数据包从源到目的地所需的时间,包括传输延迟、处理延迟和排队延迟等。延迟通常以毫秒(ms)为单位。
- 三种交换方式
1)电路交换
- 定义:在通讯开始前为通信双方建立一条专用通道,通讯过程中此通道一直被占用,直到通信结束释放资源。
- 三个步骤
1,建立连接,分配资源
2,进行通信过程
3,释放资源 - 缺点:资源浪费
2)报文交换
- 定义:将整个传送的数据作为独立的单元进行传输,报文在传输路径上的各个节点都要完全接收并存储,然后再转发到下一个节点。
- 特点:和分组交换类似,但是需要足够的存储空间来保存完整的报文。
3)分组交换
- 定义:将数据分组,分割成较小的数据包,每个数据包独立进行传输。
- 特点:
1,每个数据包可以走不同的路径
2,分组传输的数据是乱序的,到达目的网络不一定按照顺序,需要重新组装成完整数据(例如TCP协议把顺序排对)。 - 步骤:
1,将报文分成更小的等长的数据段
2,基于协议,每一个数据段加上一些元数据【如目的地址和原地址等组成首部 header。不同的协议加载的元数据不同,更高级的协议具有不同作用的header】,构成一个分组(packet),每个分组又称为“数据包”。如以下的IP协议和更高级的UDP协议组合成的UDP/IP协议:
3,每个数据包独立选择路由,路由器在每个节点对数据包进行路由,基于当前数据包的信息和路由表。
在现代计算机网络中,分组交换是最常用的方式,尤其是互联网,广泛依赖于这种方式来实现高效的数据传输和动态路由选择。
16.互联网
基于协议的数据传输
- 个人计算机和巨大的分布式网络连在一起,这个网络叫互联网。
- 计算机要获取数据,首先要连接到局域网。家里(这个范围内)路由器连接着的所有设备,组成了局域网(LAN)。
- 局域网再连接到广域网(WAN)。WAN的路由器一般属于用户的“互联网服务提供商”(ISP)。广域网里,线连接到一个区域性路由器(这个路由器可能会覆盖整个街区),然后在连接到一个更大的WAN(可能覆盖整个城市)…最终到达互联网主干。
- 互联网主干由一群超大型、带宽超高的路由器组成。
域名系统(DNS)
-
当计算机要访问一个网站时,需要两个东西:1.IP地址2.端口号。例如172.217.7.238的80端口号就是谷歌的IP地址和端口号。
-
实际上可以在浏览器输入IP地址和端口号,就会进入到对应的网站,但是记忆长串数字很麻烦,google就比较好记。所以互联网有个服务就负责把域名和IP地址一一对应,简称为DNS。
-
DNS工作原理:在浏览器输入youtube,浏览器会去访问DNS服务器得到它的IP地址。DNS服务器一般是由互联网供应商提供,DNS会查表,如果域名存在,就返回对应的IP地址。
-
DNS不是存成一个超长的列表,而是存成树状结构:
-
OSI模型
17.万维网
-
定义:是一个信息共享的空间,用户可以通过互联网访问和浏览网页。
-
组成部分:
1)HTML:HTML(超文本标记语言)编写网页,为万维网的基本构成单元。
2)浏览器:用户通过浏览器(如Chrome、Firefox)访问和浏览网页。
3)URL: 每个网页都有一个唯一的URL(统一资源定位器)来标识和访问。
4)HTTP/HTTPS: 传输协议,用于在浏览器和服务器之间传输数据。 -
功能:
1)提供信息和资源的访问。
2)支持超文本链接,使用户可以从一个网页跳转到另一个网页。
3)支持多媒体内容,如文本、图像、视频和音频。 -
互联网是全球计算机网络的集合,是物理基础设备刚和协议的总和;万维网是基于互联网运行的服务之一,来访问和浏览网页。
-
例如使用HTML来写一个简单的网页
-
搜索引擎开始出现
-
网络中立性
18.计算机安全
可以把计算机安全看成是保护系统和数据的:保密性、完整性和可用性,称为信息安全的三大支柱。
- 保密性
只有拥有权限的人才能够访问和读取计算机系统和数据。 - 完整性
只有拥有权限的人才能够修改或者破坏数据 - 可用性
确保有权限的人可以随时访问系统和数据
版权声明:本文标题:【计算机科学导论】——基础 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729142006h1323057.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论