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

Discussion in 'WASM.OS.DEVEL' started by 10110111, May 28, 2007.

  1. 10110111

    10110111 New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2006
    Messages:
    319
    Location:
    Санкт-Петербург
    Цитата из Гордеева:
    Несколько вопросов по этому поводу:
    1.Насколько это так?
    2.Применяется ли аппаратный механизм в каких-нибудь известных ОСях, и если да, то в каких?
     
  2. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Joined:
    Nov 24, 2006
    Messages:
    5,582
    Насколько я знаю, в винде той же переключение потоков программное.. и tss не используется
     
  3. 10110111

    10110111 New Member

    Blog Posts:
    0
    Joined:
    Jul 13, 2006
    Messages:
    319
    Location:
    Санкт-Петербург
    Great
    Насчет винды знаю. Я спрашиваю про аппаратную поддержку - используется ли она где-нибудь?
     
  4. Mika0x65

    Mika0x65 New Member

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

    rei3er maxim

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    917
    Location:
    minsk
    так
    для потоков по сути важны регистры общего назначения и EIP
    Code (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

    Blog Posts:
    0
    Joined:
    Jun 25, 2006
    Messages:
    170
    То есть потоки никогда не пользуются плавающей арифметикой и командами MMX и иже с ними? Не слишком ли это смелое утверждение?
     
  7. rei3er

    rei3er maxim

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    917
    Location:
    minsk
    состояние FPU и прочие вещи не сохраняются/воостанавливаются при аппаратном переключении задач, так что это делается вручную независимо от способа переключения
     
  8. NoName

    NoName New Member

    Blog Posts:
    0
    Joined:
    Aug 1, 2004
    Messages:
    1,229
    программный вариант более оптимален поскольку позволяет исключить ненужные вещи что дает прирост производительности засчет уменьшения времени переключения. Переключение задач с помощью TSS мало используется поскольку аппаратно зависимо.
     
  9. rei3er

    rei3er maxim

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    917
    Location:
    minsk
    ну загнул
    работа с регистрами настолько же аппаратно зависима, что и с TSS
     
  10. NoName

    NoName New Member

    Blog Posts:
    0
    Joined:
    Aug 1, 2004
    Messages:
    1,229
    если переключение построено на tss то портировать сложнее чем если переключение сделано программно. См. например линух.
     
  11. S_Alex

    S_Alex Alex

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

    rei3er maxim

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    917
    Location:
    minsk
    с этим согласен