Когда во время программного прерывания x86 происходит переключение контекста?

Я спрашиваю об этом, потому что я пытаюсь реализовать прерывания в моем игрушечном ядре. Итак, я знаю, что когда происходит прерывание, процессор помещает в стек различные биты информации. Тем не менее, везде, где я ищу в Интернете, отображается разная информация в разном порядке. Я также знаю, что если прерывание произошло в пользовательском режиме (кольцо 3), ЦП должен переключиться в режим ядра (кольцо 0), прежде чем он сможет выполнить ISR. Я думаю, что это как-то связано сTSS а такжеss а такжеespОднако я не уверен. Я прочитал различные объяснения по всему Интернету и пока не нашел в них ни одного единообразия.

Такмой вопрос в чемточный порядок (x86) ЦП помещает данные в стек во время прерывания и когда это делает, и в какой момент времени он переключает контекст черезTSS и как это влияет на данные, которые помещаются в стек, если вообще?

Что я узнал из исследований (поправьте меня, если не прав): Я уверен, что процессор толкаетeflags, cs а такжеeip на стек, а такжеerror code при необходимости во время прерывания. Тем не менее, это все, что толкнуло? Я читал в другом месте, чтоss а такжеesp подталкивают, но я не знаю, происходит ли это все время, илиЗачем это толкнуло.

Кроме того, я считаю, что процессор будет выглядеть вTSS для кольца0ss а такжеesp а такжев какой-то момент загрузить их, но я не уверен, когда. Возможно, это происходит сразу после прерывания? Кроме того, как этоcs а такжеds во время всего этого? Являетсяcs загружается процессором из записи вIDT? Как насчетds? Должен ли я загрузить это вручную?

Извините, если это неправильное место, чтобы спросить, я не уверен, где еще я должен.

Ответы на вопрос(1)

Ваш ответ на вопрос