一. 计算机系统
(一). 计算机系统基础
一. 硬件组成
计算机系统是由硬件和软件组成的,它们协同工作来运行程序。计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。存储器是计算机系统中的记忆设备,分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。
二 。CPU 功能
中央处理单元(CPU)是计算机系统的核心部件,它负责获取程序指令、对指令进行译码并加以执行
。
控制器:
- 程序控制:CPU通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
- 操作控制: 一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
运算器:
- 时间控制:CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。
- 数据处理: CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务。
此外,CPU还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。
三 CPU组成
CPU主要由运算器、控制器、寄存器组和内部总线等部件组成
1 运算器
运算器由算术逻辑单元(Arithmetic and Logic Unit,ALU
)、累加寄存器
、数据缓冲寄存器
和状态条件寄存器
等组成,它是数据加工处理部件,用于完成计算机的各种算术和逻辑运算。相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。
运算器有如下两个主要功能。
- 执行所有的算术运算,例如加、减、乘、除等基本运算及附加运算。
- 执行所有的逻辑运算并进行逻辑测试,例如与、或、非、零值测试或两个值的比较等。
下面简要介绍运算器中各组成部件的功能
算术逻辑单元(ALU)Arithmetic Logic Unit | ALU是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。 |
---|---|
累加寄存器(AC)Accumulator | AC通常简称为累加器,它是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。例如,在执行一个减法运算前,先将被减数取出暂存在AC 中,再从内存储器中取出减数,然后同AC的内容相减,将所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。为ALU提供数据并暂存运算结果 |
数据缓冲寄存器(DR)Data Register | 在对内存储器进行读/写操作时,用DR暂时存放由内存储器读/写的一条指令或一个数据字,将不同时间段内读/写的数据隔离开来。DR的主要作用为:作为CPU和内存、外部设备之间数据传送的中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲;在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。 |
状态条件寄存器(PSW) | PSW保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)和单步标志等。这些标志通常分别由 1 位触发器保存,保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决。 保存由算数指令和逻辑指令运行或测试的结果建立的各种条件码内容。 |
2 控制器
指令 = 操作码 + 地址码
例如:1 + 2 中 1 和 2 为地址码; + 为操作码。
运算器只能完成运算,而控制器用于控制整个CPU 的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确执行,而且要能够处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。
指令控制逻辑要完成取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤。
指令寄存器(IR)Instruction Register | 当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入IR暂存,指令译码器根据 IR 的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。保存当前CPU执行的指令(指令 = 操作码 + 地址码) |
---|---|
程序计数器(PC)Program Counter | PC具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址。执行指令时,CPU自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。 |
**地址寄存*(AR)Address Register | AR保存当前CPU所访问的内存单元的地址。由于内存和CPU存在着操作速度上的差异,所以需要使用AR保持地址信息,直到内存的读/写操作完成为止。 |
指令译码器(ID)Instruction Decoder | 指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。对指令中的操作码字段进行分析解释 |
时序控制逻辑要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU 处理。
指令寄存器(IR)存放的是从内存中取得指令,就像个中间站一样,不过是存放指令的中间站
程序计数器(PC)存放的是指令的地址,还有计数的功能
地址寄存器(AR)存放的是cpu访问内存单元的地址
指令译码器(ID)是把操作码解析成对应的指令操作
PC:程序计数器(PC)保存下一条要执行或解码的指令的地址。
IR:指令寄存器(IR)保存当前正在执行或解码的指令。
3 寄存器组
寄存器组可分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器用途广泛并可由程序员规定其用途,其数目因处理器不同有所差异。
用户可见:通用寄存器组、程序状态字寄存器(PSWR)、程序计数器(PC)、累加寄存器(ACC)
用户不可见:指令寄存器(IR)、暂存寄存器(DR)、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)
(二). 计算机基本单位与进制
一 计算机基本单位
中文名称 | 英文全称 | 英文缩写 | 转换关系 |
---|---|---|---|
位(比特) | bit | b | |
字节 | byte | B | 1 B = 8b |
千字节 | KB | K | 1KB = 1024B |
兆字节 | MB | 1MB = 1024KB | |
吉字节 | GB | 1GB = 1024MB | |
太字节 | TB | 1TB = 1024GB | |
了解: 计算机中最小的数据单位: b 最小的操作单位: byte |
二. 进制
1. 概述
进制 | 后缀表示 | 基数 |
---|---|---|
二进制 | B(binary) | 0和1 |
八进制 | O(Octal) | 0-7 |
十进制 | D(decimal ) | 0-9 |
十六进制 | H(hexadecimal) | 0-9,A-F(0-15) |
2.进制转换
(1)十进制 (D)
n进制转 十进制: 按权展开求和
十进制转 n进制: 除n取余法 (从下往上)
(2) 二进制 (B)
转八进制 (O):
转十六进制 (H)
(3) 八进制 (O)
转二进制(B):
转十六进制(H):
(4) 十六进制(H)
转二进制(B):
转八进制(B):
3 进制加减
相加:规则: 逢 n 进 1
相减:规则: 借 1 转 n
2的次方:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 |
例题:

(三). 原码补码反码移码
一. 介绍
原码
最高位为符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。
反码
最高位为符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。
补码
最高位为符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。(补码的正负0编码相同。)
移码
正数和负数的移码实在其补码的基础上对符号位取反。(移码的正负0编码相同。)
二· 转换
正数:
负数:
三. 范围
四. 10进制转2进制技巧
若机器字长等于8,求 +45的二进制数
补码
和移码
编码相同
(四)浮点数
一. 概述
浮点数。当机器字长为n时,定点数的补码和移码可表示
二. 浮点数表示法
在浮点表示法中,阶码为带符号的纯整数,尾数为带符号的纯小数。
阶符 | 阶码 | 数符 | 尾数 |
在十进制中,一个数可以写成多种表示形式。例如,83.125 可写成
一个二进制数 N 可以表示为更一般的形式
用阶码和尾数表示的数称为浮点数,这种表示数的方法称为浮点表示法
。
例如:1011.10101 可以写成:
三. 浮点数相加
小阶向大阶对齐(损失精度下),尾数右移n位
四. 规格化浮点
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数。规格化就是将尾数的绝对值限定在区间[0.5,1]
工业标准 IEEE754 浮点数格式中阶码采用移码、尾数采用原码表示
五. 浮点数表示数值范围
如果浮点数的阶码(包括 1 位阶符)用R位的移码表示,尾数(包括1位数符)用M位的补码表示
,
则这种浮点数所能表示的数值范围如下。
(五) 寻址
指令 包含操作码和地址码, 例如 1 + 2,"+" 表示操作码, 1 和 2 是操作数。寻址就是寻找操作数的过程,例如,找到 1 和 2 拿过来计算
立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
- 立即寻址: 操作数就包含在指令中。
- 直接寻址: 操作数存放在内存单元中,指令中直接给出操作数所在存储单元的地址。
- 寄存器寻址: 操作数存放在某一寄存器中,指令中给出存放操作数的寄存器名,
- 寄存器间接寻址: 操作数存放在内存单元中,操作数所在存储单元的地址在某个寄存器中。
- 间接寻址: 指令中给出操作数地址的地址。
- 相对寻址: 指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。
- 变址寻址: 操作数地址等于变址寄存器的内容加偏移量。
(六) 校验码
一. 码距
码距: 一个编码方案中任意两个合法编码之间至少有多少个二进制位不同
一个校验码要想能够检错和纠错那么它的码距至少是3
二. 奇偶校验码
码距为2,有有检错能力,没纠错能力。常用的奇偶校验码有3种:水平奇偶校验码、垂直奇偶校验码和水平垂直校验码。
发送方 | 接收方 | |
---|---|---|
奇校验 | 增加一位校验码,使得编码中的1的个数为奇数 | 验证编码中1的个数是否为奇数 |
偶效验 | 增加一位校验码,使得编码中的1的个数为偶数 | 验证编码中1的个数是否为偶数 |
三. 海明码
海明码利用多组数位的奇偶性来检错和纠错 可以检错和纠错
** 码距为3**
设数据位是n位,校验位是k位,则n和k必须满足以下关系:
四. 循环冗余码
k个数据位[n,r+1]后跟r个校验位[r,1] 可以检错但不能纠错
码距为2 采用 模2运算 得到校验码
循环冗余校验码(Cyclic Redundancy Check,CRC)广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。CRC的代码格式为:
(六) RISC CISC
Reduced Instruction Set Computer (RISC)
Complex Instruction Set Computer(CISC)
RISC精简指令集计算机 | CISC复杂指令集计算机 | |
---|---|---|
指令种类 | 少、精简 | 多、丰富 |
指令复杂度 | 低(简单) | 高(复杂) |
指令长度 | 固定 | 变化 |
寻址方式 | 少 | 复杂多样 |
实现(译码)方式 | 硬布线控制逻辑(组合逻辑控制器) | 微程序控制技术 |
通用寄存器数量 | 多、大量 | 一般 |
流水线技术 | 支持(采用) | 支持(采用) |
(七) 指令流水线
一. 原理
例如一条指令要执行要经过3个阶段:取指令、译码、执行,每个阶段都要花费一个机器周期,如果没有采用流水线技术,那么这条指令执行需要3个机器周期;如果采用了指令流水线技术,那么当这条指令完成“取指”后进入“译码”的同时,下一条指令就可以进行“取指”了,这样就提高了指令的执行效率。
二. 公式
流水线执行时间: 流水线执行时间 = 一条指令执行的时间 + 最长时间段 × (n-1) ** (I+C+O)+(t-1)O**
加速比: 加速比 = 不采用流水线的执行时间 / 采用流水线的执行时间
流水线的操作周期: 流水线的操作周期为最长操作时间
吞吐率: 流水线的吞吐率是最长流水段操作时间的倒数
。
连续输入n条指令的吞吐率 = 总指令数/总指令数执行的时间 (n为总指令数)
顺序执行时间: 顺序执行时间=一条指令执行的时间×总指令数 v
流水线执行时间
执行时间: (I+C+O)+(t-1)O
(八) 存储器
相联存储器按内容访问的存储器
计算机的主存主要是由DRAM组成 ,DRAM需要周期性刷新
SRAM-->Cache
(九) Cache
一. 概念
高速缓存用来存放当前最活跃的程序和数据,其特点是:位于CPU与主存之间
;容量一般在几千字节到几兆字节之间;速度一般比主存快5~10倍
,由快速半导体存储器构成;其内容是主存局部域的副本,对程序员来说是透明
的。
二. 组成
高速缓存(Cache)、主存(Main Memory)与CPU的关系如图1-8所示。
Cache存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
现代CPU中 Cache 分为了多个层级,如图1-9所示。
三. 地址映像
在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像。
- 直接映像:冲突多,关系固定
- 全相联映像: 冲突少,关系不固定,主存中的一块可以映射到Cache中的任意一块,除非Cache满了才需要替换。
- 组相联映像:冲突较少,是直接映像与全相联映像的折中
1. 直接映像
直接映像是指主存的块与Cache块的对应关系是固定的
2. 全相联映像
这种映像方式允许主存的任一块可以调入Cache存储器的任何一个块的空间中。
3. 组相联映像
四. 替换算法
替换算法的目标就是使Cache获得尽可能高的命中率。常用算法有如下几种。
(1)随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
(2)先进先出算法。就是将最先进入Cache 的信息块替换出去。
(3)近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
(4〉优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。
五. Cache的命中率
Cache的命中率与Cache'容量的关系如图1-12所示。Cache容量越大,则命中率越高,随着Cache容量的增加,其失效率接近0%(命中率逐渐接近100%)。但是,增加Cache容量意味着增加Cache的成本和增加Cache 的命中时间。
Cache 与 主存的地址映射由硬件自动完成
(十) 中断
计算机在执行程序的过程中,当遇到急需处理的事件时,暂停当前正在运行的程序,转去执行有关服务程序,处理完后自动返回源程序,这个过程称为中断。
中断是一种非常重要的技术,输入输出设备和主机交换数据、分时操作、实时系统、计算机网络和分布式计算机系统中都要用到这种技术。为了提高中断的速度,通常把所有中断服务程序的入口地址(或称为中断向量)汇集在中断向量表。
中断向量提供 中断服务程序的入口地址
中断响应时间 从发出中断请求到开始进入中断处理程序
保存现场 为了正确返回原程序继续执行
(十一) 输入输出(I/O)控制方式
- 输入输出(I/O)控制方式:
- 程序查询方式
- 中断驱动方式
- 直接存储器存取方式(DMA)
一. 程序查询方式
- CPU和1/O(外设)
只能串行工作
,CPU需要一直轮询检查,长期处于忙等状态。CPU利用率低 - 一次只能读/写一个字(bit)
- 由CPU将数放入内存
- 需要CPU保护现场
二. 中断驱动方式
- I/O 设备通过中断信号主动向CPU报告I/O操作已完成
- CPU和I/O(外设)
可并行工作
- CPU利用率得到提升
- 一次只能读/写一个字(bit)
- 由CPU将数据放入内存
- 需要CPU保护现场
三. 直接存储器存取方式(DMA)
CPU和I/O(外设)可并行工作
仅在传送数据块的开始和结束时才需要CPU的干预
由外设直接将数据放入内存(主存)或者相反
- 一次读写的单位为“块”而不是字
- DMA传送一个数据占用一个存储周期
不需要CPU保护现场
程序中断方式是要把现在运行的进程调出CPU,重新调入一个新的进程处理,因此要把CPU中寄存器等部件内的数据通过压栈保护起来。
而DMA方式有自己的DMA接口,接口内有自己单独的控制逻辑、设备选择器、主存地址计数器、传送长度计数器、设备地址计数器、各种缓冲寄存器等等一系列部件,因此DMA向CPU申请中断后,只是单纯地让CPU腾出手来管理一下(这个管理过程只需要使用到CPU内部的控制单元来发送一些控制信号,用这些控制信号来初始化DMA以及做一些善后工作。也就是说并不会借用CPU自己内部的寄存器部件),因此管理完后CPU可以接着返回执行原来的程序。总之,DMA申请中断并不会改变CPU中寄存器原有的数据,也就是说不需要保护现场。
(十二) 总线
一. 概述
所谓总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。
二. 分类
微机中的总线分为
- 数据总线
- 地址总线
- 控制总线
(十三) 加密认证
一 四种不安全场景
- 窃听
- 篡改
- 假冒
- 否认
二. 加密技术
1. 对称加密(别名: 私有秘钥加密)
DES 3DES RC-5 IDEA AES RC4
优点: 加密速度快(因为加密解密都是同一把),适合加密大量明文数据
缺点: 秘钥分发有缺陷,密钥发送过程中可能被别人获取到
2 非对称加密(别名: 公开秘钥加密)
有两把秘钥,公钥和私钥
RSA ECC DSA
私钥用于解密,数字签名
公钥用于加密,验证
公加验,私解签
特点
用公钥加密只能用私钥加密
用私钥加密只能用公钥加密
不能通过一把推出另一把
数据接收方把公钥给数据发送方,数据发送方用公钥对数据进行加密,数据接收方用私钥解密数据
优点: 密钥分发没有缺陷,公钥在分发过程中即使被别人获取到,也不能对数据解,私钥只在接收方手中。
缺点: 加密解密数据慢
三. 认证技术
1. 摘要
防止篡改
将发送的明文进行Hash算法后得到摘要,将摘要放在加密好的密文的后面一起发送过去,接收方接收到数据使用私钥对密文进行解密得到明文,对明文使用和发送方相同的Hash算法得到摘要。然后和发送方发过来的摘要进行比对,如果一致则没有被篡改,否则有被篡改
2. 数字签名
防止否认
发送方用自己的私钥对摘要进行签名(加密)
得到数字签名放在密文中一起发送过去
接收方用发送方的公钥对数字签名进行验证(解密),如果验证(解密)成功则该消息没有被假冒且不能否认,否则该消息的真是性为假。
私钥只有发送方有,发送方对摘要进行加密。接收方用发送方提供的公钥解密得到摘要,说明消息是发送方发送的,发送方不可否认。接收方密文进行解密得到明文,再对明文进行Hash算法得到摘要,和发送方的摘要对比判断是否有被篡改。
用发送方的私钥签名,用发送方的公钥验证消息的真实性
数字签名可以验证消息的真实性、发送方不可否认
3 数字证书
CA权威机构,信任机构(像公安局,法院)
用户向CA机构申请数字证书
将个人信息和公钥发给CA机构
CA机构颁给用户数字证书
数字证书用CA的私钥进行签名(加密)
用CA的公钥验证(解密)数字证书 得到用户的公钥
用CA机构的私钥签名,用CA机构的私钥验证数字证书的真伪性
数字证书可以确认网站的合法性,用户的身份等
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验