目录
计算机硬件基本组成
主存储器
存储体:存放数据,分为一个个存储单元,按地址存储。每一个存储单元会存放一串二进制代码(存储字),存储字的位数叫做存储字长,每一个存储单元对应一个地址信息。存储字的每一bit都被存在一个电子元件中。
MAR:存储地址寄存器,指明存储单元的地址,反映存储单元的个数。
MDR:存储数据寄存器,反映存储字长
MAR=4bit–>一共有2^4个存储单元
MDR=4bit–>存储字长为4bit
运算器
控制器
完成一条指令的步骤:取指令(PC)–>分析指令(IR)–>执行指令(CU)
初始:指令、数据存入主存,PC指向第一条指令
从主存中取指令放入IR,PC自动加一,CU分析指令,CU指挥其他部件执行指令
CPU区分指令和数据的依据:指令周期的不同
校验码基本概念
由若干位代码组成的一个字叫做码字。
将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离。
100和010的距离为2
一种编码方案可能有若干个合法码字,各合法码字间的最小距离称为码距。
00、01、10、11的码距为1
100、001、010、111的码距为2
当码距d=1时,如果在传输过程中的合法码字发生了一位跳变,那么跳变后的码字仍可能是合法码字,此时不能检测出来错误。
当码距d=2时,如果在传输过程中的合法码字发生了一位跳变,那么跳变后的码字不可能是合法码字,此时可以检测出错误。
d=1时,无检错能力;当d=2时,有检错能力;当d>=3时,若设计合理,可能具有检错、纠错能力。
奇偶校验码
设计思路:在n位有效信息位的首部或者尾部加入一位奇偶校验位
奇校验码:整个校验码(有效信息位和校验位)中1的个数为奇数。
偶校验码:整个校验码(有效信息位和校验位)中1的个数为偶数。
给出两个编码1001101和1010111的奇校验码和偶校验码。设最高位为校验位。
则1001101对应的奇校验码为1 1001101
偶校验码为0 1001101
1010111对应的奇校验码为0 1010111
偶校验码为1 1010111
偶校验的硬件实现:各信息位进行异或运算,得到的结果即为偶校验位。
进行偶校验:将所有位(有效信息位和校验位)进行异或,结果为1说明出错。
异或:相同为0,相异为1
1001101异或结果为0,则偶校验码为0 1001101
偶校验:01001101异或结果为0,说明可能正确
海明校验码
设计思路:将n个信息位分为k个分组,对于每一个分组都进行偶校验,也就是每一个分组对应一个校验位,一共有k个校验位。
问:需要多少校验位?
每个校验位可以携带两种信息状态(对/错,错在哪),则k个校验位可以携带2k种信息状态。
2k >= n+k+1
信息位+校验位=n+k位,也就是这n+k位可能出错,再加上一种正确的状态
问:校验位怎么分布?
设信息位为D4、D3、D2、D1(1010),校验位分别为P3、P2、P1,最终的海明码为H7、H6、H5、H4、H3、H2、H1
规定:校验位Pi放在海明号为2(i-1)的位置上,即第1、2、4、8…位
H7 | H6 | H5 | H4 | H3 | H2 | H1 |
---|---|---|---|---|---|---|
1 | 0 | 1 | P3 | 0 | P2 | P1 |
问:如何确定校验位的值?
对于信息位:
H3:3–>011
H5:5–>101
H6:6–>110
H7:7–>111
对于校验位,三个分组分别进行偶校验
也就是P1和H3、H5、H7一组,即D1、D2、D4(011)
P2和H3、H6、H7一组,即D1、D3、D4(001)
P3和H5、H6、H7一组,即D2、D3、D4(101)
问:如何进行纠错?
即,将每一组的所有位进行异或,结果为0则正确,为1则错误
如果正确海明码为1010010,但接收到1010000
先算出S1=0,S2=1,S3=0,那么是第010位出错
海明码检错能力:2位
纠错能力:1位
但是无法区分到底是有一位错误还是两位错误
解决:
在海明码首部添加H8(全校验位),对整体进行偶校验
H8 | H7 | H6 | H5 | H4 | H3 | H2 | H1 |
---|---|---|---|---|---|---|---|
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
若S3S2S1=000且全体偶校验成功–>无错误
若S3S2S1!=000且全体偶校验失败–>有一位错误,纠正即可
循环冗余校验码
原码
符号位为0是正数,符号位是1为负数
若机器字长为n+1,则原码整数表示范围[-(2n-1),2n-1]
定点小数表示范围[-(1-2-n),1-2-n]
真值0有+0和-0两种情况
反码
若符号位为0,则反码=原码
若符号位为1,则数值位取反
真值0有+0和-0两种情况
取值范围同原码
补码
正数反码=原码
负数的原码=补码末位+1
补码=反码+1
补码的真值0只有一种表示形式
定点整数补码[x]补=10000000表示x= -27
定点小数补码[x]补=1.0000000表示-1
所以若机器字长为n+1,则补码整数表示范围[-2n,2n-1]
定点小数表示范围[-1,1-2-n]
补码的原理:用加法代替减法
在模运算中,我们知道(-3)mod12=9,9mod12=9,此时就说-3和9互为补数,那么10+(-3)和10+9在mod12的条件下是等价的,就可以说用加法代替了减法。而a的补数=模-a的绝对值
在计算机原码中,一共有8个bit,可以表示0~28-1之间的数,在计算时,计算机会自动只保留后8位数,也就是说,计算机完成了mod28的运算。
设原码00001110(14)和10001110(-14)进行加法运算,得到10011100,结果并不是0,但是
根据a的补数=模-a的绝对值的原理,可以求出原码的补数为11110010,正好是补码,而00001110与之进行加法运算,结果刚好是0。这也就是补码的作用。
补码的作用:使用补码可将减法操作转变为等价的加法,ALU中无需集成减法器。执行加法操作时,符号位一起参与运算。
移码
补码的基础上符号位取反,移码只能表示整数
移码的0只有一种表示情况
移码表示范围与补码相同
移码的作用:方便比较大小
浮点数
阶码:用补码或移码表示定点整数
尾数:用原码或补码表示定点小数
Cache高速缓冲存储器
由于cpu和内存在处理速度上不对等,cpu速度快,内存速度很慢,于是提出了存储系统的一些优化策略,对于主存我们可以用双端口RAM,还有多模块存储器,这样的方式来提高储存的工作速度,但是无论组成的速度再怎么提高,相比于CPU的读写运算速度,这个速度差距是很大的,所以如何解决这个问题,一个比较容易想到的方法是我们可以设计更高速的存储单元,也就是Cache。
工作原理:将某些主存块复制到Cache中,缓和cpu和主存之间的速度矛盾。
Cache出现的因素: 1.由于cpu速度和性能提升很快而主存速度较低且价格高。2.程序执行的局部性特点。
局部性原理:
**空间局部性:**在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的。
**时间局部性:**在最近的未来要用到的信息(指令和数据),很可能是现在正在使用的信息。强调时间上很快就会再次调用
基于局部性原理,我们不难想到,可以将cpu目前访问的地址周围的部分数据放到Cache中,cpu现在Cache里找所需数据,如果没有找到,再去主存里找。
设t_c为访问一次Cache所需要的时间,t_m为访问一次主存所需时间
Cache命中率H:CPU欲访问的信息已在Cache中的比率
Cache缺失(未命中)率M=1-H
那么Cache-主存 系统的平均访问时间t为
t = Ht_c+(1-H)(t_c+t_m)
当cpu同时访问Cache和主存,若在Cache中找到,则立即停止访问主存,此时平均访问时间为
t = Ht_c+(1-H)t_m
基于局部性原理,我们不难想到,可以将cpu目前访问的地址周围的部分数据放到Cache中,那么如何定义“周围”?
将主存的存储空间分块,如:每1KB为一块。主存和Cache之间以块为单位进行数据交换。
Cache分级,越靠近上层,速度越快,容量越小;越靠近下层,速度越慢,容量越大。
Cache和主存的映射方式
- **全相联映射:**主存块可以放在Cache的任意位置
- 优点:冲突率低。缺点:访问速度慢
- **直接映射:**每个主存块只能放在一个特定的位置:Cache块号=主存块号%Cache总块数
在Cache中,每一个块都有标记位和有效位。标记位存放主存的地址,但实际上主存块号末尾n位直接反映它在Cache中的位置,所以将主存块号的其余位作为标记。有效位为1表示这个块已经存放了数据,是有效的。
优点:访问速度快。缺点:冲突率高 - 组相联映射: Cache块分为若干组,每个主存块可放在特定分组的任意位置:组号=主存块号%分组数
优点:另外两种方式的折中。
Cache替换算法
存储器的层次化结构
1.主存–辅存
实现虚拟存储系统,解决了主存容量不够的问题
由硬件+操作系统完成
2.Cache+主存
解决了主存和cpu速度不匹配的问题
由硬件自动完成
存储器分类
1.按存储介质分类
-
半导体存储器:主存、Cache
-
磁表面存储器:磁带、磁盘
-
光存储器:光盘
2.按存取方式分类 -
随机存取存储器RAM:读写任何一个存储单元所需时间都相同,与存储单元所在的物理位置无关。(速度最快)如内存条
-
顺序存取存储器SAM:读写一个存储单元所需时间取决于存储单元所在的物理位置。(速度最慢)如磁带
-
直接存取存储器DAM:既具有随机存取特性,又有顺序存取特性。先直接选取信息所在区域,然后按顺序方式存取。如磁盘
-
串行访问存储器:SAM和DAM都是。读取存储单元所需时间与存储单元物理位置有关。
-
相联存储器CAM:可以按照内容访问的存储器。可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器。
3.按信息的可更改性分类 -
读写存储器:可读可写
-
只读存储器ROM:只能读不能写。如蓝光光碟,BIOS通常写在ROM中
4.按信息的可保存性分类 -
易失性存储器:断电后,存储信息消失。如主存、Cache
-
非易失性存储器:断电后信息仍然保持。如磁盘、光盘
-
破坏性读出:信息读出后,原存储信息被破坏。如DRAM,读出数据后要进行重写。
-
非破坏性读出:信息读出后,原存储信息不被破坏。如SRAM芯片、磁盘、光盘
用户可见寄存器和用户不可见寄存器
- 用户可见寄存器:即程序员可以通过汇编等方式改变存放变量的值。如程序计数器(PC),累加器(ACC),状态寄存器(PSW),通用寄存器
- 用户不可见寄存器:即对用户是透明的。如:MAR,MDR,指令寄存器
信息安全部分
数字签名
基于公钥的数字签名系统:A向B发送消息,A用自己的私钥对消息进行签名后再用B的公钥对签名后的数据进行加密,B收到信息后先用B的私钥解密,再用A的公钥认证A的签名及消息的真伪。(公钥进行加密和认证,私钥用于解密和签名)
数字签名的作用:1.B可验证消息确实来源于A。2.A不能否认发送过消息。3.B不能编造或改变消息。
摘要
证书认证
用户获取CA的数字证书后通过验证CA的签名来确认数字证书的有效性,从而验证网站的真伪。
防火墙
采用机制:
- 代理机制:安全性高,效率低
- 包过滤机制:安全性低,效率高,对用户是透明的不可见的。过滤依据:源IP地址、源端口号、目的IP地址、目的端口号
功能: - 对数据包过滤
- 保存用户访问网络记录
- 服务器代理功能
病毒类型(以破坏为主)
- 蠕虫病毒:传染途径是通过网络、移动设备、电子邮件。如:欢乐时光、熊猫烧香、红色代码、爱虫病毒
- 系统病毒:以感染台式机、服务器为主。如:CIH
- 引导区病毒:破坏引导盘、文件目录
- 宏病毒:破坏office文件相关
特洛伊木马(以窃取为主)
服务器端位于被感染的计算机。特洛伊木马服务器运行后会尝试建立网络连接。
如:X卧底、冰河
拒绝服务攻击
攻击者想办法让目标机器停止提供服务。只要能对目标造成麻烦,使某些服务器被暂停甚至死机,都属于拒绝服务攻击。
攻击者使服务器实现两种效果:1.迫使服务器的缓冲区满,不接收新的请求。2.使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。
重放攻击
攻击者发送一个目的主机已接受过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
安全需求
物理线路安全:机房安全
网络安全:入侵检测
系统安全:漏洞补丁管理
应用安全:数据库安全
加密算法
RSA:非对称加密算法(公钥加密算法)
DES:对称加密算法(私钥加密算法)
RC5:适用于大量明文进行加密传输
MD5:报文摘要算法,对任意长度的输入计算得到的结果长度为128位散列值