Цитата из Гордеева: Несколько вопросов по этому поводу: 1.Насколько это так? 2.Применяется ли аппаратный механизм в каких-нибудь известных ОСях, и если да, то в каких?
Вряд ли она будет использоваться в будущем. В EM64T аппаратное переключение уже не поддерживается, хотя регистры, и дескрипторы/структуры данных, вроде, остались. Но хотя бы один TSS по-любому нужен ОС -- в нем хранятся указатели стека для разных колец привилегий.
так для потоков по сути важны регистры общего назначения и EIP Код (Text): switch_threads: ; EAX и EDX содержат указатели на сегменты состояния потоков xchg eax, esp add esp, 32 pushad mov esp, edx popad mov esp, eax mov eax, dword [esp + 12] ret
То есть потоки никогда не пользуются плавающей арифметикой и командами MMX и иже с ними? Не слишком ли это смелое утверждение?
состояние FPU и прочие вещи не сохраняются/воостанавливаются при аппаратном переключении задач, так что это делается вручную независимо от способа переключения
программный вариант более оптимален поскольку позволяет исключить ненужные вещи что дает прирост производительности засчет уменьшения времени переключения. Переключение задач с помощью TSS мало используется поскольку аппаратно зависимо.
если переключение построено на tss то портировать сложнее чем если переключение сделано программно. См. например линух.
NoName Я тоже придерживаюсь такого же мнения. Программое перключение можно выполнить исходя из своих требований к запущенным задачам, и тебе самому лучше знать что нужно для твоей задачи, а что можно отбросить.