Архитектура многопроцессорных операционных систем
Операционная система, предназначенная для симметричной многопроцессорной системы, управляет процессорами и другими ресурсами компьютера таким образом, чтобы с точки зрения пользователя многопроцессорная система выглядела так же, как и многозадачная однопроцессорная. Пользователь может создавать приложения с использованием нескольких процессов или нескольких потоков в процессах, не заботясь о том, какое количество процессоров будет доступно — один или несколько. Таким образом, многопроцессорная операционная система должна выполнять все функции многозадачной системы, а также обладать дополнительными возможностями по распределению вычислений среди процессоров. В число особенностей архитектуры такой операционной системы входят следующие.
• Одновременные параллельные процессы или потоки. Чтобы несколько различных процессов могли одновременно выполнять один и тот же код ядра, он должен быть реентерабельным. При выполнении несколькими процессорами одного и того же кода ядра (или разных его частей) необходима организация управления таблицами и управляющими структурами ядра, чтобы избежать взаимоблокировок или неправильного выполнения операции.
2 Описание аппаратной реализации схем когерентных кэшей представлено в [STALOO]
• Планирование. Планирование может выполняться на любом из процессоров, поэтому необходимо предусмотреть механизм, позволяющий избежать конфликтов. При использовании многопоточности на уровне ядра несколько потоков одного и того же процесса могут выполняться на разных процессорах. Планирование в многопроцессорных системах рассматривается в главе 10, "Многопроцессорное планирование и планирование реального времени".
• Синхронизация. В ситуации, когда несколько активных процессов имеют возможность доступа к совместным адресным пространствам или ресурсам ввода-вывода, необходимо позаботиться об их эффективной синхронизации. Синхронизация — это средство, обеспечивающее реализацию взаимоисключений и упорядочение событий. Общепринятым механизмом синхронизации в многопроцессорных операционных системах являются блокировки, описанные в главе 5, "Параллельные вычисления: взаимоисключения и многозадачность".
• Управление памятью. Система управления памятью в многопроцессорной системе должна быть способна разрешать все проблемы, возникающие в однопроцессорных машинах, а кроме того, операционная система должна уметь использовать возможности, предоставляемые аппаратным обеспечением, например многопортовую память. Механизмы страничной организации памяти разных процессоров должны быть скоординированы, чтобы обеспечить согласованность работы в ситуации, когда несколько процессоров используют одну и ту же страницу или один и тот же сегмент и принимают решение по вопросу замещения страниц.
• Надежность и отказоустойчивость. При отказе одного из процессоров операционная система должна обеспечить продолжение корректной работы системы. Планировщик операционной системы (как и другие ее части) должен получить информацию о потере одного из процессоров и соответствующим образом перестроить свои управляющие таблицы.
Поскольку при описании архитектуры многопроцессорной операционной системы, как правило, рассматриваются те же вопросы (с добавлением некоторых других), что и при описании устройства однопроцессорной операционной системы, мы не будем останавливаться на многопроцессорных операционных системах отдельно. Вместо этого по ходу изложения материала книги будем обращаться к вопросам, являющимся специфичными для многопроцессорных систем.
МИКРОЯДРА
В последнее время большое внимание уделяется концепции микроядер. Микроядро представляет собой остов операционной системы, служащий основой для других ее модулей. Термин не имеет точного определения, и многие вопросы, относящиеся к микроядрам, различные группы разработчиков операционных систем трактуют по-разному. В число этих вопросов входят такие: насколько малым должно быть ядро, чтобы его можно было назвать микроядром; как должны быть разработаны драйверы устройств, чтобы достичь максимальной производительности при абстрагировании их функциональности от особенностей аппаратного обеспечения; как следует выполнять не относящиеся к ядру операции — в пространстве ядра или в пользовательском пространстве, и другие.
Подход с использованием микроядра приобрел популярность после его использования в операционной системе Mach. Теоретически такой подход обеспечивает высокую степень гибкости и модульности. Другим примером удачного использования этого подхода стала операционная система Windows 2000, которая претендует на широкую популярность. Микроядро операционной системы Windows 2000 окружено несколькими компактными подсистемами, что облегчает его реализацию на различных платформах. Некоторые другие программные продукты также реализованы с использованием микроядра. В ближайшем будущем этот подход, по-видимому, будет встречаться в большинстве операционных систем, разрабатываемых для персональных компьютеров, рабочих станций и серверов.
Дата добавления: 2016-06-05; просмотров: 2686;