Время переключения контекста

Тема в разделе "WASM.NT.KERNEL", создана пользователем Barbos, 11 июл 2008.

  1. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    Задумался...
    Вот если есть бесконечный цикл, типа
    Код (Text):
    1. for (;;) {
    2.  func1();
    3.  func2();
    4.  func3();
    5. }
    в котором последовательно вызываются проц-ры обычным call near или даже call far, то как скажется на времени цикла реализация каждой процедурки в виде нити, а в цикле вызов процедур заменить переключение задач командой call fword ptr [_TaskN_]. Как это скажется на времени цикла? качественно... относительно.. допустим, что нити ничего не делают, т.е.
    Код (Text):
    1. L:
    2.    iretd
    3.    jmp L
     
  2. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    Честно признаюсь:)
    Просто лень мерять такты. Такие функции проца в своем микроядре пока еще не задействовал. Понятно, что щас герцы не актуальны:). Но неужели никто не задумывался?
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Barbos
    Время на переключение котнекста тратиться гораздо больше. так как требуется загрузить и сохронить контекст а это не один такт.

    Но если мы имеем многоядерный процессор, то неплохобы чтобы все ядра работали над главной задачей. Причем именно работали а не простаивали в нитях с бесконечными циклами в которых ждут события.
     
  4. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    ну да, переключение задач более трудоемкий процесс, хотя бы считая по кол-ву инфы (сохр/загр). Ну я тогда буду мерять такты - отпишусь.
     
  5. Atlantic

    Atlantic Member

    Публикаций:
    0
    Регистрация:
    22 июн 2005
    Сообщения:
    322
    Адрес:
    Швеция
    Несколько сотен тактов, не меньше на это понадобится.
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Barbos
    Переключение процессов. Может быть как програмнымм так и аппоратным. У апоратного фигурирует цифра 400тактов. У програмного меньше так как при аппоратном переключении идет дополнительные проверки.
     
  7. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Добавлю, что если есть задумка сделать свою ось 64-разрядной, то переключать надо только ручками: там аппаратная многозадачность уже не работает.
     
  8. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    мда, жаль. Сначала сделал, а потом подумал.))