Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ ОС (Кручинин).doc
Скачиваний:
34
Добавлен:
05.05.2019
Размер:
1.52 Mб
Скачать

8.3 Мультипроцессоры и мультипроцессорные операционные системы

Мультипроцессор с общей памятью (или просто мультипроцессор) представляет собой компьютерную систему, в которой два или более центральных процессора делят полный доступ к общей оперативной памяти. У всех мультипроцессоров каждый центральный процессор может адресоваться ко всей памяти. По характеру доступа они разделяются на два класса [10]:

  • UMA (Uniform Memory Access – однородный доступ к памяти);

  • NUMA (Non Uniform Memory Access – неоднородный доступ к памяти).

Рисунок 68 – Три варианта архитектуры мультипроцессоров с общей шиной: без кэша (а); с кэшем (б); с кэшем и собственной памятью (в)

UMA-мультипроцессоры обладают свойством считывания каждого слова данных с одинаковой скоростью. NUMA не обладают. Возможные архитектуры симметричных мультипроцессоров UMA с общей шиной представлены на рисунке 68.

Как видно из рисунка 68, а несколько центральных процессоров и несколько модулей памяти одновременно используют одну и ту же шину для общения друг с другом. Когда центральный процессор хочет прочитать слово в памяти, он сначала проверяет, свободна ли шина. Проблема данной архитектуры в том, что при большом количестве центральных процессоров (например, 32) шина будет занята, а производительность системы будет полностью ограничена пропускной способностью шины. Процессоры будут простаивать.

Решение этой проблемы состоит в том, чтобы добавить каждому центральному процессору кэш, как показано на рисунке 68, б. Данная схема частично разгружает шину. Ещё один вариант архитектуры представлен на рисунке 68, в. В этом случае имеется ещё и общая память, с которой процессор соединен по выделенной шине. Однако данную схему должен поддерживать компилятор.

Даже при оптимальном использовании кэша наличие всего одной общей шины ограничивает число UMA-мультипроцессоров. Чтобы преодолеть это ограничение требуется другая схема соединительной сети. Для этого можно использовать координатный коммутатор (Рисунок 69).

Рисунок 69 – Координатный коммутатор

На каждом пересечении линий располагается координатный переключатель. Достоинство этой схемы заключается в том, что она представляет собой неблокирующую сеть. Т.е. ни один центральный процессор не получает отказа соединения по причине занятости какого-либо переключателя. Недостаток – число переключателей растет пропорционально квадрату от числа процессоров. Поэтому используются многоступенчатые коммутаторные сети.

Для мультипроцессоров UMA с единственной общей шиной пределом является несколько десятков центральных процессоров, в то время как мультипроцессорам с координатным коммутатором или коммутирующей сетью требуется большое количество дорогого аппаратного обеспечения. Чтобы создать мультипроцессор с числом центральных процессоров, превосходящих 100, обычно жертвуют одинаковым временем доступа ко всем модулям памяти. У машины NUMA есть три ключевые характеристики, которые, взятые вместе, отличают их от других мультипроцессоров:

  • для всех центральных процессоров имеется единое адресное пространство;

  • доступ к удаленным модулям памяти осуществляется при помощи специальных команд процессора;

  • доступ к удаленным модулям памяти медленнее, чем к локальной памяти.

На мультипроцессорах возможны различные варианты организации операционной системы. Рассмотрим 3 из них.

1 Каждому центральному процессору – свою операционную системы. Простейший способ организации мультипроцессорных операционных систем состоит в том, чтобы статически разделить оперативную память по числу центральных процессоров и дать каждому центральному процессору свою собственную память с собственной копией системы. Процессоры работают как независимые компьютеры. Процессоры совместно используют код операционной системы, храня только индивидуальные копии данных (Рисунок 70).

Рисунок 70 – Разделение памяти мультипроцессора между 3 центральными процессорами с общей копией кода операционной системы

Достоинства: простота реализации, совместное использование устройств ввода-вывода, возможное взаимодействие процессов – один процесс пишет информацию в память, а другой считывает оттуда безо всяких ограничений. Системные вызовы обрабатываются каждым процессором.

Недостатки данной схемы. Совместного планирования процессов для всех процессоров нет, поэтому один процессор может быть загружен, а другой – нет. Совместного использования страниц памяти нет, т.е. если у одного процессора свободно много памяти, а у другого нет, то изменить ситуацию невозможно. Проблемы с устройствами ввода-вывода с буферным кэшем (например, жесткий диск) приводят к порче данных из-за невозможности синхронизации со всеми процессорами.

2 Мультипроцессоры типа «хозяин-подчиненный». Схема приведена на рисунке 71. Одна копия операционной системы находится на первом центральном процессоре, на него перенаправляются все системные вызовы. Процессы пользователя работают на остальных процессорах, при этом могут работать и на первом, если у него остается время.

Достоинства: единая структура планирования процессов, страницы памяти управляются динамически, нет проблем с буферным кэшем.

Недостаток: при большом количестве центральных процессоров хозяин может не справляться с нагрузкой по обработке системных вызовов.

Рисунок 71 – Модель мультипроцессора «хозяин-подчиненный»

3 Симметричные мультипроцессоры. Схема представлена на рисунке 72.

Рисунок 72 – Модель симметричного мультипроцессора

В памяти находится всего одна операционная система, но выполнять ее может любой процессор. При системном вызове на центральном процессоре, обратившемся к системе с системным вызовом, происходит прерывание с переходом в режим ядра и обработкой системного вызова.

Достоинства: Эта модель обеспечивает динамический баланс процессов и памяти, поскольку в ней имеется всего один набор таблиц операционной системы. Она также позволяет избежать простоя системы, связанного с перегрузкой «хозяина», как в предыдущей схеме. Такой подход используется в большинстве современных мультипроцессоров.

В мультипроцессорных системах все центральные процессоры совместно используют общую память. Синхронизация выполняется при помощи мьютексов, семафоров, мониторов и т.п. Однако большие мультипроцессоры сложны в построении и дороги. Поэтому используются многомашинные системы, которые ещё называют кластерными компьютерами. Основными компонентами кластерных компьютеров являются усеченные варианты обычных персональных компьютеров с сетевыми картами. Быстродействие системы кластерных компьютеров зависит от схемы соединительной сети и интерфейсной карты. Бывают следующие виды соединений: звезда, кольцо, решетка, двойной тор, куб, гиперкуб [10, 14].