Поддержка многопроцесорностьи со стороный ОС

Тема в разделе "WASM.PROJECTS", создана пользователем dbss, 27 мар 2005.

  1. dbss

    dbss New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2005
    Сообщения:
    13
    Поддержка многопроцессорности со стороны ОС
     
  2. dbss

    dbss New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2005
    Сообщения:
    13
    Уважаемые, хотелось бы побольше узнать как вообще реализуется многопроцессорная обработка процессов в ОС. Кто интересовался этим вопросом, присоединяйтесь к обсуждению.



    Проблема собсна, встала из-за того чтобы унифицировать ядро некой ОС для работы с количеством вычислительных юнитов от 1 до n ...Нужно так сказать заложить абстракцию изначально, а не лепить примочку позже...
     
  3. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
  4. dbss

    dbss New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2005
    Сообщения:
    13
    Спасибо captain cobalt, правда с английским у меня туговато, но я думаю что разберусь... А свои мысли у когото на счет этой проблемы есть?
     
  5. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229


    Очевидно что многозадачность реализуется с помощью некоего диспетчера. Даже ничего об этом незная можно заключить что:

    1. Они могут быть построенны совершенно по-разному (имеется ввиду алгаритм работы по распределению времени\ресурсов)

    2. Об этом можно прочитать в книжках про суперкомпьютеры. В будущем займусь сам этой темой.
     
  6. dbss

    dbss New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2005
    Сообщения:
    13
    Да действительно, диспетчер - планировщик распределяет время процессора между задачами. Я вот только не знаю одного, как вообще производится переключение процессоров, т.е. как вообще управлять несколькими процессорами. Как они делят общее пространство ОЗУ? Как к ним обращаться из ОС? Видимо через порты некого контроллера?
     
  7. Dark_Master

    Dark_Master Member

    Публикаций:
    0
    Регистрация:
    19 май 2004
    Сообщения:
    32
    Адрес:
    Усть-За###юйск
    Обращение к другому процессору происходит через APIC. Грубо говоря, когда один процессор хочет что-то "повесить" на другой то он посылает ему по шине APIC прерывание. В процессе загрузки определяется BSP (Boot strap processor) на котором система грузится, второй процессор простаивает пока к нему не придет прерывание от первого процессора на возобновление работы.

    Немного инфы по теме есть в 3-м томе интеловского мануала. Там даже псевдо-код есть как определить количество процов в системе.

    То есть когда ОС надо что-то передать на выполнение второму процессору, она посылает ему прерывание, он это выполняет, после чего крутится в каком-либо цикле до следующего прерывания.
     
  8. Dark_Master

    Dark_Master Member

    Публикаций:
    0
    Регистрация:
    19 май 2004
    Сообщения:
    32
    Адрес:
    Усть-За###юйск
    Вся работа с APIC происходит в основном через MSR-регистры, форматы мессаг также надо искать в мануалах интел.
     
  9. dbss

    dbss New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2005
    Сообщения:
    13
    Dark_Master Сенкс, теперь хоть известно в каком направлении копать :)
     
  10. NullSessi0n

    NullSessi0n New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2006
    Сообщения:
    322
    Руководства от Intel'а + статьи от Broken Sword'а - пожалуй, будет достаточно. + поиск по форуму, где-то это всплывало.