Переключение задач программно и с аппаратной поддержкой - что лучше?

Тема в разделе "WASM.OS.DEVEL", создана пользователем 10110111, 28 май 2007.

  1. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Цитата из Гордеева:
    Несколько вопросов по этому поводу:
    1.Насколько это так?
    2.Применяется ли аппаратный механизм в каких-нибудь известных ОСях, и если да, то в каких?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Насколько я знаю, в винде той же переключение потоков программное.. и tss не используется
     
  3. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Great
    Насчет винды знаю. Я спрашиваю про аппаратную поддержку - используется ли она где-нибудь?
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Вряд ли она будет использоваться в будущем. В EM64T аппаратное переключение уже не поддерживается, хотя регистры, и дескрипторы/структуры данных, вроде, остались. Но хотя бы один TSS по-любому нужен ОС -- в нем хранятся указатели стека для разных колец привилегий.
     
  5. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    так
    для потоков по сути важны регистры общего назначения и EIP
    Код (Text):
    1. switch_threads:
    2. ; EAX и EDX содержат указатели на сегменты состояния потоков
    3. xchg eax, esp
    4. add esp, 32
    5. pushad
    6. mov esp, edx
    7. popad
    8. mov esp, eax
    9. mov eax, dword [esp + 12]
    10. ret
     
  6. Ultrin Faern

    Ultrin Faern New Member

    Публикаций:
    0
    Регистрация:
    25 июн 2006
    Сообщения:
    170
    То есть потоки никогда не пользуются плавающей арифметикой и командами MMX и иже с ними? Не слишком ли это смелое утверждение?
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    состояние FPU и прочие вещи не сохраняются/воостанавливаются при аппаратном переключении задач, так что это делается вручную независимо от способа переключения
     
  8. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    программный вариант более оптимален поскольку позволяет исключить ненужные вещи что дает прирост производительности засчет уменьшения времени переключения. Переключение задач с помощью TSS мало используется поскольку аппаратно зависимо.
     
  9. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    ну загнул
    работа с регистрами настолько же аппаратно зависима, что и с TSS
     
  10. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    если переключение построено на tss то портировать сложнее чем если переключение сделано программно. См. например линух.
     
  11. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    NoName
    Я тоже придерживаюсь такого же мнения. Программое перключение можно выполнить исходя из своих требований к запущенным задачам, и тебе самому лучше знать что нужно для твоей задачи, а что можно отбросить.
     
  12. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    с этим согласен