Многопроцессорные системы, вопросы

Тема в разделе "WASM.OS.DEVEL", создана пользователем rpy3uH, 1 фев 2009.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Раньше был вопрос как заставить выполниться код на другом процессоре, с IPI и APIC вроде бы разобрался. Но после недолгих раздумий возник другой глупый вопрос. Допустим в системе два процессора, наша программа выполнялась на первом процессоре, перевела его в защищённый режим (или 64-битный режим), а как быть с другим процессором, ведь он то ещё в реальном режиме и у него в регистрах IDTR, GDTR, CR0 совсем другие данные?
     
  2. SII

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

    Публикаций:
    0
    Первый процессор (ведущий) должен запустить остальные процессоры, причём они должны начать свою работу с программы, переводящей их в защищённый режим. Когда все они перейдут, они каким-то образом должны об этом сообщить ведущему (например, путём установки соответствующего бита в заранее известной ячейке памяти). И только после этого система может переходить к нормальной работе.
     
  3. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    а как это сделать? в каком разделе мануала от Intel про это написано?
     
  4. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    отбой, Vol 3A: 7.5.
    Извиняюсь, не заметил, а если замечал не придавал значения.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    rpy3uH
    как уже описал SII нужно переводить каждый процессор по отдельности. Описанно это в MultiProcessor Specification.

    Хотя порывшись в исходниках биоса, был удивлен что он много чего там настраивает. Так-что все сводиться чутьли не к посылки IPI. Вообщем дальше я пока нестал разбираться.
     
  6. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    но всё равно я склоняюсь к варианту, чтобы сначала перевести все процессоры в зашищённый режим (или Long mode)
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    rpy3uH
    Это обязательно. Вопрос только в том, как правильно это сделаь.
     
  8. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    в общем, буду разбираться
     
  9. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    вроде всё понятно, осталось только кодить. но всё же есть один вопрос
    7.5.4.1 Typical BSP Initialization Sequence (интеловский мануал)
    это обязательно? насколько я понял, это обязательно
    может есть какие-нибудь исходники-примеры инициализации нескольких процессоров?
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    rpy3uH
    Этим занимается BIOS.
    Я думаю надо смотреть исходники линукса и искать правду.

    Насколько я знаю там все просто.
    Тебе просто надо подготовить код, послать SIPI или IPI на APIC нужного процессора и он начнет выполнять твой код. В этом коде нужно перевести оставшиеся процесоры в защищенный режим.
     
  11. SII

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

    Публикаций:
    0
    rpy3uH
    Нет, это полностью на совести BIOS. Можно, конечно, это и самому реализовать, но зачем?