计算机系统知识

计算机系统知识

基本硬件

计算机的基本硬件系统包括:运算器、控制器、存储器、输入设备和输出设备。

运算器、处理器、寄存器组和内部总线等部件被集成在一起称为中央处理单元(Central Processing Unit,CPU),是硬件系统的核心。

运算器由算术逻辑单元(Arithmetic and Logic Unit,ALU)、累加寄存器(AC)、数据缓冲寄存器(DR)和状态条件寄存器(PSW)组成,其对进行的各种算术和逻辑运算都是在控制器的控制下进行的。

控制器使用其包括的指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑来控制整个 CPU 的工作。

指令控制逻辑通过指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)和指令译码器(ID)来完成取指令、分析指令和执行指令的操作。

寄存器分为专用寄存器和通用寄存器,运算器和控制器中的寄存器是专用寄存器,其作用是固定的。

存储器分为内部存储器和外部存储器,分别用来临时和长期存储数据。

输入和输出设备简称外设,分别用来输入和输出数据。

CPU 的所有计算、命令操作和数据处理都是由其核心(也称内核)执行,其是 CPU 中心隆起的芯片,是由单晶硅以一定的生产工艺制造出来的。

多核是在一个单芯片上集成两个或多个处理器内核,每个内核的部件各自独立或共享部分部件。CPU 的主要厂商 AMD 和 Intel 的双核技术在物理结构上有很大不同。AMD 将两个内核做在一个 Die(晶元)上,称为“双核”方案,而 Intel 则是将两个不同芯片上的内核封装在一起,称为“双芯”方案。

数据表示

数值在计算机中的表示形式为机器数,采用二进制计数制。无符号数表示正数,可以根据约定的小数点位置在最高位之前还是最低位之后分为纯整数和纯小数。

带符号的机器数,最高位为符号位,1 表示负数,0 表示正数。这些数值可以采用原码、反码、补码和移码等不同的编码方法。

原码:最高位为符号位,其余位为数值绝对值。

反码:最高位为符号位,正数的其余位保持不变,负数的其余位绝对值按位取反。

补码:最高位为符号位,正数的其余位保持不变,负数的其余位绝对值按位取反后加 1 。

移码:在原数值上增加一个偏移量,常用来表示浮点数的阶码。如果机器字长为 n 且规定偏移量为 2 n − 1 2^{n-1} 2n1 ,那么数值的移码就是相应补码的符号位取反。

设机器字长为 n ,定点数的表示范围如下:

码制定点整数定点小数
原码-( 2 n − 1 2^{n-1} 2n1-1) ~ +( 2 n − 1 2^{n-1} 2n1-1)-(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1)) ~ +(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1))
反码-( 2 n − 1 2^{n-1} 2n1-1) ~ +( 2 n − 1 2^{n-1} 2n1-1)-(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1)) ~ +(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1))
补码- 2 n − 1 2^{n-1} 2n1 ~ +( 2 n − 1 2^{n-1} 2n1-1)-1 ~ +(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1))
移码- 2 n − 1 2^{n-1} 2n1 ~ +( 2 n − 1 2^{n-1} 2n1-1)-1 ~ +(1- 2 − ( n − 1 ) 2^{-(n-1)} 2(n1))

对于 0 而言,原码和反码各有两个,而补码和移码则只有一个。

浮点数,小数点位置不固定的数,其能表示更大范围的数值,其一般表示形式如下:

N = 2 E ∗ F N=2^E*F N=2EF

E 为阶码,F 为尾数。阶码决定浮点数值范围,尾数决定数值精度。

浮点数的表示方法不是唯一的,而对于规格化的浮点数,则通过调整阶码,将尾数的绝对值限定在区间 [0.5,1] 之间。

这种浮点数表示方法,将机器字长分为两部分,前部分为指数(阶码)用移码表示,后部分为尾数用补码表示,两部分都包含符号位。

而工业标准 IEEE 754 则采用下面的表示形式:

( − 1 ) S 2 E ( b 0 b 1 b 2 b 3 . . . b p − 1 ) (-1)^S2^E(b_0b_1b_2b_3...b_{p-1}) (1)S2E(b0b1b2b3...bp1)

( − 1 ) S (-1)^S (1)S 为浮点数数符,S 为 0 时表示正数,为 1 表示负数。

E 为指数(阶码),用移码表示。

( b 0 b 1 b 2 b 3 . . . b p − 1 ) (b_0b_1b_2b_3...b_{p-1}) (b0b1b2b3...bp1) 为尾数,长度为 P 位,用原码表示。

另外,在该标准中,约定小数点左边隐含一位,通常为 1 ,所以单精度浮点数的尾数有效位为 24 位。

例:利用 IEEE 754 标准将数 176.0625 表示为单精度浮点数。

首先将数值转换为二进制:

( 176.0625 ) 10 = ( 10110000.0001 ) 2 (176.0625)_{10} = (10110000.0001)_2 (176.0625)10=(10110000.0001)2

十进制转为二进制,整数部分除以 2 ,得到的余数 0 或 1 作为二进制位的值,得到的商重复该操作,直到商为 0 ,那么所有的余数从后向前排列即为整数部分的二进制值。

小数部分,乘以 2 ,得到的积的个位的 0 或 1 作为二进制位的值,该积重复该操作,直到小数部分为 0 ,那么所有的个位结果从前向后排列即为小数部分的二进制值。

规格化处理: ( 10110000.0001 ) 2 = ( 1.01100000001 ) 2 ∗ 2 7 (10110000.0001)_2 = (1.01100000001)_2 * 2^7 (10110000.0001)2=(1.01100000001)227

去除隐含的 b 0 b_0 b0 位上的 1 ,再扩展为 23 位的尾数: ( 01100000001000000000000 ) 2 (011 0000 0001 0000 0000 0000)_2 (01100000001000000000000)2

指数为 7 ,增加指定的偏移量 127 后为 134 ,则移码为 ( 10000110 ) 2 (1000 0110)_2 (10000110)2

所以 ( 176.0625 ) 10 (176.0625)_{10} (176.0625)10 的浮点数表示形式为: ( 01000011001100000001000000000000 ) 2 (0 1000 0110 011 0000 0001 0000 0000 0000)_2 (01000011001100000001000000000000)2

浮点数的加减运算,首先需要进行对阶,之后尾数进行加减运算,得到新的尾数后进行规格化,然后判断是否溢出并进行舍入处理。

浮点数的乘除运算,尾数和阶码分别进行运算,之后对结果进行规格化并进行溢出判断以及舍入处理。

校验码

码距,一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。通过编码规则的设计可以使得数据在传输过程中出现错误时,使整个编码变成错误编码,这样便可以检测出接收到的数据是否有错。

奇偶校验码,通过在编码中增加一位校验位来使编码中 1 的个数为奇数(奇校验)或为偶数(偶校验),使码距变为 2 。这种编码方式可以检验出奇数个编码位出错的情况,但是无法检测出偶数个编码位出错的情况。

海明码,由贝尔实验室的 Richard Hamming 设计,通过在 n 个数据位之间的确定位置上插入 k 个校验位,来实现编码的检查和纠错,n 和 k 要满足下面的数据关系:

2 k − 1 ⩾ n + k 2^k-1 \geqslant n + k 2k1n+k

那么,

n 个数据位为: D n − 1 , D n − 2 , . . . , D 1 , D 0 D_{n-1},D_{n-2},...,D_1,D_0 Dn1,Dn2,...,D1,D0

k 个校验位为: P k , P k − 1 , . . . , P 2 , P 1 P_k,P_{k-1},...,P_2,P_1 Pk,Pk1,...,P2,P1

最终的海明码为: H n + k , H n + k − 1 , . . . , H 2 , H 1 H_{n+k},H_{n+k-1},...,H_2,H_1 Hn+k,Hn+k1,...,H2,H1

那么,海明码和校验码的位置关系为 j = 2 i − 1 j = 2^{i-1} j=2i1 H j = P i H_j = P_i Hj=Pi

在使用校验位对数据位进行校验时,数据位下标要等于校验位下标之和。

这样,得到每个校验码参与校验的所有数据位,对这些数据位进行异或运算便得到了该校验位的值(偶校验,如果采用奇校验,取相反值即可)。

在检查错误时,只要将校验位同其参与校验的数据位进行异或运算,得到的结果均为 0 (偶校验)或 1 (奇校验),那么说明传输的数据正确,如果出现不同结果,那么说明发生了错误,而校验结果从高到低排列的二进制值转化为十进制即为出错的码值位置。

循环冗余校验码(Cycle Redundancy Check,CRC),是利用生成多项式为 k 个数据位产生 r 个校验位来进行编码,编码长度是 n(n=k+r),也称 (n,k) 码。具体算法实例参见Sailist 的博文

存储系统

计算机中可能包含的存储器:CPU 内部的通用寄存器组和高速缓存(Cache)、CPU 外部的 Cache 、主板上的主存储器(内存)、联机磁盘存储器和脱机磁带存储器或光盘存储器等。

高速缓存中存储的是主存储器中的局部副本,用来提高数据的访问速度。CPU 访问主存储器中的信息时,首先要判断数据是否在 Cache 中,这就需要将主存储器地址映射为缓存地址。

  • 直接映像,主存中的块同 Cache 中的块是一一对应的,所以只要主存地址中区号同 Cache 中的主存区号相同,那么便可以从 Cache 中读取数据。

  • 全相联映像,将主存和 Cache 中的空间均分为大小相等的块,这样主存中的任意一块都可以调入 Cache 中,那么访问时,根据主存地址的块号找到对应的 Cache 中的块号,然后用块内地址访问数据即可。

  • 组相联映像,将上面两种方法结合使用。将 Cache 中的多个块分为一个组,将主存分为多个区,每个区再分为多个组。这样,采用直接映像来确定主存中的组是否在缓存中(通过区号的比较),如果命中,再通过全相联映射来决定 Cache 中的块号。

磁盘容量有两种指标:非格式化容量,指的是磁盘所能存储的总位数;格式化容量,指的是各扇区中数据区容量的总和。

非 格 式 化 容 量 = 面 数 ∗ ( 磁 道 数 / 面 ) ∗ 内 圆 周 长 ∗ 最 大 位 密 度 非格式化容量=面数*(磁道数/面)*内圆周长*最大位密度 =/
格 式 化 容 量 = 面 数 ∗ ( 磁 道 数 / 面 ) ∗ ( 扇 区 数 / 道 ) ∗ ( 字 节 数 / 扇 区 ) 格式化容量=面数*(磁道数/面)*(扇区数/道)*(字节数/扇区) =///

计算机安全

计算机资产包含系统和信息资源两大部分组成,分别包括硬件、软件、配套设施、相关文件资料,存储、处理和传输的各种信息。

信息安全的基本要素:机密性、完整性、可用性、可控性、可审查性。

对称加密技术,采用对称密码编码技术,即加密和解密使用相同的密钥。

对称加密算法:数据加密标准算法(Digital Encryption Standard,DES)、三重 DES(3DES 或 TDEA)、RC-5(Rivest Cipher 5)、国际数据加密算法(International Data Encryption Algorithm,IDEA)、高级加密标准算法(Advanced Encryption Standard,AES)。

非对称加密算法:RSA(Rivest Shamir Adleman)耗时长,多用于密钥的交换。

  1. 选择两个大的素数 p 和 q
  2. 得到 n=p*qz=(p-1)*(q-1)
  3. 选择一个与 z 互质的数 d
  4. 选择一个数 e 满足 e*d=1(mod z)

那么,公钥为 (e,n) 而私钥为 (d,n)

例:设 p=3 , q=11 则 n=33 , z=20 , 取 d=3 则 e=7 , 那么公钥为 (7,33) 私钥为 (3,33) ,对明文 2 加解密如下:

C = 2 7 ( m o d   33 ) = 128 ( m o d   33 ) = 29 C=2^7(mod\ 33)=128(mod\ 33)=29 C=27(mod 33)=128(mod 33)=29
P = 2 9 3 ( m o d   33 ) = 24389 ( m o d   33 ) = 2 P=29^3(mod\ 33)=24389(mod\ 33)=2 P=293(mod 33)=24389(mod 33)=2

哈希函数,根据一段长度不固定的字符串,得到一串固定长度的字符串,称为 Hash 值。MD2、MD4 和 MD5 等常用的 Hash 函数可以用来生存信息摘要,而后使用私钥对摘要进行签名。

计算机可靠性

计算机系统的可靠性,是指从开始运行到某个时刻这个时间段内能够正常运行的概率,用 R(t) 表示。

失效率,是指单位时间内失效的元件数与元件总数的比例,用 λ \lambda λ 表示。

λ \lambda λ 为常数,那么可靠性和失效率有如下关系:

R ( t ) = e − λ t R(t) = e^{-\lambda t} R(t)=eλt

两次故障之间系统能正常工作的时间的平均值称为平均无故障时间: M T B F = 1 / λ MTBF = 1/\lambda MTBF=1/λ

从故障发生到机器修复平均所需要的时间(平均修复时间,MTRF)来表示计算机的可维修性,即计算机的维修效率。

使用计算机系统在执行任务的任意时刻能正常工作的概率 A 来表示计算机的使用效率。

A = M T B F M T B F + M T R F A = \frac {MTBF} {MTBF+MTRF} A=MTBF+MTRFMTBF

计算机的 RAS ,是使用可靠性 R 、可用性 A 和可维修性 S 来衡量计算机系统。

串联系统的可靠性是各个子系统的可靠性的乘积:
R = R 1 R 2 . . . R N R=R_1R_2...R_N R=R1R2...RN
失效率是各个子系统失效率的和:
λ = λ 1 + λ 2 + . . . + λ N \lambda = \lambda _1 + \lambda_2 + ... + \lambda_N λ=λ1+λ2+...+λN

并联系统的可靠性需要先计算所有子系统均失效的概率:

R = 1 − ( 1 − R 1 ) ( 1 − R 2 ) . . . ( 1 − R N ) R=1-(1-R_1)(1-R_2)...(1-R_N) R=1(1R1)(1R2)...(1RN)

设子系统的失效率均为 λ \lambda λ ,那么系统失效率 μ \mu μ 为:

μ = 1 1 λ ∑ j = 1 N 1 j \mu=\frac 1 {\frac 1 \lambda \sum_{j=1}^N \frac 1 j} μ=λ1j=1Nj11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值