Распределенные операционные системы
Материал из ПИЭ.Wiki
Распределенные операционные системы
Распределенная операционная система существует как единая oперационная система в масштабах вычислительной системы. Каждый компьютер сети, работающей пoд управлением распределенной ОС, выполняет часть функций этой глобальной ОС. Распределенная ОС объединяет все компьютеры сети в том смысле, что они работают в тесной кoоперации друг с другом для эффективного использования всех ресурсов компьютерной сети. Распределенная ОС, динамически и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин работать как виртуальный унипроцессор. Пользoватель распределенной ОС, вообще говоря, не имеет сведений о том, на какой машине выполняется его работа.
Появление сетей, предназначенных для взаимной связи различных компьютеров, привело к разработке средств, а затем и операционных систем, позволяющих осуществлять управление, так называемой, мультимашинной архитектурой, то есть совокупности полносоставных компьютеров (процессоры, память, вводы-выводы. ), связанных в сеть. В этом случае речь идет о распределенных вычислительных системах.
Архитектура распределенной системы: каждый компьютер является автономным модулем, состоящим из ЦП, памяти и периферийных устройств. Соответствие модели не нарушается даже несмотря на то, что компьютер не располагает локальной файловой системой: он должен иметь периферийные устройства для связи с другими машинами, а все принадлежащие ему файлы могут располагаться и на ином компьютере. Физическая память, доступная каждой машине, не зависит от процессов, выполняемых на других машинах. Этой особенностью распределенные системы отличаются от сильносвязанных многопроцессорных систем. Соответственно, и ядро системы на каждой машине функционирует независимо от внешних условий эксплуатации распределенной среды.
Существует два типа распределенных операционных систем. Мультипроцессорная операционная система (multiprocessor operating system) управляет ресурсами мультипроцессора. Мультикомпьютерная операционная система (multicomputeroperating system) разрабатывается для гомогенных мультикомпьютеров.
Существует большое сходство между мультимашинной организацией и архитектурой слабо связанных мультипроцессоров; в обоих структурах процессоры связаны через канал связи, а не через общую память. Различия заключаются в следующем: 1)в случае распределенных систем (мультимашинная архитектура) связь между процессорами осуществляется относительно медленно (сеть), а системы независимы; 2)в случае параллельных систем (мультипроцессорная архитектура) связь осуществляется быстро (шина), а системы относительно сильно связаны между собой.
Распределенные операционные системы, такие как Mach и Chorus могут применяться и при мультимашинной, и при мультипроцессорной организации.
Распределенные системы традиционно делятся на следующие категории:
1)периферийные системы, представляющие собой группы машин, отличающихся ярковыраженной общностью и связанных с одной (обычно более крупной) машиной. Периферийные процессоры делят свою нагрузку с центральным процессором и переадресовывают ему все обращения к операционной системе. Цель периферийной системы состоит в увеличении общей производительности сети и в предоставлении возможности выделения процессора одному процессу в операционной среде UNIX. Система запускается как отдельный модуль; в отличие от других моделей распределенных систем, периферийные системы не обладают реальной автономией, за исключением случаев, связанных с диспетчеризацией процессов и распределением локальной памяти.
2)распределенные системы типа «Newcastle», позволяющие осуществлять дистанционную связь по именам удаленных файлов в библиотеке. Удаленные файлы имеют спецификацию (составное имя), которая в указании пути поиска содержит специальные символы или дополнительную компоненту имени, предшествующую корню файловой системы. Реализация этого метода не предполагает внесения изменений в ядро системы, вследствие этого он более прост, чем другие методы, рассматриваемые в этой главе, но менее гибок.
3)абсолютно «прозрачные» распределенные системы, в которых для обращения к файлам, расположенным на других машинах, достаточно указания их стандартных составных имен; распознавание этих файлов как удаленных входит в обязанности ядра. Маршруты поиска файлов, указанные в их составных именах, пересекают машинные границы в точках монтирования, сколько бы таких точек ни было сформировано при монтировании файловых систем на дисках.
Распределенная организация операционной системы позволяет упростить работу пользователей в сетевых средах. В распределенной операционной системе реализованы механизмы, которые дают возможность пользователю представлять и воспринимать сеть в виде традиционного однопроцессорного компьютера. Характерными признаками распределенной организации операционной системы являются: наличие единой справочной службы разделяемых ресурсов, единой службы времени, использование механизма вызова удаленных процедур (RPC) для прозрачного распределения программных процедур по машинам, многонитевой обработки, позволяющей распараллеливать вычисления в рамках одной задачи и выполнять эту задачу сразу на нескольких компьютерах сети, а также наличие других распределенных служб.
Проекты для создания распределенных операционных систем
Проект Globe посвящен созданию крупных распределенных систем с помощью разделяемых объектов и связанных с ними методов. Разработчики могут генерировать приложения с использованием программного обеспечения промежуточного слоя, а не создавать сетевые программы непосредственно на базе транспортного уровня, как это происходит сейчас. Активные копии объектов, которые взаимодействуют на одноранговой основе, будут доступны одновременно на всех машинах в распределенной системе, и все пользователи смогут вызывать методы объектов. Подход позволит системам работать без централизованного хранилища объектов, что дает возможность сократить сетевой трафик и избежать ошибок, связанных с недоступностью хранилища. Globe расширяет функциональность распределенных систем и увеличивает скорость за счет выполнения таких операций, как возвращение информационного наполнения Web-страницы, получение сообщения электронной почты, предоставление доступа к файлу или поиск имени ресурсов в каталоге.
Opus базируется на проекте WebOS, который был реализован в университете Беркли с целью предоставления распределенным приложениям служб операционной системы, в том числе механизмов обнаружения ресурсов и управления ими, удаленного выполнения процессов, аутентификации и защиты. Opus добавляет к оболочке WebOS механизм перекрытия (overlay), который позволяет приложениям прозрачным образом передавать базовой сети свои требования на ресурсы, а затем использовать предоставленные ресурсы. Это крайне важно, поскольку на одной машине разработчики приложений могут для предоставления служб использовать возможности локальной операционной системы. Однако в распределенной системе, разработчики приложений должны сами создавать службы в соответствии с множеством стандартов и множеством серверов приложений, что требует больших усилий со стороны программиста и немалых системных ресурсов. Opus решает эту проблему, предоставляя по Internet базовые службы операционных систем, необходимые для создания приложений, которые являются распределенными, доступными, масштабируемыми и динамически реконфигурируемыми.
Метакомпьютинг
Метакомпьютинг — одно из направлений развития сети Интернет, ставящее перед собой задачу стирания барьеров между разнородными, пространственно распределенными вычислительными системами, образовав сверхкомпьютер или метакомпьютер, который для пользователей и программистов выступал бы как единая вычислительная среда, доступная непосредственно с рабочего места (ПК или рабочей станции).
Идея объединения ресурсов отдельных компьютеров появилась еще в 60-е годы. В статье «Что такое грид? Три критерия» Ян Фостер приводит высказывание Лена Клейнрока, датируемое 1969 годом: «Вероятно, мы скоро увидим распространение «компьютерных коммунальных услуг», которые, подобно электричеству и телефону придут в дома и офисы по всей стране.» Именно 60-е годы характеризуются бурным развитием интерактивных многотерминальных систем разделения времени. В таких системах компьютер отдавался в распоряжение нескольким пользователям. Каждый пользователь получал собственный терминал, с помощью которого мог вести диалог с компьютером. И хотя вычислительная мощность оставалась полностью централизованной, функции ввода-вывода стали распределенными. Такие системы стали первым шагом на пути к созданию локальных сетей. Первые локальные сети начали появляться только в 70-е годы. Это было связано с технологическим прорывом в области создания компьютеров, появлением больших интегральных схем. Середина 80-х годов характеризуется появлением стандартных технологий объединения компьютеров в сеть, таких как Ethernet, Arcnet, Token Ring, Token Bus, несколько позже FDDI. Мощным стимулом для их появления послужили персональные компьютеры. Эти массовые продукты явились идеальными элементами для построения сетей – с одной стороны, они были достаточно мощными, а с другой – явно нуждались в объединении своей вычислительной мощности для решения сложных задач. Таким образом, на рубеже 90-х годов были созданы все условия для начала работ над программным обеспечением, призванным объединить вычислительные ресурсы: массовый выпуск персональных компьютеров и развитая высокоскоростная сетевая инфраструктура. Термин «метакомпьютинг» возник в начале 90-х годов. Со временем это понятие эволюционировало. В те времена метакомпьютинг означал объединение нескольких разнородных вычислительных ресурсов в локальной сети организации для решения одной задачи. Основная цель построения метакомпьютера заключалась в оптимальном распределении частей работы по вычислительным системам различной архитектуры и мощности. Например, предварительная обработка данных могла производиться на пользовательской рабочей станции, основное моделирование – на векторно-конвейерном суперкомпьютере, а визуализация результатов – на специальной графической станции. В дальнейшем исследования в области метакомпьютинга развивались путем перехода от локальных вычислительных сред к глобальным средам. Компьютерные глобальные сети к средине 90-х годов, работающие на основе скоростных цифровых каналов (таких, как оптоволокно), существенно расширили набор своих услуг и догнали в этом отношении локальные сети. Стало возможным создание служб, работа которых связана с доставкой пользователю больших объемов информации в реальном масштабе времени. Для глобальных сред стала актуальной задача однородного доступа к вычислительным ресурсам.
Метакомпьютерные системы можно характеризовать следующим:
1. Объединяют большое количество компьютеров с разной архитектурой и разной мощностью посредством локальной или глобальной среды.
2. Предоставляют прозрачный однородный доступ к метакомпьютерам.
3. Имеют динамическую конфигурацию: вычислительные системы могут как подключаться, так и отключаться от системы, не нарушая функциональности всей системы.
4. Вычислительные узлы практически не взаимодействуют друг с другом
Распределенная операционная среда — новый класс программного обеспечения, требующийся для воплощения идеи метакомпьютинга
Грид – распределенная среда, и ее функционирование обеспечивается специальной формой программного обеспечения (ПО) – сервисами. Сервисы обладают сетевым интерфейсом, благодаря чему становится возможным удаленное обслуживание клиентов. В отличие от модели “клиент-сервер” в Грид тот или иной набор сервисов устанавливается на каждом ресурсе, хотя традиционное серверное обслуживание также не исключается.
Источник
4.3. Варианты реализации распределенных операционных систем
Наиболее удачным (по современным меркам) способом, с помощью которого распределенная система может достичь определенного уровня однородности, несмотря на различие аппаратного обеспечения отдельных объектов сети, является установка специального уровня программного обеспечения поверх сетевой операционной системы. Этот уровень, называемый промежуточным программным обеспечением (а также связующим или посредническим программным обеспечением), предназначен для того, чтобы скрыть гетерогенность и распределенную природу базового набора ВМ. Промежуточное программное обеспечение предоставляет определенные структуры данных и операции, позволяющие процессам и пользователям на значительно удаленных машинах однородно взаимодействовать друг с другом.
Один из типов такого программного обеспечения представляет собой промежуточное программное обеспечение, основанное на документах. Типичным представителем такого подхода является основная идея «Всемирной паутины» WWW (World Wide Web), которая заключается в том, что распределенная система должна выглядеть как гигантская коллекция документов, связанных гиперссылками.
Другой подход состоит в том, чтобы придать распределенной системе вид огромной всемирной файловой системы. Использование модели файловой системы для распределенной системы означает, что имеется единая глобальная файловая система с пользователями по всему миру, способными читать и писать файлы, к которым у них есть доступ. Для связи процессов используется файловый обмен. Один процесс записывает данные в файл, а другой процесс считывает их оттуда. В этом случае возможно использование одной из следующих моделей: модели закачивания-скачивания и модели удаленного доступа. В первой модели чтобы получить доступ к файлу, процесс сначала считывает его с удаленного сервера, на котором хранится этот файл. Если для файла разрешено только чтение, то файл читается локально для более высокой производительности. Если файл должен быть записан, он записывается также локально. Когда процесс заканчивает работу с файлом, обновленный файл отправляется обратно на сервер. В модели удаленного доступа файл остается на сервере, а клиент посылает серверу команды для выполнения работы на месте. Преимущество модели закачивания-скачивания заключается в ее простоте и том факте, что перенос файла целиком эффективнее, чем перенос его по частям. К недостаткам данной модели относится необходимость наличия достаточно большого объема памяти для хранения файла целиком локально. К тому же перенос файла целиком, когда требуется только его часть, представляет собой излишние расходы. Наконец, при наличии нескольких конкурирующих пользователей возникает проблема непротиворечивости файлов. Примером рассмотренного подхода является файловая система AFS (Andrew File System – файловая система, названная в честь спонсоров проекта ее разработки).
В следующим подходе, связанном с использованием промежуточного программного обеспечения, предлагается называть все, что есть в системе, объектами. При этом объект – это набор переменных, объединенных вместе с набором процедур доступа к ним, называемых методами. Процессам не разрешается получать доступ к переменным напрямую. Вместо этого они должны вызывать методы. Примером объектного промежуточного программного обеспечения является технология CORBA (Common Object Request Broker Architecture – архитектура распределенных объектных приложений). Технология CORBA представляет собой систему типа клиент-сервер, в которой клиентский процесс может осуществлять операции с объектами, расположенными на серверах. Архитектура CORBA была разработана для неоднородной системы, состоящей из разнообразных аппаратных платформ и операционных систем. Чтобы клиент на одной платформе мог вызвать сервер на другой платформе, между клиентом и сервером располагаются специальные программные посредники.
Еще одним известным подходом является использование промежуточного программного обеспечения, которое называется координационным. Пример этого подхода – новая система связи и синхронизации Linda. В системе Linda независимые процессы общаются через абстрактное пространство так называемых кортежей. Это пространство является глобальным по отношению ко всей системе, и процессы на любой ВМ могут вставлять кортежи в пространство кортежей или удалять их из него, независимо от того, как и где они хранятся. Для пользователя пространство кортежей выглядит как большая глобальная общая память.
Другими примерами моделей, основанных на координации, являются модель «публикация-подписка» и система Jini.
Модель «публикация-подписка» состоит из нескольких процессов, соединенных широковещательной сетью. Каждый процесс может производить информацию, потреблять информацию, а также делать то и другое. Когда у производителя информации есть новая информация, он рассылает ее всем по сети в виде кортежа. Это действие называется публикацией. Каждый кортеж содержит иерархически структурированную строку темы публикации с полями, разделенными точками. Процессы, которых интересуют определенные темы, могут подписаться на них. Чтобы подписаться на какую-либо тему, нужно сообщить ее специальному демону кортежей, работающему на той же ВМ, что и процесс. Демон кортежей на каждой ВМ копирует все рассылаемые кортежи в оперативную память. Затем он просматривает строку темы сообщения, чтобы определить, какие из процессов заинтересованы в получении этой информации, пересылая каждому такому процессу копию полученного сообщения. Кортежи также могут рассылаться по глобальным сетям.
Система Jini состоит из большого количества самодостаточных Jini-устройств, каждое из которых предлагает другим устройствам одну услугу или несколько видов услуг. Jini-устройство может быть установлено в сеть и мгновенно начать предоставление услуг без сложных процедур установки. Отметим, что устройства устанавливаются не в ВМ, как в традиционном случае, а именно в сеть. Jini-устройство может быть не только ВМ, но также принтером, сотовым телефоном или другим устройством с центральным процессором, оперативной памятью и соединением с сетью (возможно, беспроводным). Система Jini представляет собой свободную федерацию Jini-устройств, которые могут входить в систему и выходить из системы по своему желанию, без централизованного управления. Когда Jini-yстройство хочет присоединиться к федерации, оно передает по локальной сети с помощью широковещания пакет с вопросом о наличии в данном районе службы поиска. Для нахождения службы поиска используется специальный протокол обнаружения (один из нескольких собственных протоколов системы Jini). В качестве альтернативы новое Jini-устройство может ждать, пока не придет одно из периодически рассылаемых объявлений службы поиска. Если служба поиска видит, что новое устройство хочет зарегистрироваться, она посылает в ответ программу, выполняющую регистрацию. Затем новое устройство исполняет полученную программу, связывающуюся со службой поиска и регистрирующуюся в ней на некий установленный интервал времени, Пока не истек данный интервал времени, устройство может перерегистрироваться, если оно того пожелает. Такая схема означает, что Jini-устройство может покинуть систему, просто выключившись, и о существовании этого устройства система вскоре забудет. Таким образом, не требуется ни специальной процедуры выхода из системы, ни централизованного управления. Концепция регистрации на определенный срок называется получением аренды. Обратим внимание, что поскольку программа регистрации устройства загружается в устройство по сети, эта программа может изменяться по мере развития системы, для чего не потребуется изменений аппаратного и программного обеспечения в самом устройстве.
Более подробное изучение строения распределенных операционных систем выходит за рамки данного учебного пособия.
В заключении отметим, что в литературных публикациях, посвященных операционным системам, наблюдаются разные подходы к терминологии, касающейся ОС многомашинных вычислительных систем. Иногда все операционные системы, обеспечивающие функционирование ММВС (и, в частности, вычислительных сетей), называют распределенными, а иногда, наоборот, сетевыми. Для того, чтобы подчеркнуть те отличия между сетевыми и распределенными операционными системами, которые были рассмотрены в данном разделе, часто применяют термин «истинно распределенные» ОС, значение которого совпадает с принятой в настоящем учебном пособии трактовкой понятия распределенных операционных систем.
Эффективным способом повышения производительности и надежности вычислительной техники является объединение отдельных автономных ВМ в многомашинные вычислительные системы.
Различают два класса многомашинных вычислительных систем: ММВС сосредоточенного типа и ММВС распределенного типа (которые обычно называют распределенными вычислительными системами или вычислительными сетями).
Существенным отличием ММВС от автономных (одно- или многопроцессорных) ВМ является то, что каждая машина, входящая в состав ММВС, имеет свою собственную оперативную память. Вследствии такого архитектурного построения механизмы организации межпроцессной взаимосвязи в ММВС и в автономных ВМ принципиально различны. В автономных машинах базой для взаимодействия процессов служит общая разделяемая память. В ММВС при отсутствии какой бы то ни было разделяемой памяти основой межпроцессного взаимодействия служит обмен физическими пакетами данных (так называемыми сообщениями) посредством некоторой коммуникационной среды.
В наиболее простом варианте системные средства обеспечения связи могут быть сведены к двум основным системным вызовам (примитивам): один – для отправки сообщения, другой – для получения сообщения. Системные вызовы могут быть блокирующими (синхронными) или неблокирующими (асинхронными).
В более сложной форме передача сообщений скрыта от пользователя под видом вызова удаленной процедуры RPC. Идея вызова удаленных процедур состоит в расширении механизма передачи управления и данных внутри программы, выполняющейся на одной ВМ, на передачу управления и данных через коммуникационные каналы, связывающие разные ВМ.
Операционные системы вычислительных сетей обычно называют сетевыми ОС. В вычислительных сетях есть узкоспециализированные правила, описывающие типы и форматы сообщений, которые могут посылаться в этих сетях, а также регламентирующие ответы на эти сообщения. Набор таких правил, с помощью которых машины взаимодействуют в сети, называется протоколом. Понятие протокола является фундаментальным понятием сетевых ОС, позволяющим определить и описать конкретные функции тех програмных частей операционных систем, которые отвечают за взаимодействие удаленных процессов.
Сетевые средства связи обычно строятся по многослойному (многоуровневому) принципу. Каждый уровень такой многослойной иерархии может взаимодействовать непосредственно только со своими вертикальными соседями, руководствуясь вертикальными протоколами, которые принято называть интерфейсами.
Самым нижним уровнем в многослойных сетевых иерархиях является уровень, на котором реализуется реальная физическая связь между двумя узлами сети на основе горизонтального протокола физического взаимодействия. Все одинаковые уровни, лежащие выше физического, виртуально обмениваются данными посредством соответствующих горизонтальных протоколов.
Всю совокупность вертикальных и горизонтальных протоколов, достаточную для организации взаимодействия удаленных процессов в вычислительных сетях, принято называть семейством протоколов или стеком протоколов. Сети, построенные на основе разных стеков протоколов, могут быть объединены между собой с использованием вычислительных устройств, осуществляющих трансляцию из одного стека протоколов в другой.
Наиболее совершенным и перспективным классом ОС являются так называемые распределенные операционные системы. Распределенная система создает для пользователя полную иллюзию того, что он работает в обычной автономной системе.
В распределенных ОС к лежащей в основе системы вычислительной сети должна быть добавлена некая общая модель, которая способна превратить множество слабосвязанных ВМ в однородную «конструкцию», базирующуюся на единой концепции.
Одним из наиболее эффективных способов построения распределенных ОС является установка специального промежуточного уровня программного обеспечения поверх сетевой операционной системы. Этот уровень предоставляет однородный уровень для взаимодействующих с ним приложений. Среди различных типов промежуточного программного обеспечения следует выделить документное, файловое, объектное и координационное. Примерами промежуточного программного обеспечения служат такие системы, как WWW, AFS, CORBA, Linda, Jini.
Источник