408真题---疑难杂症

大部分的疑难杂症我都直接记在了真题试卷上,这篇博客主要是记录不好记在真题试卷上的疑难杂症

一、编制单位的确定

问题来源: 2010年真题-T43

按1字节编址: 说明一个编址单元是一字节,我们可以这样编址:

0x00400000(地址)    E8(机器码/数据)

0x00400001       C5

0x00400002       03

0x00400003       00

0x00400004       00

0x00400005       E9

0x00400006       74

0x00400007       FE

0x00400008       FF

0x00400009       FF

0x00400000~0x00400009 有十个编址单元,包含了10B数据

按2字节编址:说明一个编址单元是二字节,我们可以这样编址:

0x00400000(地址)    E8 C5(机器码/数据)

0x00400001       03 00

0x00400002       00 E9

0x00400003       74 FE

0x00400004       FF FF

0x00400003       74 FE

0x00400004       FF FF

则从地址 0x00400000~0x00400004 就有5个编址单元,包含了10个字节的数据,那要是从0x00400000~0x00400009 有二十字节的数据

如果按照2字节编址,并用2字节定长指令,若PC+1,那么就是在加1,因为编址单位的1代表数据的2

如果按照1字节编址,并用2字节定长指令,那么PC+1,实际上想相当于PC+2

同样的,如果主存地址空间为2MB,采用2字节编址,那么MAR的大小为1MB(20位)即可

二、队列方向的确定

题源刨析

2011年真题选择题-T3 开门大吉

img

知识点

我总是惯性的认为,入队是让front ++,rear保持不变

实际上应该是这样

img

这样可能不太直观,但把它倒过来就比较直观了,或者水平来看他

img

入队: rear++

出队: front++

img

三、DMA方式与程序中断方式的响应发生时间为何不同

https://zhidao.baidu.com/question/575333827.html

机器周期又叫存取周期。计算机在指令执行完毕是发程序查询信号这时,发生程序中断响应,CPU中断现行程序。在DMA请求方式中,CPU只是让出总线使用权和不能访存,因此可以在不访存即存取周期结束后响应DMA,让出总线使用权,同时不在访存,而此时CPU还可以进行其他内部操作。

四、中断屏蔽字

对中断屏蔽字的概念,不知何时出现了差错...

img

经典的错误:

img

正确的做法:

img

中断屏蔽字概念:现代计算机一般使用中断屏蔽技术,每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

我的错误认知:

算了,不写了,怕写下来再被我记得更深

屏蔽字真正的含义:

屏蔽字是某中断源根据自己的屏蔽字去屏蔽或同意其他的中断源

比如A中断源,当有其他中断源要进行中断时(比如C),A查看自己的中断字,发现对C的中断字上是1,也就是屏蔽C,而如果是D中断源要进行中断,A对D是0,也就是允许D进行中断

屏蔽源对自己的屏蔽字都是1!

五、编译、链接、装入

这方面一直掌握不好,今天做整体看到答案解析不错,遂记录一下

题源刨析

img

知识点

C语言经过预处理(cpp)-编译(eel)-汇编(as) -链接Cld)产生可执行文件

1、预处理

主要处理#开始的预编译指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等

2、编译

C语言采用源文件独立编译的方法,如程序main.e,filel.e, file2.e, filel.h, file2.h, 在链接的前 一步生成了main.o,filel.o, file2.o,

这些目标模块采用的逻辑地址都从 0开始,但只是相对于该模块的逻辑地址

注意是相对于模块的逻辑地址

3、链接

链接器将这三个 文件,libc和其他的库文件链接成一个可执行 文件。 链接阶段主要完成了重定位, 形成整个程序的完整逻**辑地址空间。

注意是完整逻**辑地址空间。

4、装载

装载器把可执行程序装入内存并运行的过程

img

总之,在这题中,逻辑地址指的就是段内的偏移量而不是链接后生成的整个程序全局的逻辑地址空间, 所以逻辑地址是编译时产生的。

六、一个关键路径的很好的题,能暴露出你对关键路径知识点的掌握有多么不堪xD

img

img

注意在求各个事件的最早发生事件时,对于某点,如果有多条路径,要选则权最大的那一个

同时,在求各个事件的最晚发生时间是,对于某点,如果有多条路径,要选择权最小的哪一条

img

七、高地址、低地址问题

题源刨析

img

img

一般来说,我们对于这些结构的定义从左到右为高地址到低地址

比如:

img

高地址自然就是靠近左边的部分

这种指令地址方向的涉及是为了满足小端存储的需求

比如,有一条陷阱门(上图)指令为 0x12345678,那么它在内存中的存储就为 78 56 34 12 , 78 56 对应低地址,34 12 对应高地址

八、NAT内网地址范围

NAT协议保留了3段IP地址供内部使用 (T32)

NAT协议保留了3段P地址供内部使用,这3段地址如下:
A类:1个A类网段,即10.0.0.0 ~ 10.255.255.255,主机数16777216。
B类:16个B类网段,即172.16.0.0 ~ 172.31.255.255,主机数1048576。
C类:256个C类网段,即192.168.0.0 ~ 192.168.255.255,主机数65536。

真的是,今天做题又没想到NAT网关转换

img

img

九、总线补充 --- 通信总线

img

通信总线是在计算机系统之间或计算机系统与其他系统(如远程通信、测试设备)之间传输信息的总线,属于外部总线

回顾一下系统总线:

计算机系统内各功能部件(CPU、主存、I/O接⼝)之间相互连接的总线
按系统总线传输内容的不同⼜可分为3类
1、数据总线
传输各功能部件之间的数据信息,是双向传输线,其位数与机器字⻓、存储字⻓有关。
2、地址总线
指出主存和I/O设备接⼝电路的地址

3、控制总线
传输控制信息,包括控制命令和反馈信号

除了系统总线,还有片内总线、I/O总线

十、经典问题---K/k表示的是 1000 还是 1024

img

我一直以为小k代表1000,大K代表1024;

今天遇到的题目 16B * 300k/s = 4.8MB/s ???

在谷歌的时候,看到一个帖子是这样写的:

https://blog.csdn.net/weixin_43306331/article/details/96142563

img

即在传输领域,1k/1K代表1000

在存储领域,1k/1K代表 1024

目前这个答案能让我勉强接受,希望不要让我碰到反例打脸

十一、海明码知识点

0、确定海明码位数公式

img

n为有效信息的位数,k为校验位的位数

想想书上那张图检验四位就用了三个海明码

1、海明码一般来说具有一位纠错功能

2、海明码纠错d位,需要2d+1海明距,检错d位,需要d+1的海明距

十二、被误解的低位交叉编址

参考资料

https://www.bilibili.com/video/BV1gN411a78J/?spm_id_from=333.337.search-card.all.click&vd_source=87f7ad8544d4c3ad070c5c2ff28b7698

408真题2013-T43-(3)

错误原因

image-20231016175106208

用王道的知识点不能解释的通最后5ns是哪里来的

并且王道在这里的用词不太对

image-20231016175218496

r不应该叫存取时间,应该叫总线传输周期更合理,实际的存取时间还是T

我们之所以把r误认为了存取时间,大概是因为当流水线稳定的时候,每经过一个r就会有一个体的存取周期结束

image-20231016175436716

正确的理解

模块的一个存取周期是T,其中T包含了总线传送周期r、DRAM恢复时间h

可以写成T=r+h,在一个体内完成总线传送周期r后不能说该体已经完成了存取。必须等待T经过后才能说完成了存取

我们再完成存取后并没有完成数据的传输我们还需要额外的时间进行数据的传输,会消费时间d,这是独立于存取周期T之外的时间

或者,我们也可以认为这个r是依赖于低位交叉编址体的个数

如下图的(3)

image-20231016175813669

低位交叉编制与位扩展的区别

位扩展的大小与总线宽度、存储单元大小相同,比如8个8192 x 8192 x 8位的芯片,若采用位扩展,扩展至64位则其数数据总线宽度也应该为64位,且其存储单元也为64位(即按8字节编址),一次读入64位
而若采用低位交叉编制,则其数据总线宽度也应该为64位,不过存储单元是8位,一次读入8位

低位交叉存储器访存冲突问题

计算机使用4体交叉编址(默认为低位交叉),存储器总线出现的主存地址序列为: 8000,8001,8002,8003,8004,8006

转化为模块序号即为: 0 1 2 3 0 2,则8002与8006冲突
冲突规则如下: 相邻四个访问地址对应的模块尚若重复出现即为冲突

十三、页、页表、页框的区别

1、页

页是指进程中的块

image-20231017145902883

2、页表

页表是系统为每个进程建立的页面映像表

image-20231017150055112

3、页框 / 页帧

页框,也叫页帧 Page Frame

是指物理内存中的块

image-20231017150824706

image-20231017150911962

4、页表项

页表项是页表中的任一项

image-20231017150133057

5、页目录表

没找到这个概念哪来的

页表是存放页表项的页框,页目录表是存放页表地址的页框

最主要的就是 页、页表、页框/帧的概念

真题溯源

image-20231017151308120

2013-T46-(3)

这里的页框号我写的 页框号1: 0 页框号2:1

实际上应该是: 页框号1: 00900H 页框号2:00901H

可以这样说,页号就是虚拟地址的前x个位数

页框号就是物理地址的前x个位数,他们是从0开始的,而不是从00900H开始的

image-20231017153038545

十四、知识点补充---共享存储、消息存储、管道Pipe

image-20231020084742644

image-20231020084751200

共享存储

在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换,在对共享空间进行写/读操作时,需要使用同步互斥工具(如P操作、V操作),对共享空间的写/读进行控制。

通过系统调用实现

消息传递

  1. 直接通信方式。发送进程直接把消息发送给接收进程,并将它挂在接收进程的消息缓冲
    队列上,接收进程从消息缓冲队列中取得消息
  2. 间接通信方式。发送进程把消息发送到某个中间实体,接收进程从中间实体取得消息。这种中间实体一般称为信箱。

管道

1、管道本质上是一个文件

2、管道常驻在内存中

3、半双工

4、当管道满时,进程在写管道会被阻塞,而当管道空时,进程在读管道会被阻塞

十五、控制冒险

image-20231020093651982

image-20231020094047140

image-20231020094119333

无条件转移指令,停两个周期:

image-20231020094502058

十六、多级页表---那一级才是多级页表?

以二级页表为例,顶级页表就是一级页表

另外,注意一个知识点,顶级页表最多只能有一个页(P170)

十七、关于间指周期指令执行流的错误认识

做了王道的课后题,外加真题考察的很少,导致我对间指周期产生了错误的认识

我的错误认识

我一直以为间址周期会完成所有的寻址任务,包括第一次间址、直接寻址之后得到有效操作数,而指令的执行阶段只需要用操作数进行运算即可

错误朔源

看这道题

image-20231024163816589

王道给的参考答案是这样的:

image-20231024163950595

这是寄存器间接寻址,其实这里的间址周期应该让执行周期来干

怎样的寄存器间接寻址才是正确的呢?

参考2009年真题答案

image-20231024164248054

答案:

image-20231024164412652

这里直接就没有间址周期!

唐朔飞计算机组成原理 间接寻址的解释

image-20231024162231898

image-20231024162249433

总结

  1. 间址周期不是一次完成所有的寻址得到操作数,而是为了得到操作数的有效地址,它为执行周期留了一次寻址
  2. 执行周期也有可能会寻址的
  3. 寄存器间接寻址没有间址周期,直接在执行周期完成寻址与运算
  4. 在执行一重间接寻址指令时,存在间址周期,再次期间,CPU寻址一次,获得有效地址,放入MDR寄存器中,之后由执行周期完成最后的寻址

ps: 已经不是第一次发现王道的书存在问题了,王道的书慎用吧

十八、扇区的地址---易记错点、易混淆点

真题朔源

2022年真题-44

image-20231026163147410

知识点、易错点

一直以为扇区的地址是: 柱面号·磁道号·扇区号

实际上是: 柱面号·盘面号·扇区号

我们来看一下磁盘驱动器的物理结构

image-20231026163526028

可以发现一个垂直于所有盘面的磁道就是一个柱面

而盘面就是盘片,我们寻址的时候都是先找根据磁道号找柱面,再找盘面,最后找扇区

注意有的盘片可能会有正反两个盘面

十九、多级域名查询次数问题

题目朔源

2016年408真题---T40

image-20231029160605786

做了三次,错了三次,g

知识点

https://www.bilibili.com/video/BV15K4y1b7Zd/?p=8&vd_source=87f7ad8544d4c3ad070c5c2ff28b7698

各种不同的域名服务器的功能
  1. 根域名服务器: 根域名服务器通常并不直接对域名进行解析,而是返回该域名所属顶级域名的顶级域名服务器的IP地址。 Internet 一共有13个根域名服务器

  2. 顶级域名服务器

    负责管理在该顶级域名服务器注册的所有二级域名

  3. 权限域名服务器

    这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。

根域名服务器、顶级域名服务器、权限域名服务器分别对应网站的哪一级域名

image-20231029161454325

  1. 根域名服务器的功能就是给出顶级域名服务器的地址,所以其不对应任何一级域名
  2. 顶级域名服务器对应着顶级域名
  3. 权限域名对应着二级域名、三级域名...n级域名(直到查询成功)

答案

image-20231029161723334

二十、快速排序的时间复杂度分析过程

题源分析

2016年408真题算法题的时间复杂度分析

image-20231029163319869

时间复杂度分析

参考:

https://zhuanlan.zhihu.com/p/341201904

我在上面的基础上,分析了一下题目的时间复杂度

image-20231029163455773

二十一、浮点数上溢、下溢

浮点数下溢,直接当作机器零处理

浮点数上溢,表示超出了浮点数范围,属于内中断

二十二、对汇编程序员不透明的寄存器

题目朔源

2023王道模拟题第一张

image-20231106145138557

解答

image-20231106145233432

需要注意的是:

  1. 移位器是不可见的

  2. 中断字寄存器

    1. 中断字寄存器应该是指的标志寄存器调度IF位(x86)

      img

    2. 比如cli关中断指令、sti开中断指令(x86下)

    3. 对于汇编程序员可见

二十三、总结CF、OF所有的溢出判断

我们都知道 :

OF = 最高位的进位⊕次高位的进位

CF = 最高位的 进位/借位 ⊕ Sub信号 (也称为cin信号,减为1)

我总结一下怎么一眼看出有没有溢出

OF

只要正数+正数与负数+负数的时候会溢出

  1. -2+(-127) = 127 => 1111 1110 + 1000 0001 = 0111 1111
  2. 127+2 = -127 => 0111 1111 + 0000 0010 = 1000 0001

且正数加正数=负数 / 负数+负数 = 正数 时一定溢出

CF

  1. 255+2 = 1 => 1111 1111 + 0000 0002 = 0000 0001
  2. 255+255 = 254 => 1111 1111 + 1111 1111 = 1111 1110
    然鹅,255-1不会溢出:
  3. 255-1 = 1111 1111 - 0000 0001 => 1111 1111 + 1111 1111 => 1111 1110

综上,对于OF,考虑正负号,只要运算结果违背有符号运算的常识,就会溢出

对于CF,不考虑正负号,逻辑运算,只要运算结果违背逻辑运算的常识,就会溢出

或者说,对于有符号数,我们可以直接根据常识来判断(比如-2-127=127这明显不正确)

而对于无符号数,我们可以先把正值转化成无符号数后,再根据常识判断

比如: -1 + 2

1、转无符号数: 1111 1111 + 0000 0002 => 255+2 = 0000 0001 =>1

2、根据常识,255+2是等于257的,故发生了溢出

特别注意的是,当计算: 10 - (-20)时,我们不要变10+20算,而要直接转成无符号数的形式,再计算:

1、0000 1010 - 11101100 => 10 - 236 = 0001 1110 => 30

2、根据常识,10-236=-226,即 1110 0010 ,故完全对不上

二十四、CN---各种协议的层次

FTP: 应用层、基于TCP、20(数据)与21(控制)号端口

DNS: 应用层,基于UDP 、53号端口

SMTP、POP: 应用层,基于TCP

HTTP: 应用层,基于TCP ,80号端口

TELNET: 应用层,基于TCP,23号端口

BGP: 应用层,基于TCP

RIP: 应用层,基于UDP

DHCP:应用层,基于UDP

OSPF: 传输层,基于IP

ICMP:网络层协议,IP协议的附属协议

ARP: 网络层协议

PPP: 数据链路层

HDLC: 数据链路层

二十四、当IP分组达到目的地,TTL恰好为0时

真题朔源

2018年408真题-T42-(3)

image-20231108151506399

image-20231108151538767

题目刨析

23版王道408 P151有这样一句话

image-20231108151712369

路由器在转发分组前,先把TTL减1,若TTL为1,则必须丢弃

由此可知当IP分组达到目的地,TTL恰好为0时也要丢弃

二十五、求强连通分量的个数

很容易被遗漏的一个知识点

题源刨析

23版王道P237

image-20231110160316233

23版王道模拟卷---卷4---T8

image-20231110160426240

求解方法

  1. 找入度或出度为0的点
  2. 依此删除这些点,每删除一次计数器加1
  3. 直到没有入度/出度为0的点,此时计数器的值就是强连通分量的个数

以王道题为例

image-20231110161335552

二十六、不同种类的进程优先级问题

计算型作业的优先级,应低于I/O型作业的优先级

I/O操作需要及时完成,没办法长时间保存所要输入输出的数据,因此I/O型作业优先级更高

系统进程的优先级应高于普通进程

短作业与长进程的优先没关系,关键看算法

资源要求高的优先级应该低于资源要求低的优先级

资源要求低的优先级应该让其尽快完成,释放出占有资源

二十七、802.11 MAC帧的地址1、地址2、地址3、地址4

刚刚在梳理无线局域网知识点的时候,发现这个知识点我一直都是理解错的,特此记录一下

以一道题来研究

image-20231116171259971

image-20231116171314983

  1. 当为发送帧时
    1. 地址1是AP的MAC地址 (不是真正的目的地址)
    2. 地址2是源MAC地址
    3. 地址3是真正的目的地址
  2. 当帧为接受帧时
    1. 地址1是目的MAC地址
    2. 地址2是AP的MAC地址(不是源地址)
    3. 地址3是原MAC地址

地址4用于自组网

详情可翻看 《计算机网络(第八版)》P420

二十八、排队器、中断响应、中断处理、中断屏蔽

image-20231207163010306

1、排队器: 当某一时刻有多个中断请求时,需要使用排队其来确定其响应优先级

2、中断响应: 中断响应取决于中断的优先级,这种响应是硬件规定的,是定死的

3、中断屏蔽字: 处理优先级是指CPU实际对各中断源请求的处理优先次序。如果不采用屏蔽技术,响应的优先次序就是处理的优先次序。中断屏蔽字可以根据实际需要来确定

4、中断响应前的中断请求判优是由排队器完成的,CPU一旦检测到中断请求,便会立马进行中断响应

二十九、GBN与SR的传输速率问题

分两种情况,设发送方从发送第一个帧到接收到第一个确认帧为止所用的时间为RTT,设窗口尺寸为n,帧传输时间为t0,则有

1、n*t0 < t

这说明在一个RTT内就可以发送完所有的数据,那么发送方的数据传输速率=\(\frac{n*t_0}{RTT}\)

2、n*t0 > t

这说明在一个RTT内不能发送完所有的数据,此时数据传输速率为 \(100\%\)

posted @ 2023-10-06 10:40  TLSN  阅读(201)  评论(0编辑  收藏  举报