В. Столлингс - Операционные системы (1114679), страница 38
Текст из файла (страница 38)
Симметричные мультипроцессоры и кластеры имеют сложную архитектуру. Для их разработки нужно решать вопросы, связанные с физической организацией, структурами взаимосвязей, обменом информацией между процессорами, архитектурой ог.ерационной системы и обеспечением прикладными программами. Обсуждая такие системы в данном разделе и далее, в главе 13, "Распределенные вычисления, архитектура клиентг'сервер и кластеры", мы затрагиваем в основном вопросы архитектуры операционных систем. Однако и здесь, и позже мы вскользь коснемся вопросов аппаратного устройства таких компьютерных систем.
ОРганизация симметричной многопроцессорной системы На рис. 4 9 проиллюстрирована общая архитектура симметричной многопроцессорной системы. В ней имеется несколько процессоров, каждый из котоРых содержит свой собственный управляющий модуль, арифметико-логическое У~тройство и свои регистры. Каждый из процессоров имеет доступ к общей основной памяти и устройствам ввода-вывода. Этот доступ осуществляется с помощью некоторого механизма взаимодействия; традиционно в роли такого меха~изма выступает общая шина.
Процессоры могут обмениваться между собой инРмвцней посредством общей памяти (т.е с помощью сообщений и информации о сост с~~толкни, хранящихся в общем адресном пространстве). Кроме того, процессорьг Рь™гут иметь возможность непосредственного обмена сигналами. Память зачастую ~ ю ттьтеет организацию, позволяющую осуществлять одновременный множествен нньгтт доступ к ее отдельным блокам. Как правило, в современных машинах процессоры имеют по крайней мере оди Ур~вень собственного кэша. Его использование вносит новые аспекты в рассввот канте Рентте аРхитектуры операционных систем.
Поскольку в каждом локальном хранится образ какой-то части основной памяти, то в результате изменентвя слова неверным. «'ва в одном кэше соответствующее слово в другом кэше может оказаться Рн'тм. Чтобы предотвратить такую ситуацию, все процессоры, в каше кото-' Рьтх держится данное слово, должны быть извещены о необходимости изме- Часть 2. 4 Потоки, симметричная мультипроцессорная обработка... 215 , ть его.
Эта проблема известна как проблема когерентности кэшей и о ;орее к аппаратному обеспечению, чем к операционной системе.г Подсинена ввода-вэасда Рис. а.р. Архитектура симмстричнои многопроцессорной системы .рхитектура многопроцессорных операционных сис Операционная система„предназначенная для симметричной много' рной системы, управляет процессорами и другими ресурсами компью, зм образом, чтобы с точки зрения пользователя многопроцессорная аглядела так же, как и многозадачная однопроцессорная. Пользователь' здавать приложения с использованием нескольких процессов или неск,. )токов в процессах, не заботясь о том, какое количество процессоров бу.
'пно — один или несколько. Таким образом, многопроцессорная опер ~стема должна выполнять все Функции многозадачной системы, а т ~ть дополнительными возможностями по распределению вычислениаа юцессоров. В число особенностей архитектуры такой операционной :одят следующие. Одновременные параллельные процессы или потоки. Чтобы несколь личных процессов могли одновременно выполнять один и тот же кога.
он должен быть реентерабельным. При выполнении несколькими п Рами одного и того же кода ядра (или разных его частей) необход низация управления таблицами и управляющими структурами ядрае."'. избежать взаимоблокировок или неправильного выполнения операци Описание аппаратной реализации схем когерентных кашей праде 'ТАХ.ОО~. ° Планирование. Планирование может выполняться на любом из процессоров, поэтому необходимо предусмотреть механизм, позволяющий избежать конфликтов.
При использовании многопоточности на уровне ядра несколько потоков одного и того же процесса могут въшолняться на разных процессорах. Планирование в многопроцессорных системах рассматривается в главе 10, 'Многопроцессорное планирование и планирование реального времени'*. Синхронизация. В ситуации, когда несколько активных процессов имеют возаюжность доступа к совместным адресным пространствам или ресурсам вводаэывода, необходимо позаботиться об их эффективной синхронизации. Синхроннзания — это средство, обеспечивающее реализацию взанмоисключенпй и угорядочение событий.
Общепринятым механизмом синхронизации в многопроцессорных операционных системах являются блокировки, описанные в главе э, "Параллельные вычисления: взаимоисключения и многозадачность". управление памятью. Система управления памятью в многопроцессорной системе должна быть способна разрешать все проблемы, возникающие в однопроцессорных машинах, а кроме того, операционная система должна уметь использовать возможности, предоставляемые аппаратным обеспечением. например многопортовую память. Механизмы страничной организации памяти разных процессоров должны быть скоординированы, чтобы обеспечить согласованность работы в ситуации, когда несколько процессоров используют одну и ту же страницу или один и тот же сегмент и принимают Решение по вопросу замещения страниц.
а Надежность и отказоустойчивость. При отказе одного из процессоров операционная система должна обеспечить продолжение корректной работы системы. Планировщик операционной системы (как и другие ее части) должен получить информацию о потере одного из процессоров и соответствующим образом перестроить свои управляющие таблицы. Поскольку при описании архитектуры многопроцессорной операционной системы, ~ ак правило, рассматриваются те же вопросы (с добавлением некоторых других), что и при описании устройства однопроцессорной операционной системы, мы "е буд~м останавливаться на многопроцессорных операционных системах отдельно.
место этого по ходу изложения материала книги будем обращаться к вопросам, являющимся специфичными для многопроцессорных систем. ЩЩ~РОЯДРА-';,"-"!:. аФ,'';.аахм.". а.. '. !паае53а' '!Йай4Ьаа 'с'."МЬзйи~!Э''а ъсаю1"'~;~:", мй~йайеыймйййФЪ последнее время большое внимание уделяется концепции микроядер. В "кроядро гредставляет собой остов операционной системы, служащий основой для д других ее модулей.
Термин не имеет точного определения, и многие вопросы. отн тносящисся к микроядрам, различные группы разработчиков операционных сист эе трактуют по-разному. В число этих вопросов входят такие: насколько ааалым должно быть ядро, чтобы его можно было назвать микроядром; как дол„,.н быть разработаны драйверы устройств, чтобы достичь максимальной произ,, одитсльности при абстрагировании их функциональности от особенностей :а""аратн н Равного обеспечения; как следует выполнять не относящиеся к ядрУ опера- в пространстве ядра или в пользовательском пространстве, и другие. Часть 2. 4. Потоки, симметричная мультипроцессорная обработка...
217 Подход с использованием мтпороядра приобрел популярность после его, зовання в операционной системе МасЬ, Теоретически такой подход обеспе сокую степень гибкости и модульности. Другим примером удачного исп этого подхода стала операционная система %"пи$омз 2000, которая пре широкую популярность. Микроядро операционной системы %'пн$оюз 2000 несколькими компактными подсистемами, что облегчает его реализацию ных платформах. Некоторые другие программные продукты также реал~ гоь .ьзованием микроядра. В ближайшем будущем этот подход, по-видим встречаться в большинстве операционных систем, разрабатываемых для ных компьютеров, рабочих станций и серверов. йверы устройств, файловые системы, менеджер виртуальной памяти, драйв правления окнами и службы безопасности. ма У"Ра ' Архитектура микроядра На структуру ранних операционных систем, разработанных в сре годов, обращалось мало внимания. Ни у кого не было опыта в разрабо ' вительно больших программных систем, а проблемы взаимозависимос модействия сильно недооценивались.
В подобных монолитных опе системах 1гпопо)ЙЫс орегоне' зуа$егпз) почти все процедуры могли одна другую. Такое отсутствие структуры было несовместимо с ра ' операционных систем. Первая версия операционной системы 08/360 б на коллективом программистов из 5000 человек за пять лет и соде Р миллиона строк кода. Разработанная несколько позже операционн Мшт1сз содержала уже 20 миллионов строк. Как отмечалось в раздел ' разработки программного обеспечения такого масштаба требуется ис методы модульного программирования. В час~ности, были разработаны' операционные системы Оауегес) орегаМпа' зузФехпз)з (рис.
4.10,а) с иера ' организацией функций, взаимодействие в которых возможно толь функциями, находящимися на соседних уровнях. При "многослойном,': все уровни или большинство из них выполняются в режиме ядра. "Слоистый' подход тоже не лишен своих проблем. Каждый слой::, определенными функциональными возможностями, и значительные одного из уровней могут иметь различное влияние (которое трудно на код в смежных слоях (как верхнем, так и нижнем).
Поэтому доволь" реализовать согласованные версии операционной системы, имеющие наг ко Функций больше или меньше, чем в базовой версии. Многочисле модействия между соседними уровнями усложняют обеспечение безопа ' Суть Философии, лежащей в основе использования микроядра, з в том, что в ядре должны быть только самые важные функции опе ' системы. Работа служб и приложений, не являющихся критическими, на работе микроядра, но выполняются они в пользовательском режим разделение на то, что находится внутри микроядра, и то, что выноси пределы, зависит от архитектуры системы; общая тенденция такова, службы„которые традиционно входили в операционную систему, тепе во внешние подсистемы, взаимодействующие с ядром и друг с другом.