Запуск нити на другом ядре процессора

Тема в разделе "WASM.NT.KERNEL", создана пользователем Sergyi, 23 май 2008.

  1. Sergyi

    Sergyi New Member

    Публикаций:
    0
    Регистрация:
    13 фев 2008
    Сообщения:
    4
    Сейчас большинство процессоров многоядерные. Чтобы ресурсы зазря в моей OS не пропадали хотелось бы их использовать.

    Кто уже запускал другие ядра процессора? Какой инструкцией это сделать?
    Или можно любые ссылки на инфу по запуску ядер? В поиске ничего не найти.
     
  2. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    KeInitializeDpc
    KeSetTargetProcessorDpc
    KeInsertQueueDpc

    но запущеная процедура будет выполнятся в DISPATCH_LEVEL, наверное решением будет вызов внутри процедуры PsCreateSystemThread
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Если ты в винде, то она сама оптимально распланирует потоки по логическим процессорам, тебе ничего для этого делать не надо.
    Если не в винде и пишешь свою ос - читай про IPI
    Если ты в винде и хочешь исполнить код на КОНКРЕТНОМ процессоре, тогда, как уже сказали, KeSetTargetProcessorDpc
     
  4. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    ну и SetAffinityMask для потока пока еще не отменили...
     
  5. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну да ,я про одноразовый запуск
     
  6. Zufyxe

    Zufyxe New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2004
    Сообщения:
    137
    Адрес:
    Russia
    Если в ядре, то
    KeSetAffinityThread
    Если нужно кратковременно выполнить нить на процессоре(ах), а потом вернуть аффинити по-умолчанию, то
    KeSetSystemAffinityThread
    KeRevertToUserAffinityThread

    Пользовать DPC для смены аффинити нити - бред, имхо.