(2016) Ответы (1162879), страница 4
Текст из файла (страница 4)
Пусть сообщение «ВЫБОРЫ» занимает 1 байт.Под номер процесса тоже отведем 1 байт для простоты.Процесс 0 отправляет процессу 1 «ВЫБОРЫ» + свой номер. Процесс 1 добавляет кполученному сообщению свой номер, и отправляет процессу 2 и т.д. Для полногопрохождения круга надо отправить 16 сообщений.
Размер сообщения с каждым разомбудет расти на 1 байт, и составит арифметическую прогрессию 2, 3, …, 17. Один круг«ВЫБОРОВ» займет T1=(Ts+2*Tb)+(Ts+3*Tb)+…+(Ts+17*Tb)=16*Ts+152*Tb. Послеэтого процесс 0 найдет себя в списке, обнаружит, что круг пройден, выберетмаксимальный номер среди номеров процессов (в данном случае 15), сформулируетсообщение «КООРДИНАТОР» + список 16 работающих процессов, и отправит процессу1. Номер координатора отдельно не передается, им будет процесс с наибольшим номеромв списке.
Процесс 1 в свою очередь отправляет процессу 2, и т.д. Под «КООРДИНАТОР»отведем 1 байт для простоты. Тогда размер сообщения будет 17 байт. Для полногопрохождения круга потребуется 16 сообщений. Это займет T2=16*(Ts+17*Tb).Ответ: Общее время Т=Т1+Т2=32*Ts+424*Tb=3624.Тема-51.Какие принципиальные решения приходится принимать при обеспечениифайлового сервиса?Файловый сервис – это то, что файловая система предоставляет своим клиентам, т.е.интерфейс с файловой системой.● Первый фундаментальный вопрос – что такое файл? Большинствораспределенных систем базируются на использовании среды UNIX и MS-DOS,поэтому они используют соответствующее понятие файла: это неинтерпретируемая последовательность байтов.
Файл может иметь атрибуты.Обычно файлы могут модифицироваться после создания, но есть и системы снеизменяемыми файлами.● Модель загрузки/разгрузки или модель удаленного доступа? В первом случаефайл передается между клиентом (памятью или дисками) и сервером целиком, а вовтором файл сервис обеспечивает множество операций (открытие, закрытие,чтение и запись части файла, сдвиг указателя, проверку и изменение атрибутов, ит.п.). Первый подход требует большого объема памяти у клиента, затрат наперемещение ненужных частей файла. При втором подходе файловая системафункционирует на сервере, клиент может не иметь дисков и большого объемапамяти.● Есть ли разница между клиентами и серверами? Имеются системы, где всемашины имеют одно и то же ПО и любая машина может предоставлять файловыйсервис.
Есть системы, в которых серверы являются обычными пользовательскимипроцессами и могут быть сконфигурированы для работы на одной машине склиентами или на разных. Есть системы, в которых клиенты и серверы являютсяфундаментально разными машинами с точки зрения аппаратуры или ПО (требуютразличных ОС, например).● Должны ли файловый сервер и сервер директорий быть отдельнымисерверами или быть объединенными в один сервер? Разделение позволяетиметь разные серверы директорий (UNIX, MS-DOS) и один файловый сервер.Объединение позволяет сократить коммуникационные издержки.● Должны ли серверы хранить информацию о клиентах.
См. вопрос про сервер ссостоянием.2.Интерфейс сервера директорий.Обеспечивает операции создания и удаления директорий, именования ипереименования файлов, перемещение файлов из одной директории в другую.Определяет алфавит и синтаксис имен. Для спецификации типа информации в файлеиспользуется часть имени (расширение) либо явный атрибут.Все распределенные системы позволяют директориям содержать поддиректории –такая файловая система называется иерархической. Некоторые системы позволяютсоздавать указатели или ссылки на произвольные директории, которые можно помещать вдиректорию. При этом можно строить не только деревья, но и произвольные графы(разница между ними очень важна для распределенных систем, поскольку в случае графаудаление связи может привести к появлению недостижимых поддеревьев. Обнаруживатьтакие поддеревья в распределенных системах очень трудно).Ключевое решение при конструировании распределенной файловой системы –должны или не должны машины (или процессы) одинаково видеть иерархию директорий.Тесно связано с этим решением наличие единой корневой директории (можно иметьтакую директорию с поддиректориями для каждого сервера).Различают две формы прозрачности именования – прозрачность расположения(/server/d1/f1) и прозрачность миграции (когда изменение расположения файла не требуетизменения имени).Имеются три подхода к именованию:● машина + путь;● монтирование удаленных файловых систем в локальную иерархию файлов;● единственное пространство имен, которое выглядит одинаково на всех машинах.Последний подход необходим для достижения того, чтобы распределенная системавыглядела как единый компьютер.Большинство систем используют ту или иную форму двухуровневого именования.Файлы (и другие объекты) имеют символические имена для пользователей, но могуттакже иметь внутренние двоичные имена для использования самой системой.
Например, воперации открыть файл пользователь задает символическое имя, а в ответ получаетдвоичное имя, которое и использует во всех других операциях с данным файлом.Способы формирования двоичных имен различаются в разных системах:● имя может указывать на сервер и файл;● в качестве двоичных имен при просмотре символьных имен возвращаютсямандаты, содержащие помимо прав доступа либо физический номер машины ссервером, либо сетевой адрес сервера, а также номер файла.В ответ на символьное имя некоторые системы могут возвращать несколько двоичныхимён (для файла и его дублей), что позволяет повысить надежность работы с файлом.3.Семантика разделения файлов.● UNIX-семантика – естественная семантика однопроцессорной ЭВМ – если заоперацией записи следует чтение, то результат определяется последней изпредшествующих операций записи. В распределенной системе такой семантикидостичь легко только в том случае, когда имеется один файл-сервер, а клиенты неимеют кэшей.
При наличии кэшей семантика нарушается. Надо либо сразу всеизменения в кэшах отражать в файлах, либо менять семантику разделения файлов.Еще одна проблема – трудно сохранить семантику общего указателя файла (вUNIX он общий для открывшего файл процесса и его дочерних процессов) – дляпроцессов на разных ЭВМ трудно иметь общий указатель.● Неизменяемые файлы – очень радикальный подход к изменению семантикиразделения файлов. Только две операции – создать и читать.
Можно заменитьновым файлом старый – т.е. можно менять директории. Если один процесс читаетфайл, а другой его подменяет, то можно позволить первому процессу доработать состарым файлом, в то время как другие процессы могут уже работать с новым.● Семантика сессий – изменения открытого файла видны только тому процессу (илимашине), который производит эти изменения, а лишь после закрытия файластановятся видны другим процессам (или машинам). Что происходит, если двапроцесса одновременно работали с одним файлом – либо результат будетопределяться процессом, последним закрывшим файл, либо можно толькоутверждать, что один из двух вариантов файла станет текущим.● Транзакции – процесс выдает операцию «НАЧАЛО ТРАНЗАКЦИИ», сообщая темсамым, что последующие операции должны выполняться без вмешательствадругих процессов.
Затем выдает последовательность чтений и записей,заканчивающуюся операцией «КОНЕЦ ТРАНЗАКЦИИ». Если несколькотранзакций стартуют в одно и то же время, то система гарантирует, что результатбудет таким, каким бы он был в случае последовательного выполнения транзакций(в неопределенном порядке). Пример – банковские операции.4.Серверы с состоянием и без состояния. Достоинства и недостатки.Серверы с состоянием - серверы, которые хранят информацию о клиенте (например,таблицу открытых файлов, номер последнего запроса и т.д.)Достоинства:● короче сообщения (двоичные имена используют таблицу открытых файлов).● выше эффективность (информация об открытых файлах может храниться воперативной памяти).● блоки информации могут читаться с упреждением.● убедиться в достоверности запроса легче, если есть состояние (например, хранитьномер последнего запроса).● возможна операция захвата файла.● вопрос об актуальности кэша решается в момент корректировки данных, нетпроблемы консистентности кэша.Недостатки:● накладные расходы на хранение информации об открытых файлах, на поддержаниеактуальности кэша.Серверы без состояния.Достоинства:● устойчивость к ошибкам.● не требуется операций ОТКРЫТЬ/ЗАКРЫТЬ.● не требуется память для таблиц.● нет ограничений на число открытых файлов.● нет проблем при крахе клиента.Недостатки:● проблема захвата файла (но она решаемая).● основная проблема – трудно работать с кэшем; если сервер знает, кому послатьизвещение об изменении данных, это эффективнее, иначе каждый раз при чтениидолжна проверяться актуальность кэша, смысл кэша вообще теряется.5.Алгоритмы обеспечения консистентности кэшей в распределенных файловыхсистемах.● Алгоритм со сквозной записью.
Необходимость проверки, не устарела лиинформация в кэше. Запись вызывает коммуникационные расходы (MS-DOS).● Алгоритм с отложенной записью. Через регулярные промежутки времени всемодифицированные блоки пишутся в файл. Эффективность выше, но семантиканепонятна пользователю (UNIX).● Алгоритм записи в файл при закрытии файла. Реализует семантику сессий. Ненамного хуже случая, когда два процесса на одной ЭВМ открывают файл, читаютего, модифицируют в своей памяти и пишут назад в файл.● Алгоритм централизованного управления.
Можно выдержать семантику UNIX,но это неэффективно, ненадежно и плохо масштабируется.6.Способы организации размножения файлов и коррекции копий.Система может предоставлять такой сервис, как поддержание для указанных файловнескольких копий на различных серверах. Главные цели:1) Повысить надежность.2) Повысить доступность (крах одного сервера не вызывает недоступностьразмноженных файлов).3) Распределить нагрузку на несколько серверов.Имеются три схемы реализации размножения:a) Явное размножение (непрозрачно).
В ответ на открытие файла пользователювыдаются несколько двоичных имен, которые он должен использовать для явногодублирования операций с файлами.b) «Ленивое» размножение. Сначала копия создается на одном сервере, а затем он самавтоматически создает (в свободное время) дополнительные копии и обеспечиваетих поддержание.c) Симметричное размножение. Все операции одновременно вызываются внескольких серверах и одновременно выполняются.Протоколы коррекции.Просто посылка сообщений с операцией коррекции каждой копии является не оченьхорошим решением, поскольку в случае аварий некоторые копии могут остаться нескорректированными.
Имеются три алгоритма, которые решают эту проблему.1) Метод размножения главной копии. Один сервер объявляется главным, аостальные – подчиненными. Все изменения файла посылаются главному серверу.Он сначала корректирует свою локальную копию, а затем рассылает подчиненнымсерверам указания о коррекции. Чтение файла может выполнять любой сервер. Длязащиты от рассогласования копий в случае краха главного сервера до завершенияим рассылки всех указаний о коррекции, главный сервер до выполнения коррекциисвоей копии запоминает в стабильной памяти задание на коррекцию.
Слабость –выход из строя главного сервера не позволяет выполнять коррекции.2) Метод одновременной коррекции всех копий. Все изменения файла посылаются(используя надежные и неделимые широковещательные рассылки) всем серверам.Чтение файла может выполнять любой сервер.3) Метод голосования. Идея – запрашивать чтение и запись файла у многих серверов(запись – у всех!).