X86 中断向量表位于哪里?

X86 中断向量表位于哪里?,x86,interrupt,dos,bios,X86,Interrupt,Dos,Bios,中断向量表是ROM还是RAM?如果它在RAM中,从哪里加载?此外,该表是否取决于操作系统?例如,在MS-DOS中,“int0x80”用于播放音乐和其他内容,但在Linux中它是一个系统调用。那么,在MS-DOS中,中断0x80是由操作系统还是ROM处理的?如果它在ROM中,Linux会覆盖表项吗 在PC机上,中断向量表(IVT)始终位于RAM中。默认情况下,它位于内存开始处的0000:0000,但可以使用LIDT指令移动它。MS-DOS不会移动IVT,但Linux可能会。不管怎样,它都会在RAM

中断向量表是ROM还是RAM?如果它在RAM中,从哪里加载?此外,该表是否取决于操作系统?例如,在MS-DOS中,“int0x80”用于播放音乐和其他内容,但在Linux中它是一个系统调用。那么,在MS-DOS中,中断0x80是由操作系统还是ROM处理的?如果它在ROM中,Linux会覆盖表项吗

在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相同地址的只读,因为BIOS代码以这种方式运行得更快)

在受保护模式的操作系统(如Linux)下,中断只由操作系统处理