码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
软考中级软件设计师--1.计算机系统知识
计算机组成与结构
参考
https://www.yuque.com/saodai/ss8tp9
B站视频
计算机系统知识
计算机系统由两部分组成:硬件、软件
1. 计算机硬件系统五大组成部分
控制器、运算器、存储器、输入设备、输出设备
存储器分为 内部存储器(内存、容量小、速度快、存放临时数据,断电消失)和外部存储器(硬盘、光盘、容量大、速度慢、长期数据保存)
输入设备、输出设备统称外设
主机(CPU + 主存储器)
2. 中央处理单元 CPU
CPU 组成:由运算器、控制器、寄存器组(读取速度最快)、内部总线组成
CPU 功能:实现程序控制、操作控制、时间控制、数据处理功能
运算器组成(常考):
算数逻辑单元 ALU(Arithmetic logic unit):实现对数据的算数和逻辑运算,提供一个工作区
累加寄存器 AC(Accumulator): 运算结果或者源操作数的存放区
数据缓冲寄存器 DR(Data Register): 暂时存放内存的指令或数据
状态条件寄存器 PSW(Program Status Word): 保存指令运行结果的条件吗内容,如溢出标志等
运算器功能:执行算数运算和逻辑运算
控制器:
指令寄存器 IR(Instruction Register): 暂存当前CPU正在执行的指令
程序计数器 PC(Program Counter):存档指令执行地址
地址寄存器 AR(Address Register):保存当前CPU所访问的内存地址
指令译码器 ID(Instruction Decoder):分析指令操作码
控制器功能:控制整个CPU的工作,最为重要,包括程序控制、时序控制
程序员可以访问通用寄存器存取数据,也可以访问状态寄存器和程序计数器,但是不能访问指令寄存器
3. 数据进制转换
二进制、十六进制(0x18F、18FH)
R 进制转10进制 案例:6进制 5043 转为十进制 => 3
6^0 + 4
6^1 + 0
6^2 + 5
6^3 => 1107
十进制转 R 进制 案例:十进制 200 转 6 进制 => 200/6 = 33 余 2 => 33/6 = 5 余 3 => 5/6 = 0 余 5 => 6进制为余数的从后向前排列 532
m 进制转为 n 进制:通过十进制中转
4. 数的表示 (考得少)
最小数据单位 b(比特bit)
最小存储单位 1B(字节 byte)=8b
1KB=1024B; 1MB=1024KB; 1GB=1024MB
机器数:各种数值在计算机中表示的形式,特点是使用二进制计数制,数的符号用 0 和 1表示,小数点隐含不占位置 (例如 +0(0 0000000)-0(1 0000000))其中第一位是符号为,后七位表示数值位
定点表示法:分为纯小数与纯整数两种,其中小数点不占存储位
纯小数:约定小数点在机器数的最高数值位之前
纯整数:约定小数点的位置在机器数的最低数值位之后
真值:机器数对应的实际数值
5. 数的编码方式(不怎么考)
原码:一个数的正常二进制表示 例如 +0(0 0000000)-0(1 0000000)
反码:正数的反码即为原码;负数的反码是在原码的基础上,除了符号位以外,其他各位按位取反(例如如上数值的反码为 +0(0 0000000)-0(1 1111111))
补码:正数的补码即原码;负数的补码是在原码基础上,除了符号位以外,其他各位按位取反,而后在末位+1,若有进位则产生进位 +0(0 0000000)-0(0 0000000))-0的补码有溢出
移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到
计算机系统中常采用补码来表示和运算数据,原因是采用补码可以简化计算机运算部件的设计
6.浮点表示(常考)
浮点数 N = F * 2^E, 其中E称为阶码(带符号的纯整数),F称为尾数(带符号的纯小数),类似于十进制的科学记数法 例如 101.011=0.101011*2^3
浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定
浮点数运算需要先 1.对阶,即将阶码换算成相同的后再计算,小阶向大阶对接,否则会损失尾数的精度 》2. 尾数计算 》3.结果格式化
浮点数存储格式:| 阶符 | 阶码 | 数符 | 尾数 | ,一般尾数用补码,阶码用移码
规格化浮点数:将尾数的绝对值限定在 [0.5, 1]
浮点数的范围:M: 尾数补码位(包括数符),R: 阶码补码位(包括阶符),则最大正数 +(1-2^-M+1) * 2
(2
R-1 - 1), 最小负数 -1 * 2
(2
R-1 - 1)
定点表示法与浮点表示法:定点表示法分为定点整数和定点小数,定点表示法的小数点不需要占用存储位,总位数相同时浮点表示法可以表示更大的数
定点小数在机器字长为 n 的表示范围是定点整数表示范围除以 2^n-1
7. 寻址
立即寻址:操作数包含在指令中
直接寻址:操作数存在内存单元中,指令中给出操作数所在存储单元的地址
寄存器寻址:操作数存在某一个寄存器中,指令中给出存放操作数的寄存器名,比直接寻址要快,寄存器"距离" CPU 更近
寄存器间接寻址:操作数存在内存单元中,寄存器中存放了操作数所在的内存地址,指令中则存了寄存器名,也就是说寻址路径 指令 -> 寄存器 -> 内存
间接寻址:指令中给出操作数地址的地址
寻址效率:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址
采用不同寻址方式的目的:扩大寻址空间,提高编程灵活性
8. 校验码
码距:指一个编码系统中,两个合法编码之间至少有多少个二进制不同
奇偶校验码:在编码中增加一个校验位来使 1 的个数为奇数或者为偶数,码距为2
奇偶校验只能校验错误不能纠正错误
海明码:一种利用奇偶性来纠错的校验方法,码距为 3,设数据位有n位,校验位有k位,则 n 与 k 必须满足以下关系:2^k-1 >= n+k
循环冗余校验码(CRC):可以检错但不能纠错,码距为 2,由 k个数据位 + r个校验位组成,校验码由信息码产生,校验码位数越多校验能力越强,求 CRC 编码时,采用模二运算
9. RISC 和 CISC
RISC: 精简指令集计算机,指令少,复杂度低,指令长度固定,寻址方式少,通用寄存器数量多,支持流水线技术,采用硬布线控制逻辑,组合逻辑控制器
CISC:复杂指令集计算机,指令多,复杂,指令长度变化,寻址方式复杂多样,通用寄存器数量一般,也支持流水线技术,使用微程序控制技术
10. 流水线技术
流水线:多条指令重叠进行操作的一种准并行处理实现技术
指令分为三个部分:取指 -> 分析 -> 执行
一条完整指令的执行时间 = 取指时间 + 分析时间 + 执行时间
流水线周期:指令步骤中所花时间最长的一段,例如:取指1ms -> 分析3ms -> 执行2ms 则流水线周期为 3ms,表示除了第一条外,后边的指令都只需要多花 3ms 就能完成
流水线总共用时:理论公式:一条完整指令完成时间 + (指令总数-1)*流水线周期;实践公式:给第一条指令充分的时间,及第一条指令的每一个步骤都用一个流水线周期的时间
吞吐率:指单位时间内流水线所完成的任务数量,计算公式:指令条数 / 流水线总共用时,最大吞吐率 = 1 / 流水线周期
异步控制会延长时间,降低性能,每次操作结束后要发出结束信号
11. 存储器
按照所处位置分类:内存;外存
按工作方式分类: 读\写存储器 RAM;只读存储器 ROM
按访问方式分类:按内容访问存储器(例如:相连存储器),按地址访问存储器
按寻址访问存储器:随机存储器、顺序存储器、直接存储器
闪存,一种只读存储器ROM,删除时以块为单位删除,类比为 U 盘
虚拟存储器,由主存 + 辅存 组成
存储系统的层次结构,由内而外: CPU 内部通用寄存器 》Cache(SRAM 静态随机存储器) 》主\内存储器(DRAM 动态随机存储器,需要周期性刷新来保持数据) 》外存储器
空间局部性:若一个存储单元被访问,则其临近的存储单元在不久的将来也很可能被访问,这种特性就是空间局部性
时间局部性:若一个存储单元被访问,则这个单元在以后也可能被再次访问,这种特性就是时间局部性
12. Cache 高速缓存
Cache 高速缓存:位于 CPU 与 主存之间,用来存放当前最活跃的程序和数据(主存的部分拷贝信息),速度比主存块 5~10倍,对程序员来说是透明的(程序员不可操作)
Cache 容量越大,命中率越高,逐渐接近 100%,但是随着容量变大,Cache 成本和命中时间也在增大
替换算法:目标是使 Cache 获得更高的命中率
随机替换算法
先进先出算法
近期最少使用算法
优化替换算法
Cache 中的地址映像方法
地址映像:CPU 工作时送出的主存地址,而要从 Cache 中读写信息,就需要将主存地址换算成Cache 地址,这种转换称为 地址映像
直接映像:主存分区,Cache分块,主存每个区有与 Cache 相同的分块,主存每个区的块与 Cache 的块的对应关系时固定的,硬件电路简单,但是冲突率高
全联映像:主存不分区,主存与Cache按照相同的大小分块 Cache 的块可以对应任意的主存上的块,电路设计难,只适用于小容量的 Cache,冲突率低
组相连映像:是直接相连与全联映像的折中,先分组,组与组之间的直接映像,组内是全联映像
发生冲突概率:全联映像《 组相连映像 《 直接映像
Cache 与 主存之间的映射是由硬件自动完成的
13. 中断
中断:遇到急需处理的事件时,暂停当前正在运行的程序,转去执行有关程序,处理完后返回源程序,这个过程称为中断
中断向量:提供中断服务程序的入口地址
中断响应时间:发出中断请求开始到进入中断服务程序,这一段时间
保存现场目的:为了能正确的返回被中断的程序然后继续执行
14. 输入输出(I/O)控制方式
程序查询方式(程序直接控制方式):
CPU 和 I/O 只能串行工作,CPU 需要一直轮询检查状态,长期处于忙等状态,CPU 利用率低
一次只能读写一个字
由 CPU 将数放入内存
中断驱动方式:
I/O 设备通过中断信号,主动向CPU 报告 I/O 操作已完成
CPU 与 I/O 外设可并行操作, CPU 利用率提升
一次只能读写一个字
由 CPU 将数据放入内存
直接存储器存储方式(DMA方式):
CPU 向 I/O 模块发出数据读写的命令,然后CPU 就可以做其他事情,I/O 模块与内存建立直接的数据通路, I/O 模块操作完成后,通过中断信号告知 CPU
CPU 与 I/O 外设可并行工作
由外设直接将数据放入内存
一次读写的单位是块而不是字
仅在传输数据块的起始和结束需要 CPU 的干预
CPU 在一个总线周期结束时响应 DMA 的请求,每传输一个数据都要占用一个存储周期
由 I/O 设备提出的中断请求是可屏蔽中断,电源掉电是不可屏蔽中断
15. 总线
总线:链接计算机有关部件的一组信号线,是计算机用来传送信息代码的公共通道
总线分类:数据总线,地址总线,控制总线
总线的优点:简化系统结构,减少连接线数目,便于接口设计,便于故障诊断和维修,同时降低了成本
总线带宽计算:时钟频率 * 每秒传送的字节
地址总线宽度计算:地址总线的宽度表明 CPU 的寻址能力,与内存大小相关,内存多大就需要多宽的地址总线,例如:内存容量为 4GB -> 2^32 B -> 地址总线宽度为 32
数据总线宽度计算:数据总线宽度就是处理机的字长
PCI:并行内总线,系统总线;SCSI: 并行外总线
16. 加密技术与认证技术
加密解决的问题:窃听
认证解决的问题:篡改、假冒、否认
加密技术
对称加密:加密解密用的是同一把秘钥,且只有一把秘钥;加解密速度快,适合大量明文数据,秘钥分发有缺陷
非对称加密:加解密不是同一把秘钥,一共有两把秘钥(公钥私钥);加解密速度慢,秘钥分发没缺陷,公钥私钥之间不可推算
混合加密:就是将对称加密与非对称加密混合使用:先用对称加密将大量明文数据加密,再用非对称公钥对“对称加密的秘钥”加密,并随着加密明文一起传给接收方,接收方使用非对称的私钥解密出 “对称加密的秘钥”,再用 “对称加密的秘钥” 解密明文
认证技术
摘要:将发送的明文Hash算法后得到摘要,放在密文后一起发送过去,与接收方解密后的明文 Hash 算法的摘要结果对比,一致则没有篡改
数字签名:在摘要的基础上,对摘要进行私钥签名,接收方通过公钥对数字签名进行解密,可以判定是否被篡改,假冒,否认,用来验证消息来源的真实性
数字证书:使用第三方机构CA 的私钥来对用户的公钥进行数字签名,来保证公钥不被篡改,接收方用 CA 的公钥解密来得到发送方的公钥
用数字证书来认证用户身份,用数字签名来防篡改、假冒、否认
加密算法
对称加密算法(私钥,私有秘钥加密,共享秘钥加密算法)
DES 3DES RC-5 IDEA AES RC4
非对称加密算吗(公钥,公开秘钥加密)
ECC RSA DSA
Hash 函数、MD5摘要算法、SHA-1 安全散列算法
17. 系统可靠性
设一个系统由 N个子系统组成,子系统的可靠性分别为 R1 R2 R3
串联系统可靠性:R = R1
R2
R3
并联的系统可靠性:R = 1 - (1-R1)(1-R2)(1-R3)
18. 其他
指令寄存器的位数取决于指令字长
计算机分级存储速度依次为:CPU 内部通用寄存器 》Cache 》内存 》外存
安全需求:
物理线路安全 – 机房安全
网络安全 – 入侵检测
系统安全 – 漏洞补丁管理
应用安全 – 数据库安全
相关阅读:
vue制作拍照、录像功能
Nacos分级存储
面经-框架-Spring refresh 流程
Node.js精进(6)——文件
Jupyter Notebook的安装和使用
springboo+vue 学生会活动组织管理系统java+python项目
JDK对String操作优化
企微获客助手到底有哪些价值?
【LeetCode】191. 位1的个数
Spark中的闭包引用和广播变量
原文地址:https://blog.csdn.net/mjzhang1993/article/details/126885392
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号