软考(软件设计师中级)学习笔记
计算机组成与体系结构
流水线–概念(几乎每次考试)
据说是当年福特发明管理员工的,后面也运用到了计算机上,忍不住想吐槽一句,资本家的手段可真多呀
流水线–流水线计算
首先流水周期很好理解,就是指令部分中消耗时间最长的
指令执行时间这里公式很明确了,也很好理解,理论是先算第一条指令,看三部分时间就是1+2+2,然后后面每条指令都相当于执行了流水周期,剩下99条指令,流水周期是2,所以+992
至于实践的公式,老实说考到的概率是20%,也很好理解,就是把所有指令部分的实践都看成流水周期,所以一开始就是23咯,后面部分不变
流水线–流水线吞吐率计算
这是计算公式
用刚刚这道题来理解,那执行条数就是100,执行完毕所需要的时间就是这里的流水线执行时间,也就是上面算出的203,我们理论的时间,然后呢,下面这个最大吞吐量,1/t就是用的理想的状态,将每段看成了流水周期(忽略流水线建立时间比平时执行所多消耗的时间,建立之后每一条流水线就会完成一条指令的运行)
流水线–流水线的加速比计算
这里还是以这道题为例
不使用流水线的时间很好算,也就是(2+2+1)*100
使用流水线的时间我们之前也算过了是203,所以加速比就是500/203
流水线–流水线的效率
这里算流水线效率,其实说白了就是数格子,然后相除,首先看n个任务占用的时空区,图中看的很清楚了,s1,s2,s3,s4各有四个,因为是4个任务嘛,所以n个任务占用的时空区就是(t+t+t+3t)4,这里很好理解,然后k个流水线的总时空区也很好理解,就是总格子数咯,每个格子是t,所以就是415t咯,那么我们这里要算的e(流水线效率)就是两个相除咯
层次化存储结构
这个图很好,可以说是一目了然了,多级是为了保证速度的情况下节约成本,也比较好理解,就是说你速度快的成本就高,我们需要做的是速度又要尽量快,成本又要尽量低,cache的引入,在增加速度的同时,又没有增加多少成本,一举两得
Cache–概念
这里没啥好说的,套公式就可以了,需要注意一般来说主存储器周期时间会比cache周期时间大很多倍
局部性原理
局部性:计算机在处理相关的程序的时候,某一时段集中的去访问某些指令/集中读取某一空间的数据
时间局部性:循环执行多次的时候,不从内存里面调数据,直接存cache里面,从cache里面调数据,从而节约成本–被引用过一次的存储器位置在未来会被多次引用(通常在循环中)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问(图左)
主存–分类
随机:ram,如内存,特点:断电信息全无
只读:rom,如bios,特点:断电信息还在
主存–编址(考到概率高)
很明显主要是考计算,以这道例题为例,AC000H到C7FFFH有多少个地址呢,应该是C7FFFH-AC000H+1,这里先加1再减会好算一点,C7FFFH+1=C8000H,C8000H-AC000H=1C000H,问的是多少K个,在存储里面,K是2^10,所以1C000H/2的10次方=112,所以第一个空选B,然后第二个空,问我们每个存储单元存储多少位,我们已经算出来了一共有112K个地址单元,现在每片芯片有16K个存储单元,有28片,注意这里问我们的是多少位,所以要将B化成bit,他也说了B是16bit,所以最后每个存储单元存储多少位x = 112K*16/28/16K = 4,所以第二个空选A,做完这道例题基本也就理解了编址的计算问题
磁盘机构与参数
这个题出现的次数很多,要弄清楚
首先第一问,这个题还是有点绕的,首先读取r0,这个时候我们的r0会一开始直接放入缓存里面去处理,然后要处理r1的时候,因为缓存里已经放了r0了,r0的处理时间要3秒,但是这个时候磁盘的磁头是不会停的,还是会一直转动,所以这3ms的时候磁头一直在转,等到磁头又转一周,花了33ms的时间,这个时候r0在缓存中也早就处理完了,磁头指向的是r0结束的位置,然后同样的处理方式处理r1,r2,…,r9,这个时候花的时间就是(33+3)*10,最后处理r10就是旋转一格(读取时间)加上处理的时间,也就是3+3,所以最后是(33+3)10+6 = 366ms
理解好了第一个问,第二问就好理解多了,叫我们优化,算优化后的最少时间,很好理解,首先磁盘是顺序处理的,处理完r0后需要去处理r1,第一问我们已经清楚了,磁头是不会等我们的,而缓存处理也是需要时间的,所以我们就想可以不可以让磁头转动的这个时间刚好等于缓存处理的时间,以此来分布存储呢,当然是可以的,优化后的分布图就是右下角,那优化后的时间也就很好算了,读取3处理3一个就是6,一共有11个物理块,所以优化后的总时间就是116 = 66ms
总线(选择题考概念)
系统可靠性分析–串联系统与并联系统
串联:子系统一个寄整个无法运行
并联:所有子系统寄了整个无法运行
这个很好理解,电路串并联嘛
直接带公式就是了,也没啥好说的,根据可靠率来看是加还算还是减好算,哪个好算用哪个
表决器,也很好理解,少数服从多数嘛,算可靠度右边公式直接带就是了,但是老师说了几乎不考
混合部分,考试一般考这种,主要技巧就是,分清楚整个系统的构造,看清楚串并联的关系就好了
差错控制–CRC与海明校验
检错就是检查是否有错误,纠错就是纠正错误咯
校验码–循环校验码CRC
先学会模2除法,异或运算(同0异1)
最高位是四次,所以补四个0,有就是1没有就是0也很好理解,最后除下来余数是0就是对的,其他就是错的
校验码–海明校验码(考到概率大)
r2就是含有2次位的几个信息位做异或运算得出的数据,其他依次类推
填的时候先把信息位的数据填好,校验位先留出来
将收到校验位和产生校验位相异或就可以得出哪一位出错了,如001就是1号位出错了
操作系统基本原理
操作系统–概述
进程管理–进程的状态
运行:已经有所需所有资源,并且有cpu资源了
就绪:其他资源都有了,只差cpu资源
等待:除了没有cpu资源,还缺其他的资源
五态静止和活跃类似于挂起和激活的状态吧
进程管理–前趋图(考查频率高,往往和pv操作结合)
进程管理–进程的同步与互斥
生产者消费者问题,本质就是要先分清楚同步在哪些地方,互斥又在哪些地方
互斥:市场只允许消费者或者生产者一方进行操作
同步:只有消费者消费过后,生产者才可以继续生产,同样的,只有生产者生产了,消费者才能进行消费
进程管理–PV操作
这个图可以清晰的看出,为什么要有pv操作,没有pv操作的话就可能导致放入的时候缓冲区溢出,或者取出的时候缓冲区是空的,根本没法取的问题
做这种题,就是先从一头开始,假设没有pv操作会出什么问题,然后就知道应该在哪里放什么pv操作了
这里的p操作可以理解为,放人进来了,所以书店可以容纳的人数就要减少了,这里的v操作可以理解为,买了书的人放出去了,所以书店可以容纳的人数就要增加了
没人提出付款的需求,收银员提出收费是不允许的
a1v操作是为了唤醒b1p操作,告诉他有人要付款了,你需要工作了
a2p操作是为了等待b2v操作,也就是付款后收银员告诉你书已经消磁等,你可以走了,购书者才能离开
进程管理–PV操作(与前趋图结合)
图中可以看出,这种前趋图的话应该先执行v操作,因为要先有东西才能执行下一步操作嘛,相当于对后面的操作进行一个解锁,然后是p操作释放
先标出s1,s2,s3,s4,标注顺序遵循从上到下,从左到右
先v操作,所以p1,p2分别是vs1和vs2然后p3这里是先p操作释放,然后v操作解锁,所以c对应ps1和ps2,而d对应vs3和vs4,最后就是p4和p5的释放p操作,分别是ps3和ps4
进程管理–死锁问题
假设有k个进程,每个进程需要的系统资源数是n,不发生死锁的最小的资源数 = k*(n-1)+1
真题
直接看这张图就行了,很好理解
考试时间足够的情况下,可以把每个选项都算一遍(检验),避免自己最开始算错的情况
存储管理–分区存储组织
首次适应:顺序找首次可以容纳的区域就开始分配
最佳适应:将空闲区按照从大到小的顺序查找,找到首次可以容纳的最小区域就开始分配
最差适应:就是和最佳适应反着来的,将空闲区按照从大到小的顺序查找,找到首次可以容纳的最大区域就开始分配
循环首次适应:顺序找首次可以容纳的区域就开始分配,只是相当于把各个空间连成一个环,最后找了又回到开头找
存储管理–页式
说实话光看图肯定不好理解,直接上题理解起来快很多
题目说页面大小为4k,换算成2进制就是2的12次方,也就是页面已经占了12位了,16进制,刚好3位就是2进制的12位,至于为什么,因为16是2的四次方咯,所以A29这三位是不变的,然后逻辑地址中剩下的5就是页号,按照页号5去寻找对应的物理块号,也叫也页帧号,就是6,所以最终物理地址对应的16进制就是6A29H,选D
然后来看淘汰页,状态位代表在不在内存,0代表不在内存,被访问过的,也就是访问位为1的,是不可以被淘汰的,也就是访问位为0的才能被淘汰,又要在内存中,所以又要状态位为1的,所以被淘汰的是1号页面
快表是放cache的,慢表是放内存的
存储管理–页面置换算法
直接看题理解
先进先出,挺好理解的,置换的就是先进去的
FIFO:先进先出,置换的就是先进去的,从前往后看
LRU:最久未使用,置换的就是最久没有使用的,从后往前看
来看一道练习题
没有使用快表,所以需要先查表,查了表之后才能读取响应的内存块,所以每一个块需要进行两次内存的访问,总共有6个块,所以要进行12次内存的访问
默认指令无论是占到几个块,都会一次性调入
根据题干我们可以知道,指令存放在1023单元中,而1023单元是0-1023也就是第一个页面的结尾,所以指令是0号页面和1号页面各占一半,跨了两页,按常理来说就应该出现2次缺页中断,但是实际上对于指令而言不会产生缺页中断,他会一次性读入,只会产生一次缺页中断,而数据类型的A和B也是跨了两页,对于数据而言就是产生了2次缺页中断,所以总的缺页中断次数就是1+2+2 = 5次,这里主要就是记住,指令只会产生一次缺页中断,而数据是两次就好了
文件管理–索引文件结构(间歇性出现)
直接看图,很好理解,每格索引放物理盘块的地址,1024个索引,一个4k所以是4k*1024
逻辑号从0开始算,空间指向的物理盘块的地址,指向的盘块为逻辑块号,所以逻辑块号5,指向的是物理块号是58,这里从图中就可以看出来,一个物理盘块1k大,一个地址四个字节,所以1k = 1024,1024/4 = 256,每个盘块可以存256个地址,5+256 = 261,也就是下一个地址,id6对应的物理块号是187,所以选C
101号物理块存放的明显是二级地址索引表,由图可得
操作系统–文件和树型目录结构
文件管理–空闲存储空间的管理
主要掌握位示图法,考察的频率很高
话不多说直接上题吧