Конспект (1162775), страница 2
Текст из файла (страница 2)
Чтобы отличать разныесообщения одного и того же отправителя§ коммуникатор (типа MPI_Comm) – среда для передачи сообщений. Один процессможет быть приписан нескольким коммуникаторам.•§ статус сообщения (возвращает MPI_SUCCESS или код ошибки)o Receive§ адрес буфера в памяти;§ количество посылаемых элементов;§ тип данных каждого элемента;§ номер процесса-адресата в его группе (либо «любой»);§ тег сообщения (либо «любой»);§ коммуникатор;§ статус (возвращает MPI_SUCCESS или код ошибки)o Режимы передачи§ Стандартный – выполнение операции гарантируется только то, что сообщениеизъято из памяти отправителя, и её можно использовать.
Нелокальная.• MPI_Send – блокирующая операция• MPI_ISend - неблокирующая§ Буферизуемый (MPI_BSend) – завершается тогда, когда сообщение изъято изпамяти и помещено в буфер. Локальная. (говорят, в лекциях бага. Нелокальная)§ Синхронный (MPI_SSend) – рандеву. Нелокальная.§ Готовности (MPI_RSend) – отработает корректно только если уже вызванMPI_Receive. Локальная.
(говорят, в лекциях бага. Нелокальная)o Коллективные коммуникации§ Барьер для всех членов группы (BARRIER)§ Передача всем от одного (BROADCAST)§ Сбор данных от всех одному (GATHER)§ Рассылка одного всем по персональному куску (SCATTER)§ Сбор данных по кускам от всех всем (ALLGATHER)§ Рассылка всем от всех - каждый делает scatter (ALLTOALL)§ Глобальные операции (редукцонные) – сумма, максимум, минимум.§ Преимущества использования MPI• Выбирает наиболее оптимальные маршруты• Более удачно выбирает координатора (например, при барьернойсинхронизации)• Учитывает загруженность линий связи.MPI-2o Динамическое создание и уничтожение процессовo Односторонние коммуникации – процесс имеет возможность прочитать область памятидругого процесса.o Параллельные операции ввода-вывода.Синхронизация в распределенных системах (Крюков + Глазкова)• 4 основные проблемы:o Синхронизация времениo Выбор координаторo Взаимное исключениеo Координация процессов• Синхронизация времениo Нет глобальных часовo Для большинства целей достаточно иметь логическое время (1978, Лампорт)o Отношение «а произошло до b»§ Если оба события произошли в одном процессе§ Если событие «а» есть операция SEND в одном процессе, а событие «b» - приемэтого сообщения в другом процессе.• Выбор координатораo Алгоритм задирыЛюбой процесс может инициировать выборы.
Он посылает «запрос» всем процессам сID больше чем у него, и если не получает ответа – становится координатором, о чемизвещает все процессы сообщением «координатор».o Круговой алгоритмИнициирующий процесс посылает соседу «запрос». Если тот не отвечает –следующему. Сосед добавляет ID из запроса в список и посылает дальше. Когда кругзамкнется (процесс обнаружит себя в списке), он выбирает из списка процесс снаибольшим ID и извещает всех о новом координаторе.• Взаимное исключениеo Централизованный алгоритмКаждый процесс, желающий войти в критическую секцию, должен послать запроскоординатору и дождаться разрешения.
При выходе из КС – также сообщаемкоординатору. Минус: координатор имеет большую нагрузку.o Децентрализованный алгоритм на основе временных меток.Требует глобальное упорядочение всех событий по времени. Желающий войти в КСпосылает запросы всем процессам. Если получатель собирался войти в КС –сравнивает временные метки. Сидящий в КС не отвечает, остальные – говорят ОК.При выходе из КС – шлет ОК всем, от кого получил запросы.
Минусы: многосообщений, снижение надежности.o Круговой маркерМаркер перемещается от процесса к процессу по логическому кольцу. Минусы:§ Маркер бегает по кругу, даже если никому не нужен.§ Если кто-то часто входит в КС, он все равно должен ждать маркер.o Широковещательный запрос маркераМаркер содержит: очередь запросов, массив из номеров последних выполненныхзапросов. Если хочешь маркер – рассылаешь всем запрос с новым номером запроса.Владелец маркера сверяет, что это не старый запрос, и добавляет отправителя вмаркерную очередь. Затем отсылает маркер следующему по очереди.
При выходе изКС в маркере в массиве номеров выставляется номер своего последнего запроса.o Децентрализованный древовидный маркерный алгоритмОрганизуем узлы в бинарное дерево. Каждый процесс имеет: очередь запросов(сверху, слева, справа и свой), и указатель на соседа, к которому ушел маркер.Отправка маркера – в соответствии со своей очередью. При выходе из КС маркеротправляется первому по очереди, если в очереди есть ещё кто-то – тут жеотправляется запрос в сторону ушедшего маркера.• Метрики сравнения алгоритмов исключенияo MS/CS – число операций приема сообщений на одну КСo TR – время ответа (от появления запроса до разрешения)o SD – синхронизационная задержка (время от выхода одного из КС до входа следующего)Распределенные файловые системы (Крюков – Глазкова – Таненбаум)• Распределенная ФС – разделяет доступ к файлам на различных машинах сети.• Целиo Сетевая прозрачностьo Высокая доступность• Файловый сервис – это то, что файловая система предоставляет своим клиентам (интерфейс)• Файловый сервер – это процесс, который реализует файловый сервис.• Примеры:o NFS – Network File Systemo RFS – Remote File Systemo AFS – Andrew File System• Свойства, которым должна удовлетворять распределенная ФС:o Сетевая прозрачность – работа с удаленными данными такая же, как с локальнымиo Прозрачность расположения – неважно, где конкретно хранится файлo Независимость размещения – пользователь не знает, где физически лежат данныеo Мобильность пользователя – независимость от машины пользователяo Устойчивость к сбоямo Масштабируемость – должны уметь модернизировать нашу ФС при увеличении нагрузкиo Мобильность файлов – файл может передаваться от одного сервера к другому, чтобыобеспечить максимальную эффективность• Распределенный ФС имеет два компонентаo Файловый сервер§ Файл – неинтерпретируемая последовательность байтов.§ Защита файла• Список прав доступа• Мандат – билет, выданный пользователю для каждого файла с указаниемправ доступа.§ 2 способа работы с файлами:• Модель удаленного доступа – файл все время лежит на сервере• Модель загрузки/выгрузки – доступ осуществляется на клиенте.o Сервер директорий§ Обеспечивает операции создания и удаления директорий, именования ипереименования файлов, перемещение файлов из одной директории в другую.§ Иерархичность директорий§ Прозрачность именования• 2 формы прозрачностиo Прозрачность расположенияo Прозрачность миграции• 3 подхода к именованиюo Машина + путьo Монтирование удаленных ФС в локальную иерархию файловo Единственное пространство имен (необходимо для того, чтобраспределенная система выглядела как единый компьютер)• Двухуровневое именованиеo Файл имеет символьное имя (для пользователей)o Файл имеет внутреннее двоичное имя (для самой системы)§ Разделение доступа фалов• Подход Unix•••••Процесс, выполнивший READ, должен сразу видеть изменения.
Минусы:все события должны быть упорядочены по глобальным часам, клиенты недолжны иметь кэш, трудно сохранить семантику общего указателя файлаСемантика сессийИзменения файла сохраняются на сервере по операции CLOSEНеизменяемые файлыФайлы можно только создавать и читать. Редактировать – нельзя.Семантика транзакцийМежду операциями BEGIN_TRANSACTION и END_TRANSACTIONсервер гарантирует, что никакого влияния других клиентов не будет.Реализация распределенных ФСo Выбирая политику, нужно определиться, как будут использоваться файлыo Структура системы§ Должен ли клиент отличаться от сервера?§ Должны ли быть файловый сервер и сервер директорий отдельными серверами?§ Должны ли серверы хранить информацию о клиентах?• Сервер с состояниемo Хранят информацию о состоянии клиентаo Таблицы открытых файлов -> бОльшая эффективностьo Короче сообщения (двоичные имена используют таблицу открытыхфайлов)o Блоки информации могут читаться с упреждением.o Легко реализуется возможность блокировки файловo Проблема – крах клиента• Без состоянияo Не требуется память для таблиц открытых файлов (их нет)o Нет ограничений на количество файлов, с которыми система можетработатьo Не требуются операции OPEN/CLOSEo Простота реализации,o Устойчивость к ошибкамo Нет проблемы краха клиента.Кэшированиеo Виды кэширования:§ В памяти сервера (минус: коммуникационные издержки)§ На дисках клиента (сложно реализовать)§ В памяти клиента (самый лучший подход)o Варианты использования КЭШа:§ У каждого процесса – свой кэш§ Единый кэш для всех процессов• Кэширование в ядре (накладные расходы на обращение к ядру растут)• Использование кэш-менеджера (минус: на пользовательском уровне трудноэффективно использовать память, особенно виртуальную)o Алгоритмы поддержания КЭШей на разных клиентах согласованными:§ Алгоритм со сквозной записью• Удобен для мультипроцессорных систем• В распределенных системах:o Серверу придется слишком часто извещать клиентовo Сообщения о модификациях могут быть перепутаны (во времени)§ Алгоритм с отложенной записью (NFS 3)• Сообщаем серверу об изменениях через заданный промежуток времени••§ Алгоритм записи в файл по закрытию, реализует семантику сессий (NFS 4)§ Алгоритм централизованного управления (плохое решение)Размножение файловo Цели§ Распределение нагрузки на несколько серверов§ Увеличение надежности§ Увеличение эффективности (можно работать с ближайшим сервером)§ Увеличение доступностиo Способы размножения§ Явное размножение (непрозрачно)Клиент получает список дескрипторов файлов, и пишет сразу во все§ Ленивое размножениеСначала копия создается на одном сервере, а затем он сам автоматически создаетдополнительные копии и обеспечивает их поддержание.§ Симметричное размножениеКоманды, которые выполняет пользователь, автоматически выполняются нанескольких серверах.o Протоколы коррекции§ Метод главной копии.• Один сервер объявляется главным.
Все изменения файла посылаютсяглавному серверу. Он корректирует свою главную копию, а затем рассылаетподчиненным серверам указания о коррекции.• Минус: выход из строя главного сервера не позволяет сделать коррекцию.§ Метод одновременной коррекции всех копий.• Все изменения посылаются всем серверам.§ Метод голосования.• Запрашивать чтение и запись файла у многих серверов.• Для успешной записи Nw (кворум записи) серверов должны ее выполнить• У всех серверов должно быть согласие относительно номера текущейверсии файла. Номер увеличивается на единицу с каждой коррекцией.• Для успешного чтения достаточно обратиться к Nr (кворум на чтения)серверам.• Nw+Nr>N. Как правило Nw=N, Nr=1.o NFS 4 – размножение.
У файла может быть атрибут FS_LOCATIONS.Надежность (отказоустойчивость) ФСo Аутентификацияo Блокировка файлов§ Плюс – крах клиента. Ничего плохого не происходит§ Минус – крах сервера. Теряем информацию о блокировках.§ Период амнистии – в этот период сервер не устанавливает новых блокировок, аждет только продления блокировок. Если никто не обратился – блокировкасчитается снятой. Требуется при восстановлении сервера после отказа.o Делегирование прав на открытие файлов. Аналогично – период амнистии.o Защита – метод контроля доступа к файлам§ Организация защищенных каналов§ Контроль доступа к файлам•NFSo Была разработана для использования в рабочих станциях на базе UNIX, но затем былареализована и на многих других платформахo Архитектура NFS§ Модель лежащая в основе NFS – удаленная файловая служба (remote file service)или модель удаленного доступа (remote access model) – файл все время остается насервере.§ Пользователям виртуальный файловый интерфейс (VFS), похожий на интерфейсстандартной ФС Unix.§ Все взаимодействия между клиентом и сервером – посредством RPC (remoteprocedure call)§ NFS как отдельный компонент лежит ниже уровня VFS, который стоит междууровнем системных вызовов и интерфейсом локальной ФС.§ NFS клиента взаимодействует с NFS сервера посредством RPC-вызовов (remoteprocedure call).o Сервера бывают§ С состоянием (хранят информацию о состоянии клиентов) - в NFS 4§ Без состояния - в NFS 3o Модель файловой системы§ Файл – неинтерпретируемая последовательность байтов.§ Файлы организованы в виде иерархического графа имен.§ NFS поддерживает жесткие ссылки (как в Unix)§ Двухуровневое именование файлов (Символьное имя, Дескриптор (file handle))o Основные операции работы с файлами в NFS:§ READ, WRITE, GETTATR (имя, размер и пр.), SETATTR, READDIR, LOOCUP(получение по символьному имени дескриптор файла)§ В NFS 4 дополнительно есть OPEN и CLOSE.