前几天刚考完软考的软件设计师,感觉应该是能拿下了(希望),所以趁着热乎再梳理梳理整个学习的过程,毕竟这个证是次要的,我们真正能学到的东西才是更有价值的。
关于这个考试的难易程度,如果对于计算机专业的同学们或者是有软件相关从业经验的大佬们这个考试绝对是有手就行,但是如果是非计算机专业的同学们想靠这个拓展一下计算机方面的知识,那可能还是需要认真准备一下的,因为总的来说这门考试涉及的内容是考研的408+软件工程基础+数据库基础,但是只是知识广度非常广,专业知识并不是十分深入,所以也不要有压力,认真捋捋知识点+刷刷题还是没啥问题的。
考试主要分为上午的选择和下午的案例题,选择没啥好说的,只能说多刷刷题(因为考题里面往年原题占的比例还是不小的,多做做肯定做起来更顺手);至于下午题的话,下午题的题型是非常固定的,几乎每道题的大部分的题型每年都不变,所以也是要多看看真题,在有了相关知识储备的基础上,掌握一些做题的技巧(等后面再说惹)这样做起来会更加顺手
下面梳理一下上午相关的知识点吧,也算是把我这几个月的所学做一个简单的输出吧,希望能帮到一些备考的盆友们:)
上面不难看出,重点主要还是软件开发相关方面+数据库+算法+面向对象技术,这里建议是着重学习一下~~ 然后是绿色的部分:计组和计网,这两部分占的分值也是非常大的,之所以没有红色那部分那么重要是因为这部分的知识点实在是太分散了。。。对我这种非计算机专业的人还是有点小折磨,这部分主要还是靠慢慢积累吧。
最后是蓝色的部分,这部分题量很小,也确实不是特别重要,但是有余力的话还是建议看看多媒体的相关知识,至于知识产权和专业英语。。。还是随缘吧
这部分没啥说的,基础中的基础,一般只会有一个出题点就是十进制和R进制之间的相互转换
R进制转十进制使用按权展开法:将R进制数的每一位数值都用R^k形式表示,按位加即可
十进制转R进制,短除法:将十进制数除于R将余数放在低位,并对余数做同样处理。
浮点运算:
浮点数的表示方法
浮点数存储格式可以分为以下四个部分:(阶符、阶码)、(数符、尾数)
阶符和阶码用于表示浮点数的指数部分,阶符表示指数正负、阶码表示指数绝对值
数符和尾数用于表示浮点数的尾数,数符表示正负,尾数表示绝对值
运算过程:
①对阶:使两个操作数的阶码大小一样,要求阶数低的向阶数高的看齐
②尾数计算
③结果格式化
需要注意的是:
①一般尾数用补码,阶码用移码
②阶码的位数决定数的表示范围,位数越多范围越大
③尾数的位数决定数的有效精度,位数越多精度越高
④对阶时,小数向大数看齐
⑤对阶是通过较小数的尾数右移实现的
计算机的组成部分:运算器、控制器、存储器、输入设备、输出设备
CPU的组成:运算器、控制器
(考试的时候会有另外一种考法就是:运算单元、控制单元、存储单元)
运算器组成:
算数逻辑单元ALU:实现数据的算术运算和逻辑运算
累加寄存器AC:通用寄存器,为ALU提供一个工作区,用于暂存数据
数据缓冲寄存器DR:写内存时,暂存指令或数据
状态条件寄存器PSW(有说法将其归为控制器的,注意根据题目具体分析):用于存状态标志与控制标志
控制器组成:
程序寄存器PC:存储下一条要执行指令的地址
指令寄存器IR:存储即将执行的指令
地址寄存器DR:用于控制当前指令所存放的地址
指令译码器ID:对指令中的操作码字段进行分析解释
时序部件:提供时序控制信号
存储器分为主存储器和辅助存储器
RAM与ROM:
RAM(随机存储器):可读写,速度快,掉电信息丢失
ROM(只读存储器):只能读不能写,速度比RAM慢,但是掉电信息不丢失(光盘)
DRAM和SRAM:
如果将RAM进一步细化,可将其细化为SRAM和DRAM
SRAM(静态随机访问存储器):其中的静态(Static)是指只要存储器保持通电,数据就不会丢失。特点就是:昂贵、快速、低功耗,因此常用于作为Cache
DRAM(动态随机存取存储器):其中的动态(Dynamic)是指:信息是以存储在电容中的电荷量来表示的,但电容会缓慢自行放电,所以需要定期对电容进行刷新以保持数据。特点:成本低、速度慢、耗电量大。因此由于作为系统主存
Flynn分类法:
分类指标:指令流和数据流
记忆技巧的话,S表示Single,M表示Multiple
例如SIMD:Single Instruction Multiple Data
指令的基本概念:一条指令是机器语言的一个语句,是一组有意义的二进制代码。
分为操作码字段和地址码字段
操作码指出了计算机要执行什么操作(加减法、存读写等)而地址码包含了各操作数的地址和操作结果的存放地址。从地址结构的角度可以分为三地址指令、二地址指令、一地址指令、零地址指令
以三地址指令为例:OP为操作符,A1,A2,A3分别为操作数。
寻址方式:
①立即寻址方式:操作数直接放在指令中,速度快,灵活性差
②直接寻址方式:指令中存放的是操作数的地址
③间接寻址方式:指令中存放了一个地址,这个地址对应的是操作数的地址
④寄存器寻址方式:寄存器存放操作数
⑤寄存器简介寻址方式:寄存器内存放的是操作数的地址
CISC(复杂指令集计算机)与RISC(精简指令集计算机):
区别:
区别并行与并发:
并行:两个及以上的时间在同一时刻发生
并发:两个及以上的事件在同一时间间隔发生
流水线技术的概念:是将一个重复的时序过程分解为若干个子过程,而每一个子过程都可以有效的在其专用功能段上与其他子过程同时执行
一条指令的执行过程可分解为取值、分析、执行三步
流水线的相关参数:
流水深度:将每个子过程称为流水线的一级,则整个过程中子过程的数目称为流水深度
流水线周期:执行过程中最耗时的一部分
流水线执行时间:指处理n条指令所需要的时间
计算:流水线执行时间=第一条指令的执行时间+(n-1)*流水线周期
流水线吞吐率:指单位时间内流水线完成的指令数量
计算:吞吐率=指令条数/流水线执行时间
最大吞吐率:在流水线足够长的条件下,首尾的资源浪费可以被忽略
计算:最大吞吐率=1/流水线周期
流水线加速比:使用流水线技术所带来的增益
计算:不使用流水线技术的执行时间/使用流水线技术的执行时间
流水线效率:
计算:流水线效率=被占用段数/总段数
Cache:(常考)
在计算机存储系统体系中,Cache是访问速度最快的层次(若涉及到寄存器,则寄存器最快)
Cache改善系统性能的依据是程序的局部性原理
局部性原理包括时间局部性和空间局部性
时间局部性:如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。
空间局部性:是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。
依据这个原理,可以消除系统指令抖动
Cache的命中:在CPU访问时,对应数据在Cache中,则称命中,反之成为失效。
Cache映像:
不同映像方式特点:
直接相连映像:硬件电路较简单,但冲突率很高
特点:反应速度最快,但不太符合局部性原理,导致高冲突率
(例如:主存中的0页和16页都对应Cache中的0页,因此在Cache中0页读取主存中的0页后,如果想继续读取16页,则需要先将0页抛弃,而这不符合局部性原理中的时间性原理)
全相联映像:电路难于设计和实现,只适用于小容量的Cache,冲突率较低
特点:复杂,但冲突率低
组相联映像:直接相联与全相联的折中
特点:先对主存进行分组,在组内进行·直接相联映像,对每组进行·全相联映像
编址方式:
①按字编址:存储体的存储单元是字存储单元,即最小寻址单位是一个字
②按字节编址:存储体的存储单元是字节存储单元,即最小寻址单位是一个字节
根据存储体所需要的容量和选定存储芯片的容量,就可以计算出所需芯片的总数,即
总片数=总容量/每片的容量
总线:一条总线同一时刻仅允许一个设备发送,但允许多个设备同时接收
总线的分类:数据总线、地址总线、控制总线
串联与并联系统:《常考可靠度计算》
计算方法:
串联系统可靠性计算是各串联部件可靠性的乘积
并联系统可靠性是1-(1-并联部件可靠性)的乘积
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制数成为数据校验码的码距
奇偶校验:由若干个位有效信息再加上一个二进制位(校验位)组成的校验码,检验方式是各位进行异或运算
奇校验:校验结果为1则认为正确
偶校验:校验结果为0则认为正确
效果:可检查一位错误,但是不能纠错
循环冗余校验码(CRC):
将数据位对某个生成多项式进行模2除,将得到的余数追加到数据位后面(保证形成的校验码一定可以被生成多项式整除)形成校验码。
将接收到的码对生成多项式进行相除,若余数为0则认为正确,反之认为出错
效果:可以检错,不能纠错
海明校验:
原理:在有效信息位中加入几个校验位形成海明码,使得码距比较均匀的拉大,并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关几个校验位的值的变化,这不但可以发现错误,还能指出错误位置,为自动纠错提供依据。
校验位个数求法!!
例子:
要计算原始信息位为101101100的海明校验码。
先用m+k+1<2^k计算出校验位:9+k+1 <2^k→k=4,即校验位为4位。
因为海明校验码是放在2的幂次位上,所以插在位置1,2,4,8中
用到的校验码是看 当前位置由哪几个 校验码所在的位置的和
校验码的位置是1,2,4,8。位置3= 1 + 2,所以位置3用到的校验码是1和2;位置7 = 1 + 2 + 4组成的,所以位置7用到的校验码是1,2和4。
然后将校验码校验的位置记录下来:
校验码1(位置1):3,5,7,9,11,13
校验码2(位置2):3,6,7,10,11
校验码3(位置4):5,6,7,12,13
校验码4(位置8):9,10,11,12,13
注意:后面的数字串是位置的下标,不是值,值还是0或1。
然后做异或运算(相同时为0,不同时为1)
校验码1(位置1):1 xor 0 xor 1 xor 0 xor 1 xor 0 = 1
校验码2(位置2):1 xor 1 xor 1 xor 1 xor 1 = 1
校验码3(位置4):0 xor 1 xor 1 xor 0 xor 0 = 0
校验码4(位置8):0 xor 1 xor 1 xor 0 xor 0 = 0
效果:既能检错,也能纠错