
54 Глава 1. Введение
Множество аспектов проектирования мультикомпьютерных операционных
систем одинаково важны для любой распределенной системы. Основная разница
между мультикомпьютерными операционными системами и распределенными
системами состоит в том, что в первом случае обычно подразумевается, что аппа-
ратное обеспечение гомогенно и полностью управляемо. Множество распреде-
ленных систем, однако, строится на базе существующих операционных систем.
Далее мы обсудим этот вопрос.
Системы с распределенной разделяемой памятью
Практика показывает, что программировать мультикомпьютерные системы зна-
чительно сложнее, чем мультипроцессорные. Разница объясняется тем, что связь
посредством процессов, имеющих доступ к совместно используемой памяти,
и простых примитивов синхронизации, таких как семафоры и мониторы, значи-
тельно проще, чем работа с одним только механизмом обмена сообщениями. Та-
кие вопросы, как буферизация, блокировка и надежность связи, только усложня-
ют положение.
По этой причине проводились впечатляющие исследования по вопросу эму-
ляции совместно используемой памяти на мультикомпьютерных системах. Их
целью было создание виртуальных машин с разделяемой памятью, работающих
на мультикомпьютерных системах, для которых можно было бы писать прило-
жения, рассчитанные на модель совместно используемой памяти, даже если фи-
зически она отсутствует. Главную роль в этом играет мультикомпьютерная опе-
рационная система.
Один из распространенных подходов
—
задействовать виртуальную память
каждого отдельного узла для поддержки общего виртуального адресного про-
странства. Это приводит нас к
распределенной
разделяемой памяти {Distiibuted
Shared
Memory,
DSM) со страничной организацией. Принцип работы этой памя-
ти следующий. В системе с DSM адресное пространство разделено на страницы
(обычно по 4 или по 8 Кбайт), распределенные по всем процессорам системы.
Когда процессор адресуется к памяти, которая не является локальной, происходит
внутреннее прерывание, операционная система считывает в локальную память
страницу, содержащую указанный адрес, и перезапускает выполнение вызвавшей
прерывание инструкции, которая теперь успешно выполняется. Этот подход
продемонстрирован на рис. 1.11, а для адресного пространства из 16 страниц
и четырех процессоров. Это вполне нормальная страничная организация, если не
считать того, что в качестве временного хранилища информации используется
не диск, а удаленная оперативная память.
В этом примере при обращении процессора
1
к коду или данным со страницы
О,
2, 5 или 9 обращение происходит локально. Ссылки на другие страницы вызы-
вают внутреннее прерывание. Так, например, ссылка на адрес со страницы 10
вызывает внутреннее прерывание операционной системы, и она перемещает стра-
ницу 10 с машины 2 на машину 1, как показано на рис. 1.11, б.
Одно из улучшений базовой системы, часто позволяющее значительно повы-
сить ее производительность,
—
это репликация страниц, которые объявляются