软件设计师中级

赖卓成2024年3月28日
大约 11 分钟

1.1-数据的表示

1-1-2-进制转换

image-20240328235807899

image-20240329000059742

(可选):

image-20240329000427932

image-20240329000804385

1.1.3-码制

原反补:注意反码(正数反码和原码一样)。移码是符号位取反

image-20240329001633139

注意定点整数补码的-128(原码中的+0和-0)和定点小数的-1是人为规定。

image-20240329003606813

例题:

1.注意人为规定取值-4

image-20240329004953309

2.注意补码求原码,先看符号位,负数求反码(取反加1即可,不用按视频中的-1,用上模的概念),再求补码

image-20240329010146706

1.1.4-浮点数表示

考试时概念居多:

image-20240329011137496

例题:

image-20240329011338241

image-20240329012515341

1.1.5-逻辑运算

image-20240330133040915

image-20240330133224743

image-20240330133541221

例题:

image-20240330134057434

image-20240330134207879

1.2-校验码

1.2.1-概述

image-20240330134341950

1.2.2-奇偶校验

为什么要有校验码?防止发送过程中,数据错乱,0变为1或者1变为0了,和原来不一样了。在原有的信息基础上增加冗余信息,帮助校验。

码字的码距:两个码字的码距是一个编码系统中任意两个合法编码(码字)之间不同的二进制数位数

image-20240330135514735

奇偶校验有局限性,如发送00,接受到11,校验不出来,且不能纠错。

image-20240330142737516

例题:

image-20240330143001795

1.2.3-CRC冗余校验

中级考试不涉及编码求取。

image-20240330143201674

例题:

image-20240330143253997

1.2.4-海明校验

即可检错,也可纠错

image-20240330143329801

海明校验码位数求取:

2^r >= m+r+1,r是校验位位数,m是信息位位数

image-20240330143811680

例题:

image-20240330144012229

image-20240401215159158

1.3-CPU组成(控制器与运算器)

image-20240401220125656

image-20240401220139466

状态条件寄存器的分类存在争议,也可以划分到控制器中。

image-20240401220339487

image-20240401220851412

image-20240401220905576

image-20240401221147211

image-20240401221200835

1.4-寻址方式

image-20240401221851045

例题:

image-20240401222019597

1.5-CISC和RISC

image-20240401222102121

image-20240401222308358

image-20240401222427668

1.6-流水线

流水线是准并行

image-20240401222620432

image-20240401223526986

周期为执行时间最长的阶段的时间,k为执行过程分解为几步,n为指令条数

默认使用理论公式,没有再用实践公式

image-20240401224330506

理论公式的理解:由图所示,在进行1的取指后,同时进行1的分析和2的取指,在进行完1的分析后执行1的执行,但是需要等待2的取指完成再进行2的分析,然后在1的执行完成后进行2的执行。最后,由图可得,最下面(2222,3333),每个流水线周期完成1条指令是4△t,所以:

总时间为第一个指令的总时间,加上后面所有任务的时间(数量*周期时间),周期时间是执行周期最长的一段

*(t1+t2+t3+...+tk)+(n-1)t

实践公式:和理论公式类似,但是第一个任务的时间是按每个阶段都以指令周期来算(最长的一段),所以公式是k*t+(n-1)*t

吞吐率:指令条数/执行总时间

最大吞吐率计算:指令周期的倒数

image-20240402002137290

例题:

image-20240402002343507

1.7-存储系统

1.7.1-概述

image-20240402003014284

1.7.2-层次化存储

image-20240402003520951

image-20240402003825704

三级存储体系:cache+内存+外存

image-20240402004410169

相联存储器:是一种不根据地址而是根据存储内容来进行存取的存储器。点击跳转

SRAM 在工作时不需要刷新,而 DRAM 在工作时需要定期刷新,否则数据就会丢失。

例题:

image-20240402004656774

image-20240402004715971

虚拟存储体系:主存不够时,用外存。点击跳转

image-20240402004859532

1.7.3-Cache

image-20240402133800177

image-20240402134451984

公式含义:平均周期=命中率*cache周期时间+未命中率*主存周期时间

从主存复制了一部分数据到Cache中。

image-20240402134713089

地址映象:

image-20240402134923020

如何将2048个页放到16个页中?具体怎么映射(不需要操作系统和程序员参与):

  • 直接相联映像:

    将主存划分成n个与Cache相同大小的区域,每个区域和cache一样,有16个页。

    image-20240410235703538

    每个区域的0号页都与cache的0号页映射,1号也是如此,以此类推。

    此时,主存的地址格式:

    image-20240411001506353

    电路实现简单,但是冲突率高。

    什么是冲突?当我们将0号区的0号页放到cache的0号页,就不能将其他区的0号页放到cache,否则就会冲突。

    极端情况:把0号区0-14号页都放入cache,那么就只有127个区的15号页可以放入cache,有2048-15(0-14页已放入的)-128(15页可放入的)个页不能放入cache,冲突了。冲突率可以达到90%

  • 全相联映像

    image-20240411002612070

    主存中的任意页可以放到cache中的任意页。

    主存地址格式:

    image-20240411002715791

    电路复杂,冲突率低

  • 组相联映像

    image-20240411003425102

    主存按cache的页的大小进行分页,分完页再分区。在这些区中,再进行分组,每组2个页,对应cache中也是如此。

    相同组号的主存中的任意页面可以放到相同组号的cache的任意页面。

    主存地址格式:

    image-20240411003853784

    电路复杂度相对其他两种,折中,冲突率也是折中。

总结:

image-20240411004048994

例题:

image-20240411004119711

image-20240411004435481

image-20240411004455338

1.7.4-主存编址计算

image-20240415230309956

在计算机中找到一个位是很麻烦的,但是找到一行就很简单了,将4个比特位作为一行,也叫存储单元,找起来就简单多了。

一般是32个字节,考试中是16个字节(如果没给出,默认32)。

image-20240415230556864

垂直拼接:

image-20240415230635499

水平拼接:

image-20240415230702084

公式:

image-20240415231132514

例题:

image-20240415231736217

解析:

第一空:

求总容量:

  • 给了地址范围可以求出存储单元个数:

CFFFFH-A0000H+1可以先算后面的加1,变成D0000H-A0000H=30000H,也就是3*2^16个存储单元。

  • 题干说内存按字节编址,1B=8bit。选项容量单位是KB,存储单元个数化成K=3*2^10*2^6=3*2^6K,本身就是字节编址,所以总容量就是3*2^6KB=192KB

第二空:

用64K*8bit的存储器芯片构成192KB的空间,则:

芯片数:总容量/单位芯片容量

192KB/64KB=3

1.8-输入输出系统

cpu控制数据传输,io是内存和外设之间的数据交互,内存较快,外设较慢。

image-20240417234216308

程序查询方式是cpu一直查询外设,进行询问。

中断方式是需要io时中断,没有中断时cpu可以做其他事,中断操作之后可以继续做其他事:

image-20240417234600119

DMA无需cpu参与,由DMAC进行,点击跳转

例题:

image-20240417234802181

image-20240417234841995

image-20240417234859472

1.9-总线系统

image-20240417235003263

例题:

image-20240417235104892

1.10-可靠性

image-20240417235420776

image-20240417235858619

串联:R1到R所有系统都可用才行,所以累乘

并联:只要有一个可用,整个系统就可用。所以用1减去所有系统都不可用的概率。

image-20240418000050107

例题:

image-20240418000119085

image-20240418000221882

1.11-性能指标

image-20240418000828293

例题:

image-20240418000903757

image-20240418001057575

注意约分和单位换算。

1.12-小结

image-20240418001725948

image-20240418001738601

2.1 -操作系统概念

2.1.2-操作系统的作用

image-20240418002122876

例题:

image-20240418002208531

2.1.3-特殊的操作系统

image-20240418002247448

例题:

image-20240418002524278

2.2进程的概念

2.2.2-线程概念

image-20240418003311062

image-20240418003327556

image-20240418003431476

例题:

image-20240418003505243

2.2.3-进程的状态

三状态模型:

image-20240418003748047

image-20240418004022443

例题:

image-20240418004252310

首先,单处理机,排除B,不可能有2个运行的。

再排除D,p3和p4不可能直接从阻塞变成运行。

然后排除A,如果p1变为就绪或者等待,那么p2一定会变为运行。

然后得出第一空,时间片到了,p1变为就绪。

2.3-进程调度

2.3.2-PV原语概述

image-20240418004814980

image-20240418005058794

信号量的值一般设置为资源的数量。

P是加锁,v是解锁。

例题:

image-20240418005341086

image-20240418005423909

2.2.3-信号量和PV操作

互斥模型:

image-20240418005727866

同步模型:

image-20240418010059943

综合模型:

image-20240418010301509

例题:

image-20240418010749189

image-20240418010758812

s信号量应该是临界资源的数据,只有一个Temp,所以s初始值为1

a处应该对temp加锁,b、c两处都是释放锁,只是处于不同情况下。

2.3.4-前驱图与PV操作

image-20240419001116329

例题:

image-20240419001510830

image-20240419001538852

image-20240419001813494

2.4-死锁资源数的计算

image-20240419002219089

image-20240419010502493

最乐观的情况,4个资源都在同一个进程。

最悲观的情况,5个进程都刚好差1个资源。

所以,在最悲观的情况加额外增加一个资源就可以避免死锁了。

image-20240419010714402

得出公式:

image-20240419010730692

W:每个进程执行所需资源数

M:进程数

N:总的可用资源数

例题:

代公式

image-20240419011141730

2.5-进程资源图

image-20240419011407757

例题:

image-20240419011846082

这种题,先看资源分配,R1和R2向外分配了多少,然后算出R1和R2剩余资源数,然后再来看申请资源,够不够,如果不够就是阻塞节点,足够就是非阻塞节点,如果非阻塞节点执行完后释放资源可以满足其他节点执行,就可以一步步化简。

2.6-段页式存储

2.6.1-概述

缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。

调入的方式有:

image-20240423161037841

2.6.2-页式存储

将用户程序划分成和内存相同大小的页,页里面有相同大小的块。

image-20240426180549539

image-20240426180136353

在用户程序中使用逻辑地址:由页号+页内地址

实际的物理地址是:页帧号+业内地址

缺页中断时,将用户程序调入内存,逻辑地址是已知的,要将逻辑地址转换为物理地址。

在逻辑地址转换为物理地址的过程中,页号和页帧号的对应关系已经记录在页表中。页内地址是不会发生变化的。因为划分页时,大小是固定的,且用户程序划分的大小和物理内存划分大小是一致的。

Loading...