Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 13
Текст из файла (страница 13)
Пока производится только чтение, никакой разницы между репликацр1ей закрытых и незакрытых на запись страниц нет. Однакоесли реплицированная страница внезапно изменяется, необходимо предпринимать специальные действия для предотвращения появления множества несовмес-56Глава 1. Введениетимых копий. Обычно все копии, кроме одной, перед проведением записи объявляются неверными.Дополнительного увеличения производительности можно добиться путемухода от строгого соответствия между реплицируемыми страницами. Другимисловами, мы позволяем отдельной копии временно отличаться от других. Практика показывает, что этот подход действительно может помочь, но, к сожалению,может также сильно осложнить жизнь программиста, вынужденного в этом случае отслеживать возможную несовместимость.
Поскольку основной причинойразработки DSM была простота программирования, ослабление соответствияне находит реального применения. Мы вернемся к проблемам соответствия вглаве 6.Другой проблемой при разработке эффективных систем DSM является вопрос о размере страниц. Мы сталкивались с подобным выбором, когда рассматривали вопрос размера страниц в однопроцессорной системе с виртуальной памятью. Так, затраты на передачу страницы по сети в первую очередь определяютсязатратами на подготовку к передаче, а не объемом передаваемых данных.
Соответственно, большой размер страниц может снизить общее число сеансов передачипри необходимости доступа к большому количеству последовательных элементов данных. С другой стороны, если страница содержит данные двух независимых процессов, выполняющихся на разных процессорах, операционная системабудет вынуждена постоянно пересылать эту страницу от одного процессора кдругому, как показано на рис. 1.12. Размещенрю данных двух независимых процессов на одной странице называется ошибочным разделением {false sharing).Машина АПередача страницы,когда требуется доступк машине АМашина В: Два независимыхэлемента данныхСтраницаКод.использующий|машину ВПередача страницы,когда требуется доступк машине ВКод,использующий|машину ВРис. 1.12.
Ошибочное разделение страницы двумя независимыми процессамиПосле почти 15 лет исследований распределенной памяти совместного использования разработчики DSM продолжают добиваться сочетания эффективностии легкости программирования. Для достижения высокой производительностикрупномасштабных мультикомпьютерных систем программисты прибегают к пересылке сообщений, невзирая на ее высокую, по сравнению с программированием систем (виртуальной) памяти совместного использования, сложность.
Этопозволяет нам сделать вывод о том, что DSM не оправдывает наших ожиданий1.4. Концепции программных р е ш е н и й57для высокопроизводительного параллельного программирования. Дополнительную информацию по DSM можно найти в книге [363].1.4.2. Сетевые операционные системыв противоположность распределенным операционным системам сетевые операционные системы не нуждаются в том, чтобы аппаратное обеспечение, на котором они функционируют, было гомогенно и управлялось как единая система. Напротив, обычно они строятся для набора однопроцессорных систем, каждая изкоторых имеет собственную операционную систему, как показано на рис. 1.13.Машины и их операционные системы могут быть разными, но все они соединеныв сеть.
Кроме того, сетевая операционная система позволяет пользователям использовать службы, расположенные на конкретной машине. Возможно, будетпроще описать сетевую операционную систему, кратко рассмотрев службы, которые она обычно предоставляет.Машина А1Машина В1IМашина С1г1Распределенные приложения1 Службы сетевой 1 1 Службы сетевой 1 1 Службы сетевой 1операционнойоперационнойоперационной1системы1Iсистемы11системы1Ядро1ЯдроЯдро1СетьРис.
1.13. Общая структура сетевой операционной системыСлужба, обычно предоставляемая сетевыми операционными системами, должна обеспечивать удаленное соединение пользователя с другой машиной путемприменения команды типа:r l o g i n machineВ результате выполнения этой команды происходит переключение рабочейстанции пользователя в режим удаленного терминала, подключенного к удаленной машине. Это означает, что пользователь сидит у графической рабочей станции, набирая команды на клавиатуре. Команды передаются на удаленную машину,а результаты с удаленной машины отображаются в окне на экране пользователя.Для того чтобы переключиться на другую удаленную машину, необходимо открыть новое окно и воспользоваться командой rlogin для соединения с другоймашиной. Выбор удаленной машины производится вручную.Сетевые операционные системы также имеют в своем составе команду удаленного копирования для копирования файлов с одной машины на другую. Например:гср m a c h i n e l : f i l e lmachine2:file258Глава 1.
ВведениеЭта команда приведет к копированию файла filel с машины machlnel наmach1ne2 и присвоению ему там имени f1le2. При этом перемещение файлов задается в явном виде, и пользователю необходимо точно знать, где находятся файлыи как выполняются команды.Такая форма связи хотя и лучше чем рнгчего, но все же крайне примитивна.Это подвигло проектировщиков систем на поиски более удобных вариантов связи и совместного использования информации.
Один из подходов предполагаетсоздание глобальной общей файловой системы, доступной со всех рабочих станций. Файловая система поддерживается одной или несколькими машинами, которые называются файловыми серверами (file servers). Файловые серверы принимают запросы от программ пользователей, запускаемых на других машинах (нена серверах), которые называются клиентами (clients), на чтение и запись файлов. Каждый пришедший запрос проверяется и выполняется, а результат пересылается назад, как показано на рис. 1.14.Файл овыи серверКлиент 1Клиент 2ЗапросJtkОтветiДиски, на которыххранится общаяфайловая системаJ}СетьРис. 1.14. Два клиента и сервер в сетевой операционной системеФайловые серверы обычно поддерживают иерархические файловые системы,каждая с корневым каталогом, содержащим вложенные каталоги и файлы.
Рабочие станции могут импортировать или монтировать эти файловые системы, увеличивая свою локальную файловую систему за счет файловой системы сервера.Так, например, на рис. 1.15 показаны два файловых сервера. На одном из нихимеется каталог под названием games, а на другом — каталог под названием work(имена каталогов на рисунке выделены жирным шрифтом). Каждый из этих каталогов содержит некоторые файлы. На обоих клиентах смоьггированы файловые системы обоих серверов, но в разных местах файловых систем клиентов.Клиент 1 смонтировал их в свой корневой каталог и имеет к ним доступ по путям /games и /work соответственно.
Клиент 2, подобно Клиенту 1, смонтировалкаталог work в свой корневой каталог, но решил, что игры (games) должны бытьего частным делом. Поэтому он создал каталог, который назвал /private, и смонтировал каталог games туда. Соответственно, он получит доступ к файлу расwoman через путь /private/games/pacwoman, а не /games/pacwoman.Хотя обычно не имеет значения, в какое место своей иерархии каталогов клиент смонтировал сервер, важно помнить, что различные клиенты могут иметьразличное представление файловой системы. Имя файла зависит от того, как организуется доступ к нему и как выглядит файловая система на самой машине.Поскольку каждая клиентская машина работает относительно независимо отдругих, невозможно дать какие-то гарантии, что они обладают одинаковойиерархией каталогов для своих программ.1.4.
Концепции программных решенийКлиент 1Клиент 2'Сервер 1gamesIprivateКлиент 1pacmanpacwomanpacchild59Сервер 2workmailteachingresearchКлиент 2I gameswork (pacmanpacwomanpacchildmailteachingresearchРис. 1.15. Различные клиенты могут монтировать файловые системы серверов по-разномуСетевые операционные системы выглядят значительно примитивнее распределенных. Основная разница между этими двумя типами операционных системсостоит в том, что в распределенных операционных системах делается серьезнаяпопытка добиться полной прозрачности, то есть создать представление единойсистемы.«Нехватка» прозрачности в сетевых операционных системах имеет некоторыеочевидные обратные стороны. Например, с ними часто сложно работать, поскольку пользователь вынужден явно подсоединяться к удаленным машинам или копировать файлы с одной машины на другую.