Цитата:
Строго говоря, с точки зрения здравого смысла TSS не нужна до тех пор, пока программа пользуется только нулевым кольцом. Но я отнюдь не уверен, что всё пойдёт гладко при возникновении прерываний, даже если и прерываемая программа, и обработчик работают в нулевом кольце, а значит, аппаратное переключение стеков не выполняется: боюсь, что процессор всё равно будет по крайней мере проверять наличие TSS (правильное заполнение TR и наличие самой TSS в GDT), а при её отсутствии генерить GP. Так что делайте себе единственную TSS, заполните там необходимые поля, загрузите её адрес в TR и работайте дальше.
Нормально работает. Если не ставить TSS и не переходить в ring3, то исключений не возникает. При этом указатель стека при прерывании в стек не пихается. Но стоит загрузить TR указатель стека начинает сохранятся и при прерывании на ring0 и при прерывании на ring3. То есть пока не загружен TR и не требуется разделения приложений и ядра с TSS заморачиваться особого смысла нет.