Уважаемые, хотелось бы побольше узнать как вообще реализуется многопроцессорная обработка процессов в ОС. Кто интересовался этим вопросом, присоединяйтесь к обсуждению. Проблема собсна, встала из-за того чтобы унифицировать ядро некой ОС для работы с количеством вычислительных юнитов от 1 до n ...Нужно так сказать заложить абстракцию изначально, а не лепить примочку позже...
Muller - The Active Object System - Design and Multiprocessor Implementation (2002) http://www.cs.inf.ethz.ch/~muller/PieterMuller.pdf
Спасибо captain cobalt, правда с английским у меня туговато, но я думаю что разберусь... А свои мысли у когото на счет этой проблемы есть?
Очевидно что многозадачность реализуется с помощью некоего диспетчера. Даже ничего об этом незная можно заключить что: 1. Они могут быть построенны совершенно по-разному (имеется ввиду алгаритм работы по распределению времени\ресурсов) 2. Об этом можно прочитать в книжках про суперкомпьютеры. В будущем займусь сам этой темой.
Да действительно, диспетчер - планировщик распределяет время процессора между задачами. Я вот только не знаю одного, как вообще производится переключение процессоров, т.е. как вообще управлять несколькими процессорами. Как они делят общее пространство ОЗУ? Как к ним обращаться из ОС? Видимо через порты некого контроллера?
Обращение к другому процессору происходит через APIC. Грубо говоря, когда один процессор хочет что-то "повесить" на другой то он посылает ему по шине APIC прерывание. В процессе загрузки определяется BSP (Boot strap processor) на котором система грузится, второй процессор простаивает пока к нему не придет прерывание от первого процессора на возобновление работы. Немного инфы по теме есть в 3-м томе интеловского мануала. Там даже псевдо-код есть как определить количество процов в системе. То есть когда ОС надо что-то передать на выполнение второму процессору, она посылает ему прерывание, он это выполняет, после чего крутится в каком-либо цикле до следующего прерывания.
Вся работа с APIC происходит в основном через MSR-регистры, форматы мессаг также надо искать в мануалах интел.
Руководства от Intel'а + статьи от Broken Sword'а - пожалуй, будет достаточно. + поиск по форуму, где-то это всплывало.