2

我的操作系统课有一个家庭作业,我需要为模拟操作系统编写一个中断表。从之前的任务中,我已经设置了适当的驱动程序:

我的理解是,我应该有一个中断类型数组,沿线interrupt_table[x],其中x= 0 表示陷阱,x= 1 表示时钟中断等。interrupt_table应该包含指向每种中断类型的适当处理程序的指针,这应该然后打电话给合适的司机?我是否正确理解这一点?谁能指出我创建这些处理程序的正确方向?

谢谢您的帮助。

4

3 回答 3

2

有关中断处理程序的大多数细节因操作系统而异。唯一接近通用的是,您通常希望在中断处理程序本身中尽可能少地做一些合理的事情。通常,您只需确认中断,记录足够的输入以便在您准备好时能够处理它,然后返回。其他一切都是单独完成的。

于 2011-02-28T04:36:25.027 回答
1

你的理解听起来不错。

这个模拟操作系统的模拟程度如何?如果它完全在您教授自己设计的“机器”上运行,那么毫无疑问,她已经给出了一些关于提供哪些中断、如何探测可能存在的中断以及中断处理程序应该执行什么样的任务的规范。

如果是针对成熟的 x86 计算机或类似的计算机,或许 Linux arch/x86/pci/irq.c可以为您提供提示。

于 2011-02-28T04:37:01.107 回答
0

您在收到中断时执行的操作取决于特定的中断。经验法则是找出特定中断需要注意的关键点,然后“仅”执行该操作(仅此而已)并尽快退出处理程序。此外,中断处理程序只是驱动程序的一小部分(这就是您应该设计的方式)。例如,如果您在某个串行端口上接收到一个传入字节的中断,那么您只需从 in-register 中读取该字节并将其放在某个“易失性”变量中,然后结束处理并退出处理程序。其余的(例如,您将如何处理串行端口上的传入字节)可以在驱动程序代码中处理。

经验法则仍然是:“不多也不少”

于 2011-02-28T07:30:05.490 回答