Ты куришь мет? Каждая ос настраивает свою таблицу Interrupt Descriptor Table, процессор видит ее и вызывает обработчики
Гипервизор прозрачно переключает выполнение между виртуалками, сначала загружается контекст одной системы и выполняются действия, далее контекст переключается и выполняется контекст другой ос