ROM或RAM中的中断向量表?如果它在RAM中,从何处加载?此外,该表是否依赖于操作系统?例如,在MS-DOS" int 0x80"用于播放音乐和内容,但在Linux中,它是一个系统调用。那么,在MS-DOS中,操作系统或ROM是否处理中断0x80?如果它在ROM中,Linux是否会覆盖表项?
答案 0 :(得分:5)
在PC上,中断向量表(IVT)始终位于RAM中。默认情况下,它位于内存开始时的0000:0000,但可以使用LIDT指令移动它。 MS-DOS不会移动IVT,但Linux可能会。无论哪种方式,它都会在某个地方的RAM中。
中断0x80不是标准的MS-DOS或BIOS中断,因此通常在MS-DOS下未处理。如果它全部使用它,它已被一些不属于操作系统的第三方代码(例如TSR或驱动程序)处理。其他中断可能由MS-DOS(例如0x21)或BIOS(例如0x10)处理。在前一种情况下,处理中断的代码将在RAM中,而在后一种情况下,代码将在ROM中。 (尽管BIOS ROM可能已被复制到位于ROM的同一地址的只读shadow RAM,因为BIOS代码以这种方式运行得更快。)
在Linux等受保护模式操作系统下,中断仅由操作系统处理。