news 2026/10/15 17:30:54

操作系统磁盘管理与IO设备复习笔记:从物理结构到调度算法完整梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
操作系统磁盘管理与IO设备复习笔记:从物理结构到调度算法完整梳理

1. 磁盘管理与IO设备的知识框架拆解

1.1 为什么这块内容总让人“学了就忘”

操作系统里的磁盘管理和IO设备这两块,很多人第一遍学的时候觉得概念不多,不就是磁盘调度算法加个中断处理吗?但真到做题或者面试的时候,发现完全串不起来。我当初复习这块内容的时候也踩过这个坑,后来才想明白问题出在哪:教材通常把“磁盘管理”和“IO设备”分成两个独立章节讲,但实际上这两块是高度耦合的。磁盘本身就是一种IO设备,而IO设备的管理又高度依赖中断机制和DMA,DMA又直接跟磁盘的数据传输绑在一起。你如果分开背,考试一综合就懵。

所以这篇复习笔记的核心思路就是:把磁盘管理和IO设备当成一个整体来梳理,沿着“数据从磁盘到内存再到CPU”这条主线,把沿途涉及的所有机制串起来。这样你记住的不是零散的知识点,而是一条完整的数据通路。

1.2 复习路径的设计逻辑

我把整个复习路径分成四层,从下往上依次是:

  • 物理层:磁盘的物理结构、扇区、柱面、磁头这些基础概念,以及IO设备的分类和组成
  • 调度层:磁盘调度算法(FCFS、SSTF、SCAN、C-SCAN等),解决的是“多个请求排队时先服务谁”的问题
  • 传输层:中断处理、DMA方式、缓冲技术,解决的是“数据怎么高效地从设备搬到内存”的问题
  • 管理层:设备分配、SPOOLing技术、磁盘空间管理,解决的是“多个进程怎么共享设备资源”的问题

这个分层的好处是,每一层解决的问题不一样,你不会把“调度算法”和“设备分配”搞混。下面我逐层展开,把每一层的核心细节和容易踩的坑都讲清楚。

1.3 复习时最容易混淆的几个概念

在正式展开之前,先把几个高频混淆点列出来,你在复习的时候可以对照检查:

混淆点常见错误理解正确理解
中断 vs 陷入以为是一回事中断是外部事件触发,陷入是程序内部主动触发(如系统调用)
DMA vs 通道以为通道就是多个DMA通道是一个独立的处理器,能执行通道程序,DMA只是数据搬运工
缓冲 vs 缓存混着用缓冲解决速度不匹配,缓存解决访问频率不匹配
磁盘调度 vs 页面置换以为都是调度磁盘调度管的是IO请求顺序,页面置换管的是内存中页面的去留

这几个点我在做题的时候反复错过,后来专门整理了一张对比表贴在书桌前,效果比反复翻书好得多。

2. 磁盘物理结构与IO设备基础

2.1 磁盘的物理结构:从盘面到扇区

磁盘的物理结构是所有磁盘管理算法的前提,不理解物理结构,后面调度算法的计算就是死记公式。我用自己的话重新捋一遍:

一个磁盘驱动器里面有多个盘片(platter),每个盘片有两个盘面(surface),每个盘面有一个磁头(head)负责读写。盘面上划分成很多同心圆,每个圆叫一个磁道(track),磁道再划分成一段一段的扇区(sector)。所有盘面上相同半径的磁道组成一个柱面(cylinder)。

这里有个关键点:寻道时间 > 旋转延迟 > 传输时间。寻道时间是磁头移动到目标磁道的时间,旋转延迟是等待目标扇区转到磁头下方的时间,传输时间是实际读写数据的时间。这三个时间加起来就是一次磁盘访问的总时间。为什么磁盘调度算法主要优化寻道时间?因为寻道时间是机械运动,最慢,通常是毫秒级;旋转延迟也是机械运动,但比寻道快;传输时间是电子信号,纳秒到微秒级。所以调度算法的核心目标就是减少磁头来回移动的距离。

注意:有些教材把旋转延迟和传输时间合并叫“延迟时间”,考试的时候看清楚题目问的是哪个。

2.2 IO设备的分类与组成

IO设备可以从多个维度分类,但复习的时候重点掌握两种分法:

按传输速率分:低速设备(键盘、鼠标)、中速设备(打印机)、高速设备(磁盘、网卡)。这个分类的意义在于,不同速率的设备适合不同的IO控制方式。低速设备用中断就够了,高速设备必须上DMA。

按信息交换单位分:块设备(以数据块为单位,如磁盘)和字符设备(以字符为单位,如键盘)。块设备支持随机访问,字符设备通常是顺序访问。

IO设备的组成包括设备控制器和设备本身两部分。设备控制器是CPU和设备之间的接口,它接收CPU发来的命令,控制设备执行,并向CPU报告状态。设备控制器里有数据寄存器、控制寄存器和状态寄存器,CPU通过读写这些寄存器来操控设备。

2.3 IO端口与内存映射IO

CPU怎么跟设备控制器通信?两种方式:

  • 端口映射IO(Port-Mapped IO):设备控制器里的寄存器占用独立的IO端口地址空间,CPU用专门的IO指令(如IN/OUT)访问。优点是IO端口空间独立,不占内存地址;缺点是需要专门的指令。
  • 内存映射IO(Memory-Mapped IO):设备寄存器映射到内存地址空间,CPU用普通的访存指令就能访问。优点是编程方便,不需要专门指令;缺点是占用了内存地址空间。

现在大多数系统采用内存映射IO,因为编程模型统一,而且可以用指针直接操作。考试的时候如果问两种方式的区别,从“地址空间是否独立”和“是否需要专门指令”两个角度答就够了。

2.4 设备控制器的核心功能

设备控制器不是简单的“转接头”,它承担了几个关键功能:

  1. 接收和识别CPU命令:解析CPU发来的控制信号,比如读、写、寻道
  2. 数据缓冲:设备和控制器的速度不匹配,控制器里通常有数据缓冲区
  3. 差错控制:检测数据传输过程中的错误,比如校验码不匹配
  4. 状态报告:向CPU报告设备当前状态,比如就绪、忙、错误

理解设备控制器的功能,对后面理解中断处理和DMA非常关键。因为中断信号就是设备控制器发出的,DMA控制器也是设备控制器的一部分(或与设备控制器协作)。

3. 磁盘调度算法:从FCFS到C-LOOK的完整推演

3.1 先来先服务(FCFS):最简单但不一定最快

FCFS就是按请求到达的顺序依次服务。优点是公平,不会产生饥饿;缺点是磁头移动距离可能很大,平均寻道时间长。

举个例子:磁头当前在100号磁道,请求队列是:55, 58, 39, 18, 90, 160, 150, 38, 184。按FCFS,磁头移动顺序是100→55→58→39→18→90→160→150→38→184,总移动距离是:

|100-55| + |55-58| + |58-39| + |39-18| + |18-90| + |90-160| + |160-150| + |150-38| + |38-184| = 45 + 3 + 19 + 21 + 72 + 70 + 10 + 112 + 146 = 498

这个数字在考试里经常让你算,所以一定要练熟。FCFS的优点是简单公平,缺点是性能差,实际系统中很少单独使用。

3.2 最短寻道时间优先(SSTF):贪心策略的得与失

SSTF每次选择离当前磁头最近的请求。还是上面的例子,当前100,最近的请求是90(距离10),然后从90开始找最近的:58(距离32),然后39(距离19),然后38(距离1),然后18(距离20),然后55(距离37),然后150(距离95),然后160(距离10),然后184(距离24)。总距离:

10 + 32 + 19 + 1 + 20 + 37 + 95 + 10 + 24 = 248

比FCFS的498少了一半。但SSTF有个致命问题:饥饿。如果不断有离磁头近的请求到达,远处的请求可能永远得不到服务。考试里经常问“SSTF可能导致什么问题”,答“饥饿”就对了。

3.3 扫描算法(SCAN):电梯算法的精髓

SCAN算法也叫电梯算法,磁头朝一个方向移动,沿途服务所有请求,到达最边缘后掉头。这个算法的关键是方向和折返点。

还是上面的例子,假设磁头当前在100,向磁道号增大的方向移动,请求队列不变。SCAN的服务顺序是:100→150→160→184(到达最边缘,假设最大磁道是199),然后掉头:90→58→55→39→38→18。总距离:

(184-100) + (184-18) = 84 + 166 = 250

注意这里有个细节:SCAN到达边缘后掉头,但掉头后只服务到最远的请求就停了,不需要再走到0。所以总距离是“从起点到边缘”加上“从边缘到最远请求”。

SCAN的优点是避免了饥饿,因为每个请求最多等磁头走一个来回。缺点是边缘磁道的请求等待时间可能比中间的长。

3.4 循环扫描(C-SCAN):更均匀的等待时间

C-SCAN在SCAN的基础上做了改进:磁头只朝一个方向服务,到达边缘后直接快速返回起点,返回途中不服务任何请求。这样所有请求的等待时间更均匀。

还是上面的例子,C-SCAN的服务顺序是:100→150→160→184(到达边缘),然后快速返回到0(不服务),再从0开始:18→38→39→55→58→90。总距离:

(184-100) + (184-0) + (90-0) = 84 + 184 + 90 = 358

C-SCAN的总距离比SCAN大,但等待时间更均匀。考试里经常让你比较SCAN和C-SCAN,记住核心区别:SCAN双向服务,C-SCAN单向服务。

3.5 LOOK与C-LOOK:不走到边缘的优化

SCAN和C-SCAN都要求磁头走到最边缘(0或最大磁道),但实际请求可能不会到达边缘。LOOK算法就是SCAN的优化版:磁头移动到最远的请求就掉头,不需要走到边缘。C-LOOK同理,是C-SCAN的优化版。

还是上面的例子,LOOK的服务顺序是:100→150→160→184(最远请求,掉头),然后90→58→55→39→38→18。总距离:

(184-100) + (184-18) = 84 + 166 = 250

跟SCAN一样?因为最远请求刚好在184,而最大磁道是199,所以LOOK比SCAN少走了15个磁道。如果最远请求是150,那LOOK的优势更明显。

3.6 各算法对比与选择建议

算法优点缺点适用场景
FCFS公平、简单性能差请求少、对公平性要求高
SSTF性能好可能饥饿请求分布均匀
SCAN无饥饿、性能较好边缘等待长一般通用场景
C-SCAN等待时间均匀总距离大对响应时间要求均匀
LOOK比SCAN少走冤枉路实现稍复杂实际系统常用
C-LOOK比C-SCAN少走冤枉路实现稍复杂实际系统常用

实操心得:考试里算总距离的时候,先画一条数轴,把当前磁头和所有请求标上去,然后按算法规则模拟磁头移动,每步都标出方向。这样不容易算错。我当初就是懒得画图,结果SCAN和C-SCAN的方向搞反了好几次。

4. IO控制方式:从轮询到通道的演进

4.1 程序直接控制方式:最简单的轮询

程序直接控制方式就是CPU不断读取设备控制器的状态寄存器,看设备是否就绪。如果就绪,就读取数据寄存器;如果没就绪,就继续轮询。

这种方式的问题很明显:CPU利用率极低。CPU大部分时间都在轮询,做不了别的事。而且CPU和设备只能串行工作,设备慢,CPU就得等。

但这种方式也有优点:实现简单,不需要中断机制。在一些对实时性要求极高、数据量极小的场景下,轮询反而比中断更可预测。

4.2 中断驱动方式:让CPU解放出来

中断驱动方式的核心思想是:CPU发完IO命令后就去干别的事,设备完成操作后通过中断信号通知CPU。CPU收到中断后,保存现场,执行中断处理程序,读取数据,然后恢复现场。

这种方式的关键是中断处理流程:

  1. 设备控制器完成操作,向CPU发送中断信号
  2. CPU在当前指令执行完毕后,检查中断引脚
  3. 如果有中断,保存当前程序的上下文(PC、寄存器等)
  4. 根据中断号查找中断向量表,跳转到对应的中断处理程序
  5. 中断处理程序读取数据、清除中断标志
  6. 恢复上下文,返回被中断的程序

中断驱动方式比轮询高效得多,但每次数据传输都要经过CPU,对于高速设备(如磁盘)来说,中断频率太高,CPU大部分时间都在处理中断,还是忙不过来。

4.3 DMA方式:让数据自己走

DMA(Direct Memory Access)方式的核心是引入一个DMA控制器,让数据在设备和内存之间直接传输,不需要CPU逐字节搬运。

DMA的工作流程:

  1. CPU向DMA控制器发送命令,设置源地址、目标地址、传输长度
  2. DMA控制器向设备发送读/写命令
  3. 设备将数据传给DMA控制器,DMA控制器直接写入内存(或从内存读出)
  4. 传输完成后,DMA控制器向CPU发送中断

DMA方式下,CPU只在开始和结束时介入,中间的数据传输完全由DMA控制器完成。这大大减少了CPU的中断开销。

但DMA也有局限:每次只能传输一个连续的数据块。如果数据分散在内存的多个不连续区域,DMA就搞不定了。而且DMA控制器只能执行简单的数据传输,不能执行复杂的控制逻辑。

4.4 通道控制方式:IO处理器的雏形

通道(Channel)是一个独立的处理器,专门负责IO控制。它能执行通道程序,通道程序由一系列通道指令组成,可以控制多台设备、完成复杂的IO操作。

通道的工作流程:

  1. CPU向通道发送一条IO指令,指明通道程序在内存中的位置
  2. 通道从内存中读取通道程序,逐条执行
  3. 通道控制设备完成数据传输
  4. 所有操作完成后,通道向CPU发送中断

通道方式下,CPU只需要发一条指令,剩下的全由通道完成。通道可以同时控制多台设备,真正实现了CPU和IO的并行。

通道有三种类型:字节多路通道(适合低速设备,轮流为多台设备服务)、数组选择通道(适合高速设备,一次只服务一台)、数组多路通道(结合两者优点)。

4.5 四种IO控制方式对比

方式CPU介入程度数据流向适用设备优点缺点
程序直接控制全程介入设备→CPU→内存低速设备简单CPU利用率低
中断驱动每次传输介入设备→CPU→内存中低速设备CPU利用率提高中断频繁
DMA开始和结束介入设备→内存高速设备CPU开销小只能传连续块
通道仅发指令设备→内存多设备CPU几乎不介入硬件复杂

注意:DMA和通道的区别是高频考点。记住一句话:DMA是数据搬运工,通道是IO处理器。DMA只能搬数据,通道能执行程序。

5. 缓冲技术与设备分配

5.1 缓冲技术:解决速度不匹配的经典方案

缓冲技术的核心目的是缓解CPU和设备之间的速度差异,减少中断频率,提高CPU和设备的并行度。

缓冲有几种类型:

  • 单缓冲:设备→缓冲区→CPU,CPU处理数据时设备不能写入缓冲区,设备写入时CPU不能处理。串行度高,效率低。
  • 双缓冲:两个缓冲区交替使用,设备写缓冲区A时CPU处理缓冲区B,反之亦然。并行度提高。
  • 循环缓冲:多个缓冲区组成环形队列,设备和CPU分别维护读指针和写指针。适合生产者-消费者模型。
  • 缓冲池:系统统一管理一组缓冲区,按需分配。分为空闲缓冲区、输入缓冲区、输出缓冲区三类。

考试里经常让你算单缓冲和双缓冲的处理时间。单缓冲的处理时间 = max(设备传输时间, CPU处理时间) + 缓冲区传递时间。双缓冲的处理时间 = max(设备传输时间, CPU处理时间)。这个公式要记牢。

5.2 设备分配:独占、共享与虚拟

设备分配要解决的是“多个进程怎么共享有限的设备资源”。三种分配方式:

  • 独占设备:一次只能分配给一个进程,如打印机。分配后其他进程必须等待。
  • 共享设备:可以同时分配给多个进程,如磁盘。但需要调度算法来管理访问顺序。
  • 虚拟设备:通过SPOOLing技术把独占设备改造成共享设备。

设备分配的数据结构包括设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)。这些表之间通过指针链接,形成设备分配的层级结构。

5.3 SPOOLing技术:用软件“骗”过独占限制

SPOOLing(Simultaneous Peripheral Operations On-Line)技术是设备分配里的重点。它的核心思想是:用磁盘上的缓冲区模拟独占设备,让多个进程以为自己独占了一台设备。

以打印机为例,SPOOLing系统在磁盘上开辟一个输出井,进程要打印时,先把数据写入输出井,然后由SPOOLing进程负责从输出井读取数据,依次发送给打印机。这样多个进程可以同时“打印”,实际上是在排队。

SPOOLing系统的组成:

  • 输入井/输出井:磁盘上的缓冲区
  • 输入缓冲区/输出缓冲区:内存中的缓冲区
  • 输入进程/输出进程:负责在缓冲区和井之间搬运数据
  • 井管理程序:管理井的分配和回收

SPOOLing的优点是提高了设备利用率和进程并行度,缺点是占用了磁盘空间,而且实现复杂。

5.4 磁盘空间管理:空闲表、位示图与成组链接

磁盘空间管理要解决的是“哪些块是空闲的,怎么分配和回收”。三种常用方法:

空闲表法:用一张表记录每个空闲区的起始块号和长度。适合连续分配,但表可能很大。

空闲链表法:把空闲块链成链表,分配时从链头取,回收时插回链头。简单但查找效率低。

位示图法:用一个二进制位表示一个块的状态,0表示空闲,1表示占用。位示图占用空间小,查找方便,适合大型磁盘。

成组链接法:结合了空闲表和空闲链表的优点,把空闲块分组,每组的第一块记录下一组的块号和块数。UNIX系统采用这种方法。

考试里经常考位示图的计算:给定块号,求它在位示图中的字号和位号。公式是:字号 = 块号 / 字长,位号 = 块号 % 字长。这个计算要练熟。

6. 常见问题与排查技巧实录

6.1 磁盘调度算法计算总距离时方向搞反

这是我在做题时最常犯的错误。SCAN和C-SCAN的方向很容易搞混,尤其是题目没有明确说“向磁道号增大方向”还是“减小方向”的时候。

排查技巧:先看题目有没有明确方向。如果没有,默认向磁道号增大的方向。然后画数轴,标出当前磁头和所有请求,按算法规则模拟。SCAN是双向服务,C-SCAN是单向服务。记住这个核心区别,方向就不会搞反。

6.2 中断处理流程的细节记不全

中断处理流程看起来简单,但细节很多,比如“保存现场”到底保存什么,“恢复现场”恢复什么,中断向量表在哪里。

排查技巧:把中断处理想象成“你正在写作业,电话响了,你去接电话,接完回来继续写”。保存现场就是记住你写到哪了(PC)、笔放在哪(寄存器),恢复现场就是回到那个状态。中断向量表就是电话簿,根据来电号码(中断号)找到对应的接电话的人(中断处理程序)。

6.3 DMA和通道的区别总是说不清楚

DMA和通道都是让CPU少介入,但区别在哪?很多人说不清楚。

排查技巧:记住一句话——DMA搬数据,通道执行程序。DMA控制器只能做数据传输,不能执行指令;通道是一个处理器,能执行通道程序,控制多台设备。DMA传输完成后发中断,通道在所有操作完成后发中断。

6.4 缓冲计算题公式记混

单缓冲和双缓冲的处理时间公式容易记混。

排查技巧:单缓冲是“串行+并行”,所以是max(传输, 处理) + 传递。双缓冲是“完全并行”,所以是max(传输, 处理)。记住“单缓冲多一个传递时间”就够了。

6.5 常见问题速查表

问题排查思路关键结论
调度算法方向搞反画数轴,标方向SCAN双向,C-SCAN单向
中断流程记不全用接电话类比保存现场→查向量表→处理→恢复
DMA与通道混淆记一句话DMA搬数据,通道执行程序
缓冲公式记混记“单缓冲多传递”单缓冲=max+传递,双缓冲=max
位示图计算错字号=块号/字长,位号=块号%字长注意从0还是从1开始编号

实操心得:复习这块内容的时候,我建议你拿一张A4纸,把“磁盘→IO控制→中断→DMA→缓冲→设备分配”这条主线画成一张流程图,每个节点旁边标注关键概念和易错点。考前只看这张纸,比翻书效率高十倍。我当初就是靠这张纸,把零散的知识点串成了体系,做题的时候思路清晰很多。

6.6 一个容易被忽略的细节:磁盘访问时间计算

考试里经常给一个磁盘参数,让你算平均访问时间。公式是:

平均访问时间 = 平均寻道时间 + 平均旋转延迟 + 传输时间

平均旋转延迟 = 旋转一周时间 / 2 = 60 / (2 × 转速)

比如转速是7200 RPM,平均旋转延迟 = 60 / (2 × 7200) = 4.17 ms。这个计算经常考,但很多人只记公式不理解为什么除以2。因为平均来说,目标扇区转到磁头下方需要半圈的时间。

传输时间 = 传输字节数 / 传输速率。如果是传输一个扇区,就是扇区大小 / 传输速率。

这三个时间加起来就是平均访问时间。注意单位统一,通常用毫秒。

6.7 另一个高频考点:磁盘地址结构

磁盘地址通常由柱面号、磁头号、扇区号组成。为什么柱面号在前?因为寻道时间最长,把柱面号放在高位,可以减少磁头移动。读取同一个柱面的数据不需要移动磁头,只需要切换磁头(电子切换,很快)。所以磁盘地址的设计原则是:先确定柱面,再确定磁头,最后确定扇区。

这个知识点在选择题里经常出现,问“磁盘地址的格式是什么”或者“为什么柱面号在高位”。理解了寻道时间最长的原理,这个题就不会错。

6.8 设备独立性与设备无关性

设备独立性是指应用程序在访问设备时,不需要指定具体的物理设备,只需要指定逻辑设备名。系统通过逻辑设备表(LUT)把逻辑设备名映射到物理设备。

这个机制的好处是:程序不依赖具体硬件,设备更换后程序不需要修改。实现方式是:在设备分配时,系统根据逻辑设备名查找LUT,找到对应的物理设备,然后分配。

考试里经常问“设备独立性的好处是什么”或者“逻辑设备表的作用是什么”。记住核心:解耦应用程序和物理设备。

7. 复习策略与实战建议

7.1 用“数据通路”串联所有知识点

我复习这块内容最大的体会是:不要孤立地背每个知识点,而是沿着“数据从磁盘到CPU”这条通路来串联。数据从磁盘读出,经过设备控制器,通过DMA写入内存,然后通过中断通知CPU,CPU从缓冲区读取数据处理。这条通路上每个环节涉及什么机制、有什么优化手段,串起来就形成了一个完整的知识网络。

具体操作:拿一张白纸,画一条从左到右的箭头,左边写“磁盘”,右边写“CPU”,中间标出所有经过的组件和机制。每标一个,就问自己“这里为什么需要这个机制”“如果没有它会怎样”。这样复习一遍,比看十遍书都管用。

7.2 计算题一定要动手算

磁盘调度算法的总距离计算、缓冲时间计算、位示图计算、平均访问时间计算,这些题光看是不行的,必须动手算。我当初就是觉得自己看懂了,结果一算就错。后来强迫自己每道题都在纸上画数轴、列公式、算结果,才算真正掌握。

建议你找10道以上的计算题,涵盖FCFS、SSTF、SCAN、C-SCAN、LOOK、C-LOOK,每道题都画图计算。算完之后对照答案,看自己的方向有没有搞反、公式有没有用错。练多了之后,看到题目就能条件反射地画出数轴。

7.3 用对比表整理易混概念

这块内容里易混概念特别多:中断vs陷入、DMA vs通道、缓冲vs缓存、SCAN vs C-SCAN、单缓冲vs双缓冲。我建议你专门整理一张对比表,每个概念从“定义”“特点”“适用场景”“优缺点”四个维度对比。整理的过程本身就是复习,而且考前只看这张表就够了。

7.4 面试高频问题准备

如果你是在准备面试,这块内容的高频问题包括:

  • 磁盘调度算法有哪些?各自优缺点?
  • 中断处理流程是怎样的?
  • DMA的工作原理是什么?和通道有什么区别?
  • 缓冲技术有哪几种?单缓冲和双缓冲的区别?
  • SPOOLing技术是什么?怎么实现的?
  • 磁盘访问时间由哪几部分组成?怎么计算?

每个问题都要能用自己的话讲清楚,而不是背课本。面试官最怕听到的就是“背课文”式的回答。你可以试着用生活化的类比来解释,比如把SPOOLing比作“取号排队”,把DMA比作“快递直接送到家,不用你亲自去取”。

7.5 最后再分享一个小技巧

复习这块内容的时候,我习惯把每个知识点都问三个问题:是什么?为什么?怎么用?比如“磁盘调度算法”是什么?为什么需要?怎么用?这三个问题回答清楚了,这个知识点就真正掌握了。如果只能回答“是什么”,那说明你只是记住了表面,考试稍微变个问法就懵了。

这个习惯我坚持了整个复习周期,效果非常明显。刚开始觉得每个知识点都要问三个问题很费时间,但后来发现,真正理解之后,复习速度反而更快了,因为不需要反复背,理解了就记住了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 17:29:41

Kerberos 认证报错排查实战:从错误码到根因的完整指南

1. 从一次票据请求失败说起:Kerberos 报错为什么总让人一头雾水如果你在运维或后端开发岗位上待过一段时间,大概率遇到过这样的场景:服务突然大面积不可用,日志里刷出一片KRB_AP_ERR_SKEW、KRB_AP_ERR_MODIFIED或者Server not fou…

作者头像 李华
网站建设 2026/10/15 17:27:40

Middleman 的 Markdown 渲染:用 with_toc_data 自动生成标题锚点 ID

前端开发工具 【免费下载链接】middleman Hand-crafted frontend development 项目地址: https://gitcode.com/gh_mirrors/mi/middleman 点击查看 免费下载 导读 本文以 Middleman 仓库中 with_toc_data.html.markdown 这一测试文档为起点,深入讲解 Mi…

作者头像 李华
网站建设 2026/10/15 17:27:29

SHT3x温湿度传感器驱动开发:从I2C通信到CRC校验的完整指南

简介:SHT3x温湿度传感器代码详解,面向嵌入式开发者与智能硬件爱好者,覆盖环境监测、智能家居、工业自动化等场景,帮助快速掌握基于IC/SPI通信的高精度温湿度数据采集实现。资源压缩包共13个文件,以4个C源文件与4个H头文…

作者头像 李华