Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_СГTУ new v10.doc
Скачиваний:
148
Добавлен:
12.11.2019
Размер:
4.13 Mб
Скачать

7.2. Принципы функционирования smp

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

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

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

Операционная система, предназначенная для симметричной многопроцессорной системы, управляет процессорами и другими ресурсами компьютера таким образом, чтобы с точки зрения пользователя многопроцессорная система выглядела так же, как и многозадачная однопроцессорная.

Рис. 70. Архитектура симметричной многопроцессорной системы

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

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

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

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

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

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

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