软考软件设计师学习笔记
目录
进制转换
进制 | 数码 | 基数 | 位权 |
十进制(D) | 0,1,2,3,4,5,6,7,8,9 | 10 | 10^k |
二进制(B) | 0,1 | 2 | 2^k |
十六进制(H) | 0~9,A,B,C,D,E,F | 16 | 16^k |
按权展开法
作用场景:R进制转十进制
解释:将R进制按权展开后相加
如二进制:10100.01=1*2^4+0*2^3+1*2^2+0*2^1+0*2^0+0*2^-1+1*2^-2
这种方法也可以先将10100.01当成十进制,如:10100.01=1*10^4+1*10^2+1*10^-2
然后再把10^k这个位权变成R^k,这样就能做到快速转换。
短除法
作用场景:十进制转R进制
解释:也称除基取余法,即将十进制除以R得出的结果和余数,结果再除R知道0为止,得到的进制结果取倒叙的余数
例如:
减法
作用场景:十进制转二进制
解释:列出2的0到n次方,并从与要转换的数想近最大的数开始减,每减一次,记录一次1,直到减到2^0
如:
8421法
作用场景:二进制转八进制和十六进制
解释:当要转八进制的时候将二进制从后向前,每三位分成一组,三位从左到右标记成4 2 1,然后把有1的标记相加得到一个数,将所有组的数组合就是八进制。同理十六进制多加一位,并标记成8
如:
码制
数据的表示-原/反/补/移码
计算机只取固定8位,当超过8位后不会取。也即:补码的0000 0001+1111 1111=1 0000 0000。但是最高位的1不会取,因此结果为0
0表示正号,1表示负号
数值1 | 数值-1 | 1+(-1) | |
源码 | 0000 0001 | 1000 001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
移码 | 1000 0001 | 0111 1111 | 1000 0000 |
原码:最高位是符号位,其余低位表示数值的绝对值
反码:正数的反码与原码相同,负数的反码是其绝对值按位取反(符号不变)
补码:正数的补码与原码相同,负数的补码是其反码末位加1(符号位不变)
移码:补码符号位按位取反(只有符号位会取反)
移码的运算和正常的运算是有区别的,但不需要了解
码数个数
原码:2^-1
反码:2^n-1
补码:2^n
移码:2^n
其中 -128的补码为1000 0000 是人为规定的
二进制的符号位在转换十进制中不算入运算
浮点数的表示
浮点数的表示:
N=尾数*基数^指数
例如:1.25*10^6
也即:定点小数*基数^阶码(定点整数)
在对阶的过程中,一般是小的阶数向大的看齐
运算过程
对阶>尾数计算>结果格式化
特点
- 一般尾数用补码,阶码用移码
- 阶码的位数决定表示范围,位数越多范围越大
- 尾数的位数决定有效精度,位数越多精度越高
- 对阶时,小数向大数看齐
- 对阶是通过较小数的尾数右移实现的
数符:尾数的符号位(决定整个数的正负)
阶符:阶码的符号位(决定是小数还是整数)
逻辑运算
关系运算符
优先级高:> >= < <=
优先级低:== !=
逻辑运算符
! && ||
注意逻辑短路
运算符优先顺序:!>算数运算符>关系运算符>逻辑运算符>赋值运算符
也即:单目运算符>双目>三目>... 这种规律
校验码概述
奇偶校验码
作用:可检奇数位错,不可纠错
CRC循环冗余校验码
作用:既可以检错,并且不限定一位错,可以检多为错,不可纠错
海明校验码
作用:既可检错,又可纠错
奇偶校验码
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据校验码的码距
例如:
通俗讲就是,一次能变换1个的就是1码距,一次变两个的就是2码距,像组一样。
例如:
传递的是10,其中1是传递的有效信息,0是校验位,使用奇校验,收到的是00,说明是偶数个1,那么就检测出错误了。
传递的是01,其中0是传递的有效信息,1是校验位,使用奇校验,收到的是11,说明是偶数个1,那么就检测出错误了。
偶校验类似
例题:
这个例题中C是正确的。
CRC循环冗余校验码
特点:可检错,不可纠错
重点:模二除法
海明校验码
特点:即可检错也可纠错
上述的描述是校验码与有效信息位通过交叉的方式进行发送。
重点掌握公式“2^r=m+r+1”就可以了,其中m是有效信息位,r是我的知道有效信息位之后要求得的校验位。
例如:m是16,那么r>=5才符合公式要求,而在有效信息位中的位置就是,2^0,2^1~2^4,即:1,2,4,8,16。不过这里不要求掌握
在推算D5的时候可以用位置推算,如:D5的位置是10,那么就要用位置8和位置2的相加,也就是P4和P2。也可以用二级制的方式推算,如:D5的位置是10,而10的二进制是1010,从右向左算,是P4 P3 P2 P1,对应1010的位置,有1的地方就需要,因此推测出事P4和P2。这种二进制的方式也可以推测出D14的校验位
CPU组成(运算器与控制器)
运算器
- 算数逻辑单元ALU
- 累加寄存器
- 数据缓冲寄存器
- 状态条件寄存器
其中状态条件寄存器有争议,可以把他归为控制器中
控制器
- 程序计数器PC
- 指令寄存器IR
- 指令译码器
- 时序部件
寻址方式
指令的基本概念
一条指令就是机器语言的一条指令,他是一条有意义的二进制代码
基本格式为:操作码字段+地址码字段
CISC与RISC
流水线技术
其中重要的概念,一条指令分为:取指、分析、执行
这里的流水线是标准并行
例如在例题中,第一个空为:(3+2+4)*10=90,第二个空为:4(注:流水线周期为三个中最长的),第三个空为:3+2+4+(10-1)*4=45
其中公式:3+2+4+(10-1)*4 可以通过提公因式的思维方式将4提取出来,就变成了3+2+(1+10-1)*4 从而进行快速的计算
其中重要公式为:取指时间+分析时间+执行时间+(指令条数-1)*三个中最大的那个=执行完的时间
其中t是流水线周期也就是4
例题:
答案:A
答案:D
其中他的吞吐率是:100/405△t。极限吞吐率是:1/4△t
存储系统概述
层次化存储体系
Cache
主存编址计算
层次化存储
层次化存储结构
结构是:
CPU:容量按照bt
Chche(缓存):容量按照M
内存(主存):容量按照G
外存(辅存):容量按照T
时间局部性是按照循环的,空间局部性是按照顺序的
层次化存储结构-分类
虚拟存储体系由(主存-辅存)两级存储体系构成。如果在加上Cache(缓存)就变成了三级存储体系。
Cache
Cache-概念
重点部分:主存与Cache之间的地址映射由硬件直接完成
Cache-映像
Cache-直接相联映像
在直接相连映像中主存里各个区的0页对应cache的0页,1页对应1页这样,但是当一个区的0页放入cache中,其他区的0页就不能放入了(因为需要一一对应,不能放入不对应的页中)。这也导致这种方法电路简单但是冲突高
Cache-全相联映像
全相连映像让主存的任意页可以放在任意Cache页中,不需要一一对应。也导致冲突低但是电路复杂
Cache-组相联映像
组相连映像是将主存分区在化成组,Cache也分成组,主存0组的页只能放在Cache的0组,但是页可以放在0组中的任意页,通过这种方法使得电路复杂度折中 ,冲突折中
总体表格
冲突率 (高、中、低) | 电路复杂度 (复杂、简单、折中) | |
直接相联映像 | 高 | 简单 |
全相联映像 | 低 | 复杂 |
组相联映像 | 中 | 中 |
主存编址计算
编址
编址与计算
存储单元
公式:存储单元个数=最大地址-最小地址+1
编址内容
按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节
总容量
公式:总容量=存储单元个数*编址内容
根据存储器所要求的容量合选定的存储芯片的容量,就可以计算出所需芯片的总数,即:
公式:总片数=总容量/每片的容量
注:一般的出题会给地址范围和编址内容求总容量,在通过芯片容量求片数,或芯片数求容量
例题:
第一个空求的是总容量,首先他给了内存按字节编址,因此编址内容也就是一个字节=1B=8bit
1K=2^10
1M=2^10K=2^20
1G=2^10M=2^20K=2^30
因为:存储单元个数=最大地址-最小地址+1
所以:存储单元个数=CFFFFH-A0000H+1 (其中H代表16进制)
存储单元个数=D0000H-A0000H (先最大+1。D为13,A为10)
存储单元个数=30000H=3*16^4
因此总容量=3*16^4*8bit=3*2^16*8bit
(因为最终的结果是KB,所以要约分,目前的单位是bit除以8就变成了B再除2^10就变成了KB,或者理解为1KB=2^10B,因此除以2^10B)
总容量=3*2^16*8bit/2^10B
(因为1B=8bit,所以8bit/2^10B=1/2^10)
总容量=3*2^16/2^10=3*2^6KB=192KB
所以第一个空选 D
第二段得知芯片容量:64K*8bit
因为:总片数=总容量/每片的容量
所以:总片数=192KB/64K*8bit=192*2^10B/64*2^10*8bit=192/64=3
所以第二个空选 B
输入/输出技术
总线
分时双工:既能发消息也能接收消息
一条总线同一时刻仅允许一个设备发送,但允许多个设备接收
可靠性
其中公式:
串联:R,三个就是R^3
并联:1-(1-R),三个就是(1-(1-R))^3
性能指标
计算机组成与体系章节回顾
操作系统章节概述
操作系统概念概述
操作系统的作用
操作系统是计算机硬件之上的第一层软件
作用:
- 管理系统的硬件、软件、数据资源
- 控制程序运行
- 人机之间的接口
- 应用软件与硬件之间的接口
管理:
- 进程管理
- 存储管理
- 文件管理
- 作业管理
- 设备管理
特殊的操作系统
进程的概念
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、进程控制块(PCB)和数据块三部分组成。
PCB: PCB是进程存在的唯一标志。内容包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、现场保护区等。
进程与程序的区别:进程是程序的一次执行过程,没有程序就没有进程。
程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡;进程是系统进行资源分配和调度的独立单位,而程序不是。
进程的2个基本属性:可拥有资源的独立单位;可独立调度和分配资源的基本单位。
不同的线程中共享的是:内存地址空间、代码、数据、文件等。不共享的:程序计数器、寄存器、栈
进程的状态
进程调度
PV的概念
信号量与PV操作
P(S):获取资源
V(S):释放资源
前驱图与PV操作
重要部分:前驱,后继
例题:
在该例题中信号(S1~5)就是线
答案:
死锁资源数计算
所谓死锁,是指两个以上的进程互相要求对方已经占有的资源,导致无法继续运行下去的现象
死锁四大条件:
- 互斥
- 保持和等待
- 不剥夺
- 环路等待
系统不可能发生死锁的最小资源数 :(w-1)*m+1<=n
其中:w:进程所需资源,m:进程数,n:资源