Многоядерность процессора с точки зрения системы

Тема в разделе "WASM.ZEN", создана пользователем Ustus, 6 сен 2006.

  1. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Собственно как это реализуется на низком уровне? В мой однопоточный моск это не помещается :dntknw:

    Уточняю вопрос: скажем, есть у нас система. Система запускает, скажем, две задачи. Как сделать так, чтобы они попали на разные ядра/процессоры. Умом чую, что без APIC'а здесь не обошлось, но ума явно не хватает :dntknw:
     
  2. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Читай Рихтера. Там есть привязка потоков к процессорам. Или смотри SetProcessAffinityMask
     
  3. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Как это сделать в Win - другой вопрос... Меня интересует, как это реализовано... Например что-то типа простейшего примера a la Зубков - из-под DOS'а установить PM, запустить две задачи на разных процах/ядрах, выйти в RM (ну, это необязательно :) )
     
  4. was_log_a

    was_log_a New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    97
    Читай мануалы Intel-а , 3-й том, а еще Intel MultiProcessor Specification. Вкратце дело обстоит так: операционка грузится одним процессором, остальные в это время находятся в halt-состоянии. Потом этот процессор посылает остальным STARTUP или INIT прерывания. В первом случае начальный адрес (точнее,его часть) указывается в прерывании. Во втором в CMOS память по адресу 0Fh пишется 0Ah и адрес инициализационного кода в 40:67h (типа это горячая перезагрузка) и процессор получает сигнал INIT.И так каждый процессор конфигурируется, переходит в РМ. А потом уже процессоры посылают друг другу межпроцессорные прерывания. Планировщик может работать на одном процессоре,и решив, что задачу нужно запустить на другом процессоре, посылает тому прерывание. А обработчик прерывания запускает задачу.
     
  5. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    APIC изучи + примеры инициализации BSP и AP в SMP-системах в интеловских мануалах -- озарение не заставит себя долго ждать. ;)
     
  6. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    was_log_a
    _BC_
    Буду рыть и курить...
    Спасибо!