Разделение програмы в многоядерных процесорах

Тема в разделе "WASM.OS.DEVEL", создана пользователем DimaNS, 3 фев 2012.

  1. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    TermoSINteZ
    Да не ужеле. Изучать ctxswap.asm
    Межпроцессорные прерывания к шедулеру никоим боком не относятся. Точнее шедулер нт вызывается из любых ISR, но ипи не заканчиваются на сколько помню на вызове HalEndSystemInterrupt(), которая дёргает шедулер(хотя не точно, мб и юзается), но это не важно. Сей механизм вызывается очень редко, ибо приводит остановке всех процессоров и последовательному вызову колбека на каждом из них. Всё же аверы не шараят, не удивительно что ваши продукты это решито, стыд да позор.
     
  2. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    Incidence
    Лучше изобретать велосипед заново.. так как я помимо написания БД хочу набраться опыта программирования на ASMe и понять как работает железо...
     
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.546
    Адрес:
    Russia
    totimoud
    1) я не авер.
    2) посмотрите раздел , он не связан с НТ.
    3) посмотрите код инициализации загрузчика линукса.
    Больше мне не о чем с вами говорить .
     
  4. Incidence

    Incidence New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    236
    Адрес:
    Kiev, UA
    Городить собственную реализацию шедулера имеет смысл только если ты пишешь свою ОС, или свою ВМ или что там ещё. В остальных случаях это будет малопродуктивная потеря большого количества времени.
     
  5. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    Incidence
    Это будет недетект. А время - задержки от кривости рук автора зависят. Технология более чем актуальна.
     
  6. Incidence

    Incidence New Member

    Публикаций:
    0
    Регистрация:
    26 дек 2011
    Сообщения:
    236
    Адрес:
    Kiev, UA
    Недетект чего? БД? :)

    Он будет на голом железе работать или таки под ОС?
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Многопроцесорнось, это не уровень "инструкций в ASMe"
     
  8. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    для получения базового адреса local APIC используется
    Код (Text):
    1. mov    ecx, 0x1B
    2. rdmsr
    3. test    eax, 1 SHL 11
    4. jnz    @F
    5. or    eax, 1 SHL 11
    6. wrmsr
    7. @@:
    8. and eax,0xFFFFF000
    в eax получается базовый адрес local APIC BSP процессора.

    как мне получить базовый адрес local APIC AP процессоров??
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    DimaNS
    Изучайте спецификацию ACPI, там есть таблица с адресами APIC.

    MultiProcessor Specification, это руководство для создателей биосов.
    А вот для разработчиков ОС стоит больше ориентироваться на ACPI.

    А вообще поищи толи на wasm.ru толи на osde.ru толи на board.sysbin.com
    Мы в обсуждение разобрали весь процесс инициализации мультипроцессорной системы.

    Так по документам пробежался, базовый адрес local APIC AP может быть одинаковым у всех, а может и нет.
    Узнать можно через ACPI или второй способ на каждом ядре выполняешь код чтения базового адреса через rdmsr.
     
  10. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    спасибо! сейчас поищу.

    как на каждом ядре выполнить rdmsr?
     
  11. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    DimaNS
    Вопрос:
    Ответ:
    Надо послать всем апикам широковещательное прерывание. А там уже дело за малым чтобы выполнить одинаковый код.
     
  12. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    про local APIC читал http://ru.osdev.wikia.com/wiki/Local_APIC

    MultiProcessor Specification читал, только у меня с английским туго.. и я так толком ничего не понял...

    приведите пожалуйста небольшой пример как это реализуется?..
     
  13. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
  14. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    спасибо! только я от туда не могу скачать исходники:dntknw:(
    если кто-то может скачать оттуда исхидники то залейте их в другое место и дайте ссылку...
     
  15. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    люди в кого-то есть исходники к посту http://www.xakep.ru/post/44508/.???
     
  16. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    люди помогите пожалуйста!!!
    напишите небольшой примерчик реализации...
    или дайте ссылку на готовый ASM код...
     
  17. DimaNS

    DimaNS New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2012
    Сообщения:
    42
    где можно на русском почитать про регистр ICR?
     
  18. totimoud

    totimoud New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2012
    Сообщения:
    78
    Апи уже не рулят. Кодим с нуля апик. Профит будет, но зачем ??
     
  19. abcd008

    abcd008 New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2009
    Сообщения:
    616
    Pavia
    привет. давно разбирался и осталось пару вопросов. как узнать наличие IMCR,если нет MP таблиц, а только acpi.
    на ноуте их нет. но регистр есть. проверил тупо зприсью в регистр и PIC перестал отсылать прерывания. Что делать тупо забить на него и блокировать линию 0 апика и тупо отключить pic. или писать вв imcr без проверки?

    и про инициализацию не понял,зачемдве задержки, если все работает с первого раза.
    BSP sends AP a STARTUP IPI
    BSP DELAYs (200μSEC)
    BSP sends AP a STARTUP IPI
    BSP DELAYs (200μSEC)
    зачем слать два раза?
     
  20. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    DimaNS
    ICR мало чем отличается от Redirection Table из IO APIC или LVT из Local APIC.

    abcd008
    Без проверки.
    Могу ошибаться. Первый сброс из защищённого режима (если реальный то не нужен) а второй установка адреса.