Информационные технологии - Учебное пособие (Машкина М.Н.)

7.5    5.5. мультипроцессоры и мультимашины

В данном разделе речь пойдет об аппаратной архитектуре,на базе которой функционируют методы распределенной обработки данных - архитектуре, которую мы называем мультимашинной , чтобы отличить ее от мультипроцессорной архитектуры. Мы увидим, что это отличие не всегда легко заметно, так как технический прогресс ведет к размыванию границ.

Мультипроцессоры

В целях увеличения вычислительных возможностей и для достижения большего параллелизма по сравнению с мультипрограммированием, предлагаемым операционными системами, на классические монопроцессорные машины с фоннеймановской архитектурой были установлены дополнительные процессоры. Подобная мультипроцессорная архитектура появилась в начале 1960 г.г. (Burroughs 6000 в 1963 г., IBM/360-67 в 1966 г.), гораздо раньше, чем были разработаны вычислительные сетеи. Системы, разрабо-анные для мультипроцессорных машин, называются параллельными операционными системами (Parallel Operating Systems). Мультипроцессорные машины подразделяются на два семейства:

- жестко связанные или жестко соединенные мультипроцессоры (tightly coupled), в которых процессоры связаны через общую память (рис.26.1.);

- слабо связанные или слабо соединенные мультипроцессоры (loosely coupled), в которых процессоры связаны через средство связи (как правило, шину), отличное от общей памяти (рис.26.2.).

Необходимо отметить, что эти виды архитектуры могут сочетаться между собой: каждый процессор может обладать локальной памятью и делить с остальными общую память. Кроме того, в настоящее время процессоры обладают одним или двумя уровнями кэширования.

Рис2.1. Жестко связанные мультипроцессоры

Рис 26.2.Слабо связанные процессы

Мультимашинная организация

Появление сетей, предназначенных для взаимной связи различных компьютеров, привело к разработке средств, а затем и операционных систем, позволяющих осуществлять управление, так называемой, мультимашинной архитектурой (рис.26.3.), то есть совокупности полносоставных компьютеров (процессоры, память, вводы-выводы и т.д.), связанных в сеть. В этом случае речь идет о распределенных вычислительных системах.

Рис 26.3.Мультимашинная организация

Следует отметить большое сходство между мультимашинной организацией и архитектурой слабо связанных мультипроцессоров; в обоих структурах процессоры связаны через канал связи, а не через общую память. Различия заключаются в следующем: - в случае распределенных систем (мультимашинная архитектура) связь между процессорами осуществляется относительно медленно (сеть), а системы независимы; - в случае параллельных систем (мультипроцессорная архитектура) связь осуществляется быстро (шина), а системы относительно сильно связаны между собой.

Не существует точного определения этих типов архитектуры и этих систем, кроме того, между этими двумя понятиями наблюдается сходство. Распределенные операционные системы, такие как Mach и Chorus могут применяться как при мультимашинной, так и при мультипроцессорной организации. Впрочем, существует несколько вариантов UNIX для мультипроцессоров (на Cray, на Sun), в которых сосуществуют совершенно различные средства управления распределением по сети и управления связью между процессорами через шину. В данной книге мы рассматриваем использование средств, преназначенных для применения ресурсов, распределенных между различными машинами, доступ к которым возможен через сеть. Мы не рассматриваем ни средства, направленные исключительно на использование мультипроцессорной архитектуры, ни средства, предназначенные для работы в режиме реального времени, так как целью нашего исследования является совместная работа нескольких машин.

Терминология

Трудно провести различие между терминами "распределенный", "разделенный" и "совместный".

- данные и обработка являются "распределенными" или "разделенными", то есть, выполнение операции требует использования нескольких процессоров;

- термин "совместный" (cooperatif) является более специфическим: диалог между двумя прикладными системами с целью осуществления некой задачи.

В дальнейшем мы будем использовать все три термина (при этом слово "распределенный" лучше всего передает смысл английского "distributed", откуда и название книги). Возможность взаимодействия определяют как способность систем к совместному использованию данных или к совместной работе с использованием стандартных интерфейсов. Она подразумевает возможность связи между машинами, изготовленными различными фирмами. Возможность взаимодействия подразумевает понятие "открытых систем",то есть систем, способных к коммуникации в неоднородной среде.

Распределённая обработка данных

С точки зрения хронологии, взаимодействие между программами последовательно приобретало следующие формы: - обмен: программы различных систем посылают друг другу сообщения (как правило, файлы); - разделение: имеется непосредственный доступ к ресурсам нескольких машин (совместное пользование файлом, например); - совместная работа: машины играют в реализации программы взаимодополняющие роли.

Рассмотрим пример, иллюстрирующий эту эволюцию. Речь пойдет о проектировании в области механики; традиционный подход заключается в следующем: - построение "проволочной модели" (maillage) (графического представления геометрии физической модели) на рабочей станции; - перенос на ЭВМ Cray файла модели, вводящего код вычислений; - результаты расчетов, выполненных на ЭВМ Cray переносятся на рабочую станцию и обрабатываются графическим постпроцессором.

Этот способ обладает следующими недостатками: - обмен данными производится посредством переноса файлов с одной машины на другую; - обработка файлов осуществляется последовательно, в то время как расчеты на ЭВМ Cray только выиграли бы, если было бы возможно обеспечить взаимодействие с пользователем, используя графические и эргономические возможности рабочей станции, а некоторые расчеты, осуществляемые на последней, лучше было бы выполнить на машине Cray.

Для того, чтобы избавиться от этих неудобств, необходимо перейти от вышеназванных вариантов решения задач к применению методики совместной работы, на основе понятия "прозрачности". Пользователь будет видеть только одну машину (свою станцию) и только одну прикладную программу. Распределенная обработка данных, таким образом, представляет собой программу, выполнение которой осуществляется несколькими системами, объединенными в сеть. Как правило, расчетная часть программы выполняется на мощном процессоре, а визуальное отображение выводится на рабочей станции с улучшенной эргономичностью. Разделение опирается на модель "клиент-сервер", к которой мы еще вернемся. Этот вид обработки данных организуется по принципу треугольника (рис.26.4.):

- пользователь обладает рабочей станцией;

- решение задач требует обращения к устройству обработки данных (спецпроцессору, например) и к серверу данных, и все это прозрачно для пользователя.

Рис 26.4. Треугольная организация вычислительного процесса

Цели распределенной обработки данных

Целью распределенной обработки данных является оптимизация использования ресурсов и упрощение работы пользователя (что может вылиться в усложнение работы разработчика). В основе этого лежат:

- Оптимизация использования ресурсов.

Термин ресурс, в данном случае используется в самом широком смысле: мощность обработки (процессоры), емкость накопителей (память или диски), графические возможности (2-х или 3-х мерный графический процессор, в сочетании с растровым дисплеем и общей памятью), периферийные устройства вывода на бумажный но- ситель (принтеры, плоттеры). Эти ресурсы редко бывают собраны на одной машине: ЭВМ Cray обладает мощными расчетными возможностями, но не имеет графических возможностей, а также возможностей эффективного управления данными. Отсюда принцип совместной работы различных систем, используя лучшие качества каждой из них, причем пользователь имеет их в распоряжении при выполнении только одной программы.

- Упрощение работы пользователя.

Действительно, распределенная обработка данных позволяет: - повысить эффективность посредством распределения данных и видов обработки между машинами, способными наилучшим образом управлять ими; - предложить новые возможности, вытекающие из повышения эффективности; - повысить удобство пользования. Пользователю более нет необходимости разбираться в различных системах и осуществлять перенос файлов.

Основные недостатки этого подхода заключаются в следующем: - зависимость от характеристик и доступности сети. Программа не сможет работать, если сеть повреждена. Если сеть перегружена, эффективность уменьшается, а время реакции систем увеличивается. - проблемы безопасности. При использовании нескольких систем увеличивается риск, так как появляется зависимость от наименее надежной машины сети.

C другой стороны, преимущества весьма ощутимы:

- распределение и оптимизация использования ресурсов. Это основная причина внедрения распределенной обработки данных;

- новые функциональные возможности и повышение эффективности при решении задач;

- гибкость и доступность. В случае поломки одной из машин, ее пытаются заменить другой, способной выполнять те же функции.

Распределение и параллелизм

Следует отметить, что распределение (или разделение) не яв- ляется синонимом параллелизма. Распределение видов обработки состоит в том, чтобы поручить их машинам, наилучшим образом приспособленным к этому. Параллелизм подразумевает понятие одновременности обработки. Распределение позволяет иногда проводить параллельную обработку. Мы вернемся к этому в следующих главах при рассмотрении средств обработки данных.

Прозрачность

Прозрачностью называется возможность доступа к ресурсам или услугам, не зная их местонахождения. С точки зрения прикладного программиста, речь идет о возмож- ности использования одинаковых примитивов доступа, независимо от местонахождения службы или необходимого ресурса. У пользователя имеется только один прикладной интерфейс и он видит перед собой только один компьютер. С более концептуальной точки зрения, прозрачность определяется как возможность видеть систему как единый организм, а не как собрание независимых друг от друга объектов. Различают несколько разновидностей прозрачности, в частности:

- прозрачность доступа: к локальным или удаленным объектам можно обращаться посредством одинаковых операций;

- прозрачность местонахождения: объекты должны быть доступны без необходимости знать их физическое местоположение;

- прозрачность одновременности доступа: несколько пользователей должны иметь возможность одновременного доступа к данным, без нежелательных последствий;

- прозрачность копирования: должна существовать возможность копировать данные из файлов или из других объектов в целях повышения эффективности или обеспечения доступности незаметно для пользователей;

- прозрачность при неисправностях: пользователи или прикладные программы должны иметь возможность завершить свои задания, даже в случае неисправностей аппаратной или программной части;

- прозрачность при динамических изменениях конфигурации: система может динамически менять свою конфигурацию, в целях повышения эффективности и в зависимости от нагрузки.

Технологии "клиент-сервер".

Клиенты (пользователи сети) взаимодействуют через локальные и глобальные сети с различными программными приложениями, работающими на серверах. Корпоративные данные могут храниться в корпоративной или глобальной сети, а также на нескольких серверах ЛВС, входящих в состав корпоративной сети.

Архитектура клиент-сервер (Client-server architecture) – архитектура распределённой вычислительной системы, в которой приложение делится на клиентский и серверный процессы. Сервер владеет и распоряжается информационными ресурсами системы, а клиент может пользоваться ими.

Сервер – это компьютер, выполняющий обработку запроса. Он отвечает за хранение данных, организацию доступа к ним и передачу данных клиенту. Серверный процесс в архитектуре клиент-сервер – процесс, который выполняет на сервере запрос клиентского процесса и отсылает ответ клиентскому процессу.

Клиент – это задача, рабочая станция, пользователь. Он может сформировать запрос для сервера: считать файл, осуществить поиск записи и т.п. Клиентский процесс в архитектуре клиент-сервер – процесс, который выполняется на стороне клиента и посылает запрос серверному процессу на выполнение некоторой задачи. Обычно клиентский процесс:

управляет пользовательским интерфейсом;

контролирует вводимые пользователем данные;

распределяет запросы серверным процессам;

может выполнять бизнес-логику приложений.

Как правило, клиент и сервер территориально отделены друг от друга, и в этом случае они образуют систему распределённой обработки данных.

Для современных СУБД архитектура “клиент-сервер” фактически является стандартом. Используемые в ней прикладные программы имеют распределённый характер, т.е. часть функций приложений реализована в программе-клиенте, а другая – в программе-сервере.

Ныне распространяется концепция GRID, представляющая набор стандартизированных служб, обеспечивающих надёжный, совместимый, дешёвый и повсеместный доступ к информационным и вычислительным ресурсам. Она подразумевает интеграцию на основе управляющего и оптимизирующего ПО нового поколения. GRID не только концепция, но и работающие технологии, применяемые прежде всего для решения потоков/наборов однотипных задач. Некоторые технологии GRID начинают использовать в корпоративных системах.

Архитектура клиент/сервер стала сегодня темой номер один. Не многие технологии отличаются столь быстрыми темпами распространения. Если обычно их внедрение требует 14 - 17лет, то для среды клиент/сервер данный срок, возможно, будет вдвое меньше.

В последние два года все крупные компьютерные издания регулярно публикуют статьи по технологии и вычислениям клиент/сервер. Появились и новые журналы, посвященные данной технологии, издательства выпускают множество книг по этой тематике. В настоящее время более 50\% новых программных проектов и информационных систем - это проекты типа клиент/сервер (или называются таковыми).

Вычисления в среде клиент/сервер представляют собой наиболее быстроразвивающееся направление компьютерной отрасли. Это впечатляющая технология, дающая реальные преимущества пользователям и обещающая стать доминирующим способом обработки данных. Очевидно, ее применение будет расширяться в 90-е и последующие годы, изменяя характер вычислений и создаваемых приложений. Она позволит перейти к абсолютно новым методам создания, выполнения и обслуживания компьютерных программ. Однако принципы этой технологии далеко не всегда понимаются правильно. К тому же новые технологии, независимо от своей популярности, редко бывают с самого начала совершенными, поэтому имеют как положительные, так и отрицательные стороны. Этот аспект также заслуживает подробного анализа. Но прежде нужно определить, что это такое - модель обработки клиент/сервер.

Традиционно компьютерные программы функционировали на одной машине. Они либо были приспособлены для большой ЭВМ, где все вычисления выполняются центральным процессором, либо являлись автономными приложениями, в которых обработка осуществлялась на персональном компьютере или рабочей станции. Приложения клиент/сервер отличаются от них тем, что выполняются как на станции-клиенте, так и на сервере, объединяя лучшие стороны технологии автономных приложений и программ для мэйнфреймов в общую, связанную среду. Таким образом, вычисления клиент/сервер - это относительно новая модель, представляющая собой не что иное, как распределение обработки по нескольким компьютерам (ПК и рабочим станциям).

Термины "клиент" и "сервер", в сущности, обозначают роли, которые играют различные компоненты в среде распределенных вычислений. Эти компоненты необязательно должны работать на разных машинах (хотя обычно это именно так). Технология клиент/сервер - это распределение прикладной программы по двум логически различным компонентам, каждый из которых решает свои задачи. Обычно клиент посылает на сервер запросы на выполнение определенной работы. Задачей сервера является обработка подобных запросов и возврат результатов клиенту. Этот процесс чаще всего осуществляется на физически разделенных компьютерах в рамках того или иного типа физической инфраструктуры локальной сети. Обычно серверные компьютеры намного мощнее и поэтому лучше приспособлены для выполнения заданий, поступающих от других систем.

Какие же преимущества сулит архитектура клиент/сервер по сравнению с традиционной однокомпьютерной средой? При ее корректной реализации можно получить систему управления информацией с более оптимальным соотношением цена/производительность, допускающую простое расширение, наращивание и адаптацию к меняющимся требованиям. Решения на основе архитектуры клиент/сервер составляют очень важную часть общей информационной стратегии предприятия, но их нельзя априори считать верным выбором для приложения любого типа. Например, реализовать в виде обычной среды клиент/сервер крупную систему заказа авиабилетов, имеющую сотни и тысячи терминалов и распределенные по всему миру узлы, практически невозможно. Однако она вполне подойдет для выполнения локализованных приложений бухгалтерского учета и решения производственных задач подразделения предприятия. Понимание того, что представляет собой архитектура клиент/сервер, позволяет корректно применять такие системы там, где они будут работоспособны и действительно помогут сэкономить средства.

Эволюция вычислений

Приложение на большой ЭВМ - это единый модуль, отвечающий за взаимодействие с пользователем и управление данными в многопользовательской среде. Довольно быстро стало очевидно, что такая стратегия разработки приложений неэффективна, поскольку для каждого из них приходилось создавать один и тот же компонент управления данными. Вследствие этого приложения на больших и мини-ЭВМ были разделены на две части: внешний интерфейс, обеспечивающий взаимодействие с пользователем, и внутреннюю подсистему, отвечающую за управление данными. Этот внутренний компонент (например, СУБД) представляет собой центральный модуль, используемый с каждым новым интерфейсным приложением. Так как множество интерфейсных компонентов смогли получить доступ к данным, управляемым одним внутренним модулем, разделение приложения на интерфейсную и внутреннюю составляющие обеспечило системам большую гибкость.

Несмотря на такое положительное качество, как централизация и более простое администрирование, с увеличением числа пользователей, которым необходим доступ к машине, обработка данных на большой ЭВМ требует все большей вычислительной мощности. Но модернизация и расширение подобных систем обходятся довольно недешево. Операционные системы, процессоры, приложения и память на диске, необходимые для обслуживания предприятия, стоили очень дорого. Это усугублялось и тем обстоятельством, что данный рынок контролировали несколько крупных компаний.

В 80-е годы произошло то, что навсегда изменило характер вычислений: появились персональные компьютеры и рабочие станции, у которых несколько преимуществ перед большими ЭВМ. Персональные рабочие станции - это недорогие и простые в использовании компьютеры, обеспечивающие сегодня вычислительные возможности и производительность, сопоставимые с уровнем мэйнфреймов. Пользователь может выбрать тип рабочей станции, операционной системы и приложений, лучше отвечающих его потребностям. Переход к независимым персональным вычислениям не только сулит преимущества, но и порождает свои проблемы. В частности, корпоративная информация, ранее централизованная и доступная на большой ЭВМ всем сотрудникам, теперь распределяется между мэйнфреймом и персональными рабочими станциями. Таким образом, выигрыш в отношении цена/производительность и простоте использования, который обеспечивает персональная обработка данных, легко может быть сведен на нет потерями в продуктивности труда коллективов, которым необходим доступ ко всей распределенной информации. Кроме того, пользователи несвязанных персональных рабочих станций не могут совместно эксплуатировать другие ресурсы: диски, принтеры, модемы и т.д.

Решением этих проблем стало быстрое распространение модели вычислений с сетью и файловым сервером. Сегодня персональный компьютер или рабочая станция, как правило, подключается к локальной сети, которая обеспечивает преимущества коллективных вычислений, сохраняя простоту общения с ПК и в то же время предоставляя пользователям возможность совместно работать с данными и периферией, как в системах на базе мэйнфрейма. В этом случае сетевые пользователи обращаются к информации на файловом сервере -центральном узле, где хранятся общедоступные файлы данных. Обычно файловый сервер поддерживает и совместную эксплуатацию периферийных устройств, таких как принтеры и модемы. В качестве файлового сервера применяется специализированный компьютер с большим объемом дисковой памяти. При такой схеме приложение, функционирующее на ПК, считывает и записывает файлы, обмениваясь данными с сетевым файловым сервером, который не принимает участия в обработке, а просто хранит файлы, необходимые для выполняемых на ПК программ. При операции сохранения данные передаются по сети обратно на файловый сервер.

Однако отдельные свойства модели вычислений на базе сети с файловым сервером не позволяют ей адекватно обслуживать требующие высокой производительности многопользовательские приложения с разделяемыми данными, которые легко поддерживают большие ЭВМ. Кроме того, такая модель не обеспечивает необходимого для многих приложений согласованного доступа нескольких пользователей к одному набору данных. Здесь сервер имеет дело с файлами – очень большими наборами данных - и не допускает одновременного обращения к файлу из нескольких узлов сети, поскольку при доступе к нему одного пользователя он блокируется, а остальные вынуждены ждать, пока файл не освободится. К тому же если множество файлов запрашивают и передают по сети сразу несколько рабочих станций, интенсивный трафик ухудшает производительность системы.

Все эти проблемы локальной сети породили модель обработки клиент/сервер, которая сохраняет преимущества сетевых вычислений с доступом к совместно используемым данным и имеет высокие характеристики производительности, при сущие модели, базирующейся на мэйнфрейме. У систем клиент/сервер два функционирующих в сети компонента: сервер и клиентское приложение. Впрочем, серверов может быть и несколько: файл-сервер, факс-сервер, сервер печати, серверы баз данных и другие. В этом случае говорят уже о распределенной обработке. Основной функцией сервера является оптимальное управление ресурсом для множества клиентов, одновременно запрашивающих у него этот ресурс (им может быть, например, информация базы данных). Клиентское приложение - это внешний интерфейс, т.е. часть системы, которую пользователь применяет для взаимодействия с данными. Этот компонент управляет логикой приложения, например списками в форме ввода данных или диаграммами в графическом их представлении, и обращается с запросами к серверу.

Клиентское приложение и сервер действуют совместно и распределяют между собой создаваемую приложением загрузку, поэтому система клиент/сервер может обеспечить более высокую производительность, чем система с "неинтеллектуальным" файловым сервером. Так, в СУБД сервер управляет базой данных, а клиенты посылают, получают и анализируют полученные с него данные. При такой схеме клиентское приложение работает с небольшими специальными наборами данных (такими, как строки таблицы), а не с целыми файлами. Сервер базы данных здесь является интеллектуальным. Он блокирует и возвращает записи БД по запросам клиентов, что гарантирует параллельность, минимальный сетевой трафик и повышенную производительность системы.

Сегодня свои продукты в виде системы клиент/сервер предлагает большинство поставщиков СУБД. В таких продуктах общие запросы (обычно не ограниченные синтаксисом языка SQL)направляются базам данных на сервере, который обрабатывает запрос и по сети возвращает результат клиенту. Взаимодействием компонентов клиента и сервера управляет сама СУБД. Решения в области клиент/сервер, которые должны появиться в ближайшее время, будут в основном продуктами с централизованными данными и эпизодическими запросами.