Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 4 Потоки.doc
Скачиваний:
49
Добавлен:
11.05.2015
Размер:
6.22 Mб
Скачать

Организация симметричной многопроцессорной системы

На рис. 4.9 проиллюстрирована общая архитектура симметричной много­процессорной системы. В ней имеется несколько процессоров, каждый из кото­рых содержит свой собственный управляющий модуль, арифметико-логическое устройство и свои регистры. Каждый из процессоров имеет доступ к общей ос­новной памяти и устройствам ввода-вывода. Этот доступ осуществляется с по­мощью некоторого механизма взаимодействия; традиционно в роли такого меха­низма выступает общая шина. Процессоры могут обмениваться между собой ин­формацией посредством общей памяти (т.е. с помощью сообщений и информации о состоянии, хранящихся в общем адресном пространстве). Кроме того, процес­соры могут иметь возможность непосредственного обмена сигналами. Память за­частую имеет организацию, позволяющую осуществлять одновременный множе­ственный доступ к ее отдельным блокам.

Как правило, в современных машинах процессоры имеют по крайней мере один уровень собственного кэша. Его использование вносит новые аспекты в рассмотрение архитектуры операционных систем. Поскольку в каждом локальном кэше хранится образ какой-то части основной памяти, то в результате измене­ния слова в одном кэше соответствующее слово в другом кэше может оказаться неверным. Чтобы предотвратить такую ситуацию, все процессоры, в кэше кото­рых содержится данное слово, должны быть извещены о необходимости изменить его. Эта проблема известна как проблема когерентности кэшей и относится скорее к аппаратному обеспечению, чем к операционной системе.

Архитектура многопроцессорных операционных систем

Операционная система, предназначенная для симметричной многопроцессорной системы, управляет процессорами и другими ресурсами компьютера та­ким образом, чтобы с точки зрения пользователя многопроцессорная система выглядела так же, как и многозадачная однопроцессорная. Пользователь может создавать приложения с использованием нескольких процессов или нескольких потоков в процессах, не заботясь о том, какое количество процессоров будет доступно — один или несколько. Таким образом, многопроцессорная операционная система должна выполнять все функции многозадачной системы, а также обла­дать дополнительными возможностями по распределению вычислений среди процессоров. В число особенностей архитектуры такой операционной системы входят следующие.

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

2 Описание аппаратной реализации схем когерентных кэшей представлено в [STALOO]

  • Планирование. Планирование может выполняться на любом из процессоров, поэтому необходимо предусмотреть механизм, позволяющий избежать конфликтов. При использовании многопоточности на уровне ядра несколько потоков одного и того же процесса могут выполняться на разных процессорах. Планирование в многопроцессорных системах рассматривается в главе 10, "Многопроцессорное планирование и планирование реального времени".

  • Синхронизация. В ситуации, когда несколько активных процессов имеют воз­можность доступа к совместным адресным пространствам или ресурсам ввода-вывода, необходимо позаботиться об их эффективной синхронизации. Синхро­низация — это средство, обеспечивающее реализацию взаимоисключений и упорядочение событий. Общепринятым механизмом синхронизации в много­процессорных операционных системах являются блокировки, описанные в гла­ве 5, "Параллельные вычисления: взаимоисключения и многозадачность".

  • Управление памятью. Система управления памятью в многопроцессорной системе должна быть способна разрешать все проблемы, возникающие в однопроцессорных машинах, а кроме того, операционная система должна уметь использовать возможности, предоставляемые аппаратным обеспечением, например многопортовую память. Механизмы страничной организации памяти разных процессоров должны быть скоординированы, чтобы обеспе­чить согласованность работы в ситуации, когда несколько процессоров используют одну и ту же страницу или один и тот же сегмент и принимают решение по вопросу замещения страниц.

  • Надежность и отказоустойчивость. При отказе одного из процессоров опе­рационная система должна обеспечить продолжение корректной работы системы. Планировщик операционной системы (как и другие ее части) должен получить информацию о потере одного из процессоров и соответствующим образом перестроить свои управляющие таблицы.

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