我的操作系统类有一个家庭作业,我需要为模拟操作系统编写一个中断表。从以前的任务中我已经设置了适当的驱动程序:
我的理解是我应该有一组中断类型,沿着interrupt_table[x]
,其中x
= 0表示陷阱,x
= 1表示时钟中断,等interrupt_table
应该包含指向每种类型中断的相应处理程序的指针,然后应该调用适当的驱动程序?我理解正确吗?有人能指出我正确的方向来创建这些处理程序吗?
感谢您的帮助。
答案 0 :(得分:2)
有关中断处理程序的大多数细节因操作系统而异。唯一接近通用的是你通常希望在中断处理程序本身中尽可能少地完成。通常,您只需确认中断,记录足够的输入,以便在您准备好时能够处理它并返回。其他一切都是分开完成的。
答案 1 :(得分:1)
你的理解听起来不错。
这个模拟操作系统的仿真程度如何?如果它完全在你教授自己的设计的“机器”上运行,那么无疑她给出了一些关于提供什么中断的规范,如何探测可能存在的中断,以及什么类型的任务中断处理人员应该这样做。
如果是用于成熟的x86计算机或类似的东西,也许Linux arch/x86/pci/irq.c可以为您提供提示。
答案 2 :(得分:0)
接收中断后的操作取决于特定的中断。拇指规则是找出特定中断需要注意的关键因素,然后“只”那个(仅此而已),并尽快从处理程序中走出来。此外,中断处理程序只是驱动程序的一小部分(这就是你应该设计的方式)。例如,如果您在某个串行端口上收到传入字节的中断,那么您只需读取寄存器中的字节并将其放在一些“易变”变量上,结束并退出处理程序。其余的(比如,你将对串口上的输入字节做什么)可以在驱动程序代码中处理。
拇指规则依然存在:“仅此而已”