У меня немного странный вопрос. Зачем нужен механизм задач? Почему нельзя обойтись простым набором сегментов без TSS? Например почему ОС зугружая образ приложения в память должна создавать для него TSS desc, а не Seg desc, или наоборот?
Механизм задач нужен для обеспечения многозадачности ) Через него реализуются многие вещи вроде карты разрешения ввода-вывода, которые очень трудно реализовать "вручную". А еще, без механизма TSS нельзя сделать нормальную эмуляцию 8086, флаг VIP, например, должен управляться ОС через сегмент TSS, по рекомендациям интел. Никто не говорит что нельзя переключать задачи по другому, это как сопроцессор - можно и эмулировать, но без эмуляции проще,быстрее, удобнее и надежнее.
Хм... Минимум спорное утверждение. И Linux, и Windows - обе не имеют TSS и обе переключают вручную. Поиск по форуму - слово "SwapContext" - даже полный дизассемблированный листинг приводил с комментариями и я, и Four-F.
Dark_Master Хм, насколько я знаю, винда не использует TSS для переключения задач... И это, как ни странно, сделано именно для того, чтобы было быстрее. З.Ы.: Не успел ответить первым...
volodya Почему не имеют? В винде же, вроде, есть одна TSS (она, правда, общая для всех задач, и не используеися для их переключения)... К примеру, в этой TSS находится карта разрешения ввода-вывода. З.Ы.: Ты все это, конечно, знаешь...
Ну, если быть более точным, в винде есть от двух до трех TSS (сам точно не знаю ). Но я лишь хотел подчеркнуть, что для переключения задач TSS не используется
2All то есть в принципе ОС может и не использовать Hardware Task Management, этот довесок только для ускорения переключения контекста и является полной альтернативой для softwre task management, я правильно понял? Или может есть какие-нибудь новые возможности или необходимость использования механизма? Например собрался я писать ОС, и как мне определить когда использовать TSS desc, а когда Code, Data desc. Т.е. какова идеология у создателей IA32? Вот такой совершенно дурацкий вопрос (главное совершенный ).
Небольшое заблуждение. TSS явно НЕ медленнее, чем программное переключение. Просто программно переключая контекст, разработчики имеют больше гибкости. Вот и все дела.
volodya =) Ух ты, я об этом первый раз слышу. Расскажи, плиз, об этом подробнее (даже то, о чем знаешь не точно). Мне интересно стало Для чего их нужно так много, т.е. для чего используются дополнительные TSS?
Какой интересный топик volodya И об этом тоже, плиз, расскажи подробнее. В чем заключается большая гибкость?
Расскажи, плиз, об этом подробнее Дык по форуму поищи! Я же говорил - swapcontext - там я, Four-F и BlackMirror обсуждали...
я когда-то тестировал скорость переключения через TSS и без. интересен результат: на некоторых процах время практически идентично, на некоторых быстрее TSS, а на других - ручное . Зависело от модели.
да, и к вопросу "зачем нужен TSS" - на самом деле x86 смог бы прекрасно работать как минимум без половины поддерживаемых структур и механизмов (я не говорю уже о наборах команд), не утеряв при этом производительности. Ну "половины" я может и загнал, но раз уж выкидывать TSS, то за ним же можно смело выбрасывать и LDT
Вот: http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=4916 http://www.wasm.ru/forum/index.php?action=vthread&forum=4&topic=4511
volodya Да, насчет того, что я первый раз слышу о наличии нескольких TSS - это я сглючил. Кому интересно, есть интересный топик по этой теме: Количество TSS . Этот вопрос снят. Понятно. Это заблуждение возникло после прочтения одного из твоих постов в указанном выше топике. Там была следующая фраза: "For performance reasons, Windows NT does not use this architectural feature and maintains one base TSS that all processes share.". Наверно, я ее неверно понял...
Меня немного неправильно поняли, я не говорил что нормальное переключение задач нельзя сделать без TSS. В моем посте говорится что с помощью TSS проще реализовать разрешение ввода-вывода и т.д. Современные ОС именно для этого и используют TSS
Слышал еще одну теорию что программное переключение задач реазизовано в том числе и для упрощения портирования системы (еще первых NT) на другие процессорные архитектуры... IMHO вполне может быть
IMHO так и есть. Просто в том же самом w2k в чистом виде не используется практически ничего из того, что характерно только для x86 - механизм прерываний сделан по-своему - IRQL и т.д. TSS тоже не используется так, как это рекомендует intel. Уровней привилегий только 2, а не 4, потому что процы DEC которые поддерживаются w2k имеют только 2 уровня привилегий.