2

我正在编写自己的保护模式操作系统,需要知道如何修改中断表,以便将某些(打印字符串等)重定向到命令提示符应用程序或其他应用程序。如何修改表?

4

1 回答 1

2

首先,使用中断进行系统调用实际上不再是实际实现它们的“好”方式。如果您的目标是 x64,那么您绝对应该研究SYSCALLand SYSRET,它可以非常方便地(从用户的角度)调用内核代码,前提是您愿意处理使用这两个所需的一些设置例程。如果这不是一个选项,请考虑将一些内核代码映射到进程的虚拟内存空间。谷歌linux-gate.so.1阅读有关该示例实现的信息。

但是,如果您仍想通过中断实现系统调用,请继续阅读。当然,您可能需要以任何一种方式修改中断表,以便与硬件进行实际交互。

在 x86 的保护模式下,中断被放置在 IDT 中,它是中断描述符表的缩写。该表可以包含任务门描述符、中断门描述符或陷阱门描述符。该表的索引方式与实模式中断向量表类似——例如,表的n第一个条目包含将用于服务中断的描述符n。中断和陷阱门实际上只是指向带有一些额外数据的中断例程代码的指针,而任务门包含一个任务状态段选择器,它是应该处理该中断的任务的选择器。在 64 位模式下,由于硬件任务处理的弃用,仅支持中断/陷阱门。

我真的不明白简单地改写英特尔手册的意义,它非常清楚地解释了这些问题,所以我建议你读一读(尽管你现在应该有这些手册)。该文档的第 6 章描述了中断处理。

于 2012-05-01T23:42:54.983 回答