ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

程序中断方式与中断系统全流程拆解:从408真题到工程实践

程序中断方式与中断系统全流程拆解:从408真题到工程实践 1. 中断系统到底在解决什么问题1.1 从一道408真题说起24年408那道45题考的就是I/O设备与主机之间信息传送的控制方式。很多同学看到“程序中断方式”几个字脑子里第一反应是“CPU执行程序的时候被设备打断然后去处理设备”这个理解方向没错但真到了做题和写代码层面光知道这个远远不够。题目往往会深入到中断响应条件、中断隐指令、中断向量、中断屏蔽字这些细节而这些细节全部依赖一个前置知识——中断系统本身是怎么运转的。我当年复习这一块的时候最大的感受是教材上把中断系统拆成了好几个零散的知识点中断请求、中断判优、中断响应、中断服务、中断返回每个部分单独看都能看懂但合在一起就串不起来。后来我逼着自己画了一张完整的时序图把每个阶段CPU在干什么、设备在干什么、接口电路在干什么全部标出来才算真正打通了。这篇文章我就按照这个思路把中断系统从头到尾拆一遍重点放在程序中断方式为什么需要中断系统、中断系统内部怎么协作、以及考试和实际中容易踩的坑。1.2 程序中断方式在I/O控制方式中的位置I/O设备与主机之间传送信息一共有五种控制方式程序查询方式、程序中断方式、DMA方式、通道方式、I/O处理机方式。程序中断方式是第二种它的核心改进在于CPU不再需要反复轮询设备状态而是由设备在准备好之后主动“通知”CPU。这个“通知”的机制就是中断。你可以这样理解程序查询方式像是你在厨房做饭每隔几秒就跑去门口看看快递到了没有程序中断方式像是你装了个门铃快递员到了按门铃你听到铃声再去开门。门铃系统就是中断系统铃声就是中断请求信号你放下锅铲去开门的过程就是中断响应和服务。这个类比里有一个关键点容易被忽略你听到门铃后需要记住刚才炒菜炒到哪一步了回来之后才能接着炒。CPU也一样中断服务程序执行完之后要能准确回到原程序的断点继续执行这就需要保存和恢复现场。很多同学做题时只关注“中断服务程序做了什么”忽略了“现场保存和恢复”这个环节结果遇到考中断隐指令的题目就懵了。1.3 中断系统需要解决的核心矛盾中断系统本质上要解决三个矛盾。第一个是实时性与开销的矛盾设备希望CPU尽快响应但CPU每次响应中断都要付出保存现场、跳转、恢复现场的开销如果中断太频繁CPU大部分时间都在做上下文切换真正干活的时间反而少了。第二个是优先级与公平性的矛盾多个设备同时请求中断时CPU先响应谁如果永远先响应高优先级设备低优先级设备可能永远得不到服务。第三个是嵌套与简单性的矛盾高优先级中断能否打断正在执行的低优先级中断服务程序允许嵌套能提高实时性但会让现场保存变得复杂。这三个矛盾贯穿了整个中断系统的设计。理解了它们你再看中断屏蔽字、中断优先级、中断嵌套这些概念就不是死记硬背了而是能推导出为什么这么设计。2. 中断系统核心组件逐个拆解2.1 中断请求触发器与中断屏蔽触发器每个I/O接口电路中都有这两类触发器。中断请求触发器INTR的作用很简单设备准备好数据或者完成一次传输后把它置1表示“我有事找CPU”。中断屏蔽触发器MASK的作用是决定这个设备的中断请求能不能被送到CPU。这里有一个容易混淆的点中断请求触发器是设备自己置1的CPU不能直接改它中断屏蔽触发器是CPU通过程序来设置的比如在中断服务程序里修改屏蔽字。考试中经常考“某设备的中断请求能否被响应”判断依据就是中断请求触发器为1且中断屏蔽触发器为0且CPU的中断允许触发器EINT为1且该设备优先级高于当前正在服务的中断。我见过很多同学把中断屏蔽触发器和中断允许触发器搞混。记住一个简单的区分中断允许触发器EINT是CPU级别的总开关相当于家里的总电闸中断屏蔽触发器是设备级别的分开关相当于每个房间的灯开关。总闸不拉所有灯都不亮总闸拉了某个房间的开关关了那个房间的灯不亮但其他房间不受影响。2.2 中断判优电路谁先谁后多个设备同时发出中断请求时需要一个判优电路来决定先响应哪个。判优可以用硬件实现也可以用软件实现。硬件判优常见的是链式排队电路也叫菊花链。它的原理很简单所有设备串在一条链上优先级最高的设备离CPU最近。当多个设备同时请求时信号沿着链依次传递先到达的设备先截获信号后面的设备就被挡住了。链式排队电路的优点是结构简单、扩展方便缺点是优先级固定离CPU近的设备永远优先。如果某个低优先级设备频繁请求高优先级设备反而不怎么请求那低优先级设备还是得等。软件判优则是通过查询顺序来决定优先级灵活但速度慢。408考试中硬件判优和软件判优的对比是一个常见考点。我个人的记忆方法是硬件判优快但死板软件判优慢但灵活。做题时如果题目强调“响应速度快”选硬件如果强调“优先级可动态调整”选软件。2.3 中断向量与中断向量表中断向量是中断服务程序的入口地址。中断向量表是所有中断向量的集合通常放在内存的固定区域。CPU响应中断后需要根据中断类型号去中断向量表里查出对应的入口地址然后跳转过去执行。这里有一个关键细节中断向量表里存放的到底是入口地址本身还是入口地址的地址不同教材和不同架构有不同的约定。在408考试中通常约定中断向量表存放的是中断服务程序的入口地址。CPU拿到中断类型号后用类型号乘以4每个向量占4字节得到偏移量再加上中断向量表的基址就找到了对应的表项读出入口地址送入PC。我当年在这里踩过一个坑把中断向量和中断向量地址搞混了。中断向量是入口地址中断向量地址是存放这个入口地址的内存单元的地址。考试中如果问“中断向量地址”你要回答的是表项的地址不是入口地址本身。这个区别在选择题里经常出现一不留神就选错。2.4 中断隐指令硬件自动完成的操作中断隐指令不是一条真正的指令而是CPU在响应中断时由硬件自动完成的一系列操作。它主要包括关中断、保存断点、引出中断服务程序。关中断是为了防止在保存断点的过程中被新的中断打断保存断点通常是把当前PC的值压入栈或者保存到特定寄存器引出中断服务程序就是根据中断类型号去中断向量表查入口地址并送入PC。很多同学不理解为什么叫“隐指令”。其实很简单这些操作对程序员来说是透明的你在程序里看不到对应的指令但CPU确实执行了这些操作。就像你按了电梯按钮电梯自动完成关门、启动、加速、减速、开门这一系列动作你不需要手动控制每一步。考试中经常考中断隐指令完成了哪些操作选项里会混入“保存通用寄存器内容”“设置中断屏蔽字”这些干扰项。记住保存通用寄存器和设置屏蔽字是中断服务程序自己要做的事不是中断隐指令。中断隐指令只做三件事关中断、保存断点、引出中断服务程序。3. 中断处理全流程逐步还原3.1 中断请求阶段设备什么时候发出请求设备在完成一次数据传送后或者在准备好接收新数据时会置位中断请求触发器。这个时机很关键如果是输入设备通常在数据已经放入数据缓冲寄存器后发出中断请求如果是输出设备通常在数据缓冲寄存器为空、可以接收新数据时发出中断请求。这里有一个常见的误解很多同学以为设备一启动就发中断请求。实际上设备需要一定的时间来完成工作比如键盘需要等用户按键磁盘需要等磁头定位到指定扇区。设备完成工作后才发中断请求这个时间是不确定的所以CPU不能靠轮询来等必须用中断。3.2 中断响应阶段CPU什么时候可以响应CPU响应中断需要满足几个条件当前指令执行完毕、没有更紧急的任务如DMA请求、中断允许触发器EINT为1、有中断请求且未被屏蔽。注意“当前指令执行完毕”这个条件CPU不会在一条指令执行到一半的时候响应中断必须等这条指令做完。这是为了保证指令的原子性否则程序状态会混乱。但有一个例外如果当前指令是关中断指令或者开中断指令CPU会在执行完这条指令后才响应中断。这个细节在考试中偶尔会出现属于拔高题。CPU响应中断后首先关中断然后保存断点然后根据中断类型号查中断向量表最后跳转到中断服务程序。这一系列操作就是中断隐指令全部由硬件自动完成不需要软件干预。3.3 中断服务阶段服务程序做了什么中断服务程序是软件层面的东西它的结构通常是保护现场、开中断、执行设备服务、关中断、恢复现场、开中断、中断返回。保护现场是把中断服务程序中要用到的寄存器内容保存到栈里开中断是为了允许更高级的中断打断当前服务实现中断嵌套执行设备服务是真正干活的部分比如从数据缓冲寄存器读数据关中断是为了在恢复现场时不被干扰恢复现场是把之前保存的寄存器内容还原开中断和中断返回是最后一步让CPU回到原程序继续执行。这里有一个非常容易出错的点保护现场和恢复现场的顺序。保护现场时先保存的寄存器后恢复恢复现场时先恢复后保存的寄存器。这就像叠盘子先放的盘子在最下面最后才能拿出来。如果顺序搞反了寄存器的值就乱了。3.4 中断返回阶段怎么回到原程序中断返回通常是一条专门的指令比如x86架构里的IRET指令。这条指令会从栈里弹出之前保存的断点地址送入PC同时恢复标志寄存器的内容。执行完这条指令CPU就回到了原程序的断点处继续执行。这里有一个细节中断返回时CPU会自动开中断吗不一定。有些架构的中断返回指令会自动恢复中断允许触发器的状态有些则需要软件显式开中断。408考试中通常约定中断返回后CPU处于开中断状态但具体要看题目描述。4. 中断屏蔽字与中断嵌套的实操分析4.1 中断屏蔽字怎么设置中断屏蔽字是一个二进制串每一位对应一个设备的中断屏蔽触发器。某位为1表示屏蔽该设备的中断请求为0表示允许。在中断服务程序中通过修改屏蔽字可以动态调整优先级。举个例子假设有四个设备A、B、C、D优先级从高到低。当CPU正在处理设备C的中断时如果希望A和B可以打断C但D不能打断C那么C的中断服务程序中应该把屏蔽字设置为A对应位为0B对应位为0C对应位为1屏蔽自己防止同一设备重复中断D对应位为1。这样A和B的中断请求可以送到CPUD的被屏蔽。这个设置过程在考试中经常以表格形式出现要求你写出每个设备中断服务程序的屏蔽字。我的经验是先画出优先级顺序然后对每个设备把优先级比它高的设备对应位设为0比它低的和它自己的设为1。这个规律适用于大多数题目。4.2 中断嵌套的实际执行过程中断嵌套是指高优先级中断可以打断低优先级中断服务程序。实现嵌套的关键是在中断服务程序中适时开中断。如果整个服务程序都不开中断那就不会发生嵌套高优先级中断只能等低优先级服务程序执行完才能被响应。嵌套的执行过程可以用一个栈来理解每进入一层中断就把当前的状态压栈每退出一层中断就弹栈恢复。嵌套层次越多栈越深。如果嵌套层数过多可能导致栈溢出这是实际系统中需要注意的问题。考试中经常考嵌套的执行顺序。比如设备A优先级高于BB正在服务时A发出请求CPU响应AA服务完后回到B继续服务B服务完后回到原程序。这个顺序要能准确画出。4.3 中断屏蔽字与优先级的关系中断屏蔽字和优先级是两个相关但不同的概念。优先级决定了多个中断同时请求时先响应谁屏蔽字决定了某个中断请求能不能被送到CPU。优先级是硬件判优电路决定的屏蔽字是软件设置的。一个设备优先级高不代表它不能被屏蔽。CPU可以通过设置屏蔽字来屏蔽任何设备的中断请求包括高优先级设备。这在某些场景下很有用比如在执行一段关键代码时不希望被任何中断打扰就可以把所有设备都屏蔽掉。但要注意屏蔽字只能屏蔽可屏蔽中断不能屏蔽不可屏蔽中断。不可屏蔽中断通常用于紧急情况比如电源故障CPU必须立即响应。5. 程序中断方式与其他I/O控制方式的对比5.1 与程序查询方式的对比程序查询方式是CPU主动轮询设备状态程序中断方式是设备主动通知CPU。前者的CPU利用率低因为CPU大部分时间都在等待和查询后者的CPU利用率高因为CPU可以在设备工作期间去做其他事情。但程序中断方式也有开销每次中断都要保存现场、恢复现场如果设备频繁中断CPU可能大部分时间都在做上下文切换。所以程序中断方式适合设备工作频率不高的场景比如键盘、鼠标。对于高速设备如磁盘通常用DMA方式。5.2 与DMA方式的对比DMA方式的核心是数据传送不经过CPU由DMA控制器直接控制内存和I/O设备之间的数据传送。CPU只在传送开始前和结束后参与传送过程中完全不干预。所以DMA方式的CPU开销比程序中断方式小得多。但DMA方式也有缺点DMA控制器需要占用总线可能会和CPU争抢内存访问权。而且DMA方式只能传送数据不能处理复杂的控制逻辑。程序中断方式虽然开销大但灵活性强可以处理各种复杂情况。考试中经常考三者的对比我整理了一个表格方便记忆对比维度程序查询方式程序中断方式DMA方式CPU参与程度全程参与传送前后参与仅传送前后参与数据传送路径经过CPU经过CPU不经过CPUCPU利用率低较高高响应速度慢较快快适用场景简单低速设备中低速设备高速设备中断次数无每次传送一次每批传送一次5.3 程序中断方式的适用场景程序中断方式最适合那些工作频率不高、但需要CPU及时响应的设备。比如键盘用户按键的时间间隔是不确定的CPU不可能一直轮询用中断方式最合适。再比如网络接口数据包的到达时间不确定用中断方式可以让CPU在没数据包的时候去做其他事情。但如果是高速设备比如固态硬盘每秒可能产生几十万次中断CPU根本来不及处理。这时候就需要DMA方式让DMA控制器批量传送数据减少中断次数。6. 常见问题与排查技巧实录6.1 中断响应条件判断总是出错这是最常见的失分点。题目给出多个设备的中断请求状态、屏蔽字、CPU的中断允许触发器状态问CPU会响应哪个中断。很多同学只看中断请求触发器忽略了屏蔽字和EINT。我的排查方法是按顺序检查四个条件第一EINT是否为1第二设备的中断请求触发器是否为1第三设备的屏蔽触发器是否为0第四该设备优先级是否高于当前正在服务的中断。四个条件全部满足才能响应。任何一个不满足该设备的中断请求就不会被响应。6.2 中断隐指令和中断服务程序的操作混淆中断隐指令是硬件自动完成的包括关中断、保存断点、引出中断服务程序。中断服务程序是软件完成的包括保护现场、开中断、设备服务、关中断、恢复现场、开中断、中断返回。考试中经常把这两者的操作混在一起出选项。我的记忆口诀是隐指令做三件事——关、存、引服务程序做七件事——保、开、服、关、恢、开、返。虽然口诀有点土但考场上很管用。6.3 中断屏蔽字设置错误设置屏蔽字时最容易犯的错误是把优先级顺序搞反。记住一个原则屏蔽字中优先级比当前设备高的位设为0允许打断优先级比当前设备低的位和当前设备自己的位设为1禁止打断。还有一个细节屏蔽自己的位一定要设为1否则同一设备会反复中断导致死循环。这个细节在考试中经常作为陷阱出现。6.4 中断嵌套顺序画错画中断嵌套顺序时关键是记住“后进先出”。高优先级中断打断低优先级中断后先执行高优先级的服务程序执行完再回到低优先级继续执行。如果有多层嵌套就按照栈的顺序依次返回。我建议做题时画一个时间轴横轴是时间纵轴是中断层次。每进入一层中断就往上画一层每退出一层就往下画一层。这样不容易出错。6.5 中断向量和中断向量地址混淆中断向量是中断服务程序的入口地址中断向量地址是存放这个入口地址的内存单元的地址。题目问“中断向量”时回答入口地址问“中断向量地址”时回答表项地址。这个区别在选择题中经常出现而且选项往往很接近。我的方法是看到“向量”两个字先想它是“内容”还是“位置”。向量本身是内容向量地址是位置。内容放在位置里。7. 从408真题看中断系统的考法7.1 选择题的常见套路408选择题中中断系统相关的题目通常考以下几个点中断响应条件的判断、中断隐指令的操作、中断屏蔽字的设置、中断嵌套的顺序、中断向量和中断向量地址的区别。这些点我在前面都详细拆解过了。有一个套路值得注意题目会给出一个场景比如“CPU正在执行某设备的中断服务程序此时另一设备发出中断请求”然后问CPU会不会响应。这种题的关键是判断优先级和屏蔽字。如果新设备优先级高于当前设备且未被屏蔽就会响应否则不会。7.2 综合题的考法综合题中中断系统通常和I/O控制方式结合在一起考。比如给出一个I/O系统要求计算在程序中断方式下CPU用于I/O的时间占比或者比较不同控制方式下的CPU效率。这类题的关键是搞清楚每种控制方式下CPU的参与时间。程序查询方式下CPU全程参与程序中断方式下CPU只在中断响应和服务时参与DMA方式下CPU只在传送前后参与。把每种方式的时间算清楚再对比就能得出结论。7.3 24年45题的详细拆解24年那道45题考的是程序中断方式下CPU执行时间与I/O时间的比例关系。题目给出了设备传送一个数据的时间、CPU执行一次中断服务程序的时间、以及CPU的主频要求计算CPU用于I/O的时间占比。解题的关键是先算出每次中断的开销时间再算出设备两次中断之间的间隔时间然后用开销时间除以总时间得到占比。这道题的难点在于中断服务程序中包含了保护现场和恢复现场的时间很多同学漏算了这部分。我当时的做法是把中断服务程序的时间拆成固定开销保护现场、恢复现场、中断返回和可变开销实际数据传送然后分别计算。这样不容易漏项。8. 复习中断系统的实操建议8.1 画图比背书有效中断系统的知识点很碎光靠背书很容易记混。我的建议是画三张图第一张是中断系统的硬件结构图标出中断请求触发器、屏蔽触发器、判优电路、中断向量表的位置第二张是中断处理的流程图从设备发出请求到CPU返回原程序每个步骤标清楚第三张是中断嵌套的时序图用时间轴表示多层中断的进入和退出。这三张图画熟之后大部分题目你都能在脑子里快速定位到对应的知识点。8.2 做题时先判断题型中断系统的题目大致分三类概念辨析题、条件判断题、计算题。概念辨析题考的是你对基本概念的理解比如中断隐指令和中断服务程序的区别条件判断题考的是中断响应条件的判断计算题考的是中断开销的计算。拿到题目后先判断属于哪一类然后调用对应的解题方法。概念辨析题靠记忆条件判断题靠逻辑计算题靠公式。分类之后解题效率会高很多。8.3 整理自己的错题本中断系统的题目陷阱很多而且很多陷阱是反复出现的。我建议专门整理一个错题本把每次做错的题目和错误原因记下来。比如“忘记判断EINT”“屏蔽字设反了”“中断向量和向量地址搞混了”这些都是高频错误。整理错题本的时候不要只抄题目和答案要写清楚自己当时是怎么想的、为什么错了、正确的思路是什么。这样复习的时候才能针对性纠正。8.4 结合实际系统理解如果有条件可以结合实际的系统来理解中断。比如在Linux系统下查看/proc/interrupts文件可以看到每个中断号对应的设备、中断次数等信息。虽然408考试不考Linux但实际观察中断的工作过程能帮助你更直观地理解中断系统。我在学习这一块的时候曾经用一块简单的开发板做过实验配置一个定时器中断在中断服务程序里翻转一个LED灯。通过调整定时器的周期和中断服务程序的内容我直观地看到了中断频率对CPU利用率的影响。这个实验让我对中断开销有了切身的体会比看书印象深刻得多。8.5 注意教材之间的差异不同教材对中断系统的描述有一些差异。比如唐朔飞老师的教材和白中英老师的教材在中断向量表的地址计算上可能有所不同。考试时以目标院校指定的教材为准不要混用。如果目标院校没有指定教材那就以王道或者天勤的辅导书为准。这些辅导书通常会把不同教材的差异点标注出来方便你对照复习。9. 中断系统的扩展知识9.1 多重中断与中断嵌套的区别多重中断和中断嵌套经常被混用但严格来说有区别。多重中断是指CPU在处理一个中断的过程中又响应了另一个中断中断嵌套是指多重中断形成了层次结构高优先级中断的服务程序嵌套在低优先级中断的服务程序内部。简单说多重中断强调“又响应了一个”中断嵌套强调“形成了层次”。考试中如果问“是否支持多重中断”回答“是”或“否”如果问“嵌套了几层”回答具体的层数。9.2 中断与异常的对比中断通常指来自CPU外部的异步事件比如I/O设备请求异常通常指来自CPU内部的同步事件比如除零错误、缺页。两者在处理方法上有相似之处都会保存断点、跳转到处理程序但触发源和处理时机不同。408考试中中断和异常的对比也是一个考点。记住中断是外部的、异步的异常是内部的、同步的。中断可以在指令执行完毕后响应异常通常在指令执行过程中检测到。9.3 中断在实时系统中的应用实时系统对中断响应时间有严格要求。比如工业控制系统如果传感器发出中断请求后CPU不能及时响应可能导致生产事故。所以实时系统通常会设置中断优先级、使用中断嵌套、优化中断服务程序来减少响应时间。虽然408考试不深入考实时系统但理解中断在实时系统中的应用能帮助你更好地理解中断系统的设计目标。中断系统的很多设计决策比如判优电路、屏蔽字、嵌套都是为了在实时性和开销之间找到平衡。10. 我踩过的坑和总结的经验10.1 不要死记硬背屏蔽字我一开始学中断屏蔽字的时候试图把每种情况的屏蔽字都背下来结果题目稍微变一下就不会了。后来我总结了一个规律屏蔽字中优先级比当前设备高的位设为0其余位设为1。这个规律适用于所有情况不需要死记硬背。但要注意一个例外如果题目明确说“不允许嵌套”那么所有位都设为1包括优先级更高的设备。这个例外在考试中出现过要特别留意。10.2 中断隐指令的“关中断”容易被忽略中断隐指令的三个操作中关中断是最容易被忽略的。很多同学只记得保存断点和引出中断服务程序忘了关中断。关中断的目的是防止在保存断点的过程中被新的中断打断导致断点信息不完整。考试中如果问“中断隐指令完成了哪些操作”一定要把关中断写上。这个细节虽然小但经常作为得分点。10.3 中断服务程序的“开中断”时机很关键中断服务程序中开中断的时机决定了是否支持中断嵌套。如果在保护现场之前开中断那么新的中断可能会破坏现场如果在保护现场之后开中断就能保证现场的安全。所以标准的做法是先保护现场再开中断。这个顺序在考试中经常考而且容易记反。我的记忆方法是先穿好盔甲再上战场保护现场就是穿盔甲开中断就是上战场。顺序不能反。10.4 计算题要注意单位换算中断开销的计算题中时间单位经常是微秒、纳秒、毫秒混用频率单位是赫兹、兆赫兹。计算时一定要统一单位否则结果会差几个数量级。我习惯把所有时间统一换算成纳秒把所有频率统一换算成赫兹。这样计算的时候不容易出错。算完之后再根据题目要求换算回原来的单位。10.5 多画图少空想中断系统的很多概念是动态的、有时序的光靠脑子想很容易乱。我强烈建议多画图把中断请求、响应、服务、返回的整个过程画出来把每个时刻CPU在做什么、设备在做什么标清楚。画一遍比看十遍书都管用。我当年复习的时候把中断系统的流程图前前后后画了十几遍到最后不用看书就能默画出来。这个过程虽然花时间但效果非常好考试时遇到中断相关的题目脑子里自动就能浮现出那张图。10.6 注意区分不同教材的术语不同教材对同一个概念可能用不同的术语。比如“中断隐指令”在有些教材里叫“中断响应周期”“中断向量表”在有些教材里叫“中断入口地址表”。复习时要以目标院校的指定教材为准遇到不熟悉的术语先查清楚对应关系。如果目标院校没有指定教材那就以王道辅导书为准。王道辅导书对术语的处理比较规范而且会标注不同教材的差异。10.7 做题时先看问题再看题干中断系统的题目题干通常很长信息量很大。如果先看题干再看问题很容易被无关信息干扰。我的做法是先看问题明确题目问的是什么然后带着问题去题干里找相关信息。这样效率高而且不容易漏掉关键条件。比如题目问“CPU会响应哪个中断”我就带着这个问题去题干里找EINT状态、中断请求状态、屏蔽字、优先级信息。找到这些信息后按顺序判断就能得出结论。10.8 定期回顾防止遗忘中断系统的知识点很多而且容易忘。我建议每隔一周就回顾一次把之前画过的图重新画一遍把错题本重新看一遍。回顾的时候不要只看要动手写、动手画这样才能真正记住。我当年复习的时候把中断系统的知识点做成了闪卡正面写问题背面写答案。每天花十分钟过一遍闪卡效果很好。闪卡的好处是可以利用碎片时间而且强迫你主动回忆比被动看书效果好得多。10.9 不要忽视基础概念很多同学复习中断系统的时候直接跳到中断嵌套、屏蔽字这些复杂内容忽略了基础概念。结果做题时发现复杂题目做不出来往往是因为基础概念不扎实。我的建议是先把基础概念搞清楚什么是中断、什么是中断源、什么是中断请求、什么是中断响应、什么是中断服务、什么是中断返回。这些概念看起来简单但真正理解透不容易。基础打牢了后面的复杂内容才能学得顺。10.10 结合实际场景理解抽象概念中断系统的很多概念比较抽象比如中断隐指令、中断向量表。如果单纯死记硬背很容易忘。我的方法是结合实际场景来理解。比如中断隐指令你可以想象成你正在看书突然电话响了。你下意识地做了三件事把书签夹在书里保存断点、把手机调成静音关中断、走到电话旁边接听引出中断服务程序。这三件事你不需要思考就做了就像CPU的硬件自动完成中断隐指令一样。再比如中断向量表你可以想象成一本电话簿。每个联系人有名字中断类型号和电话号码中断服务程序入口地址。你要打电话给某人先查电话簿找到号码然后拨号。CPU响应中断时也是先查中断向量表找到入口地址然后跳转。这种结合实际场景的理解方式能让抽象概念变得具体记忆也更牢固。
返回列表