В. Столлингс - Операционные системы (1114679), страница 130
Текст из файла (страница 130)
Альтернативный подход состоит в применении блокирующих, или синхрон-,'з" ных„примитивов. Блокирующий вызов Вепб не возвращает управление процессУ '" до тех пор, пока письмо не будет отправлено (ненадежный сервис), или до тех ., пор, пока сообщение не будет доставлено адресату и не будет получено подтвер- -' ждение получения (надежный сервис). Блокирующий весе'ъе не возвращает Управление до тех пор, пока сообщение не будет помещено в буфер-приемник. ф 'ф а 1. Вызов процедуры — широко распространенная, используемая и понятная абстракция. 2.
Использование вызова удаленных процедур позволяет задавать удаленный интеРфейс как множество именованных опеРаций опРеделенного типа. 1'а ким образом, интерфейс можно точно документировать, и распределенные программы смогут выполнять статическую проверку типов. 3. Поскольку интерфейсы стандартизованы и точно определены, коммуника ционный код может генерироваться автоматически. 4. Поскольку интерфейсы стандартизованы и точно определены, разработчики могут создавать клиентские и серверные модули, которые требуют мини мальных доработок при переносе между различными компьютерными платформами и операционными системами.
Вызов удаленной процедурц Рис. 13Л2. Мехап м .Ова удаленп про„,дур Механизм вызова удаленных процедур может рассматриваться как усовершенствованная надежная блокирующая передача сообщений. Набросок архитектуры ВРС представлен на рис. 13.10,б; более детально она приведена на Рис. 13.12. Вызывающая программа осуществляет обычный вызов процедуры с параметрами на своей машине, например СА1 1, Р~Х, У), где Р— имя процедуРы. Х вЂ” передаваемые аргуменгы, а У вЂ” возвращаемые значения. Этот вызов может приводить к прозрачному для пользователя выполнению удаленной процедуры на другой машине.
В адресное пространство пользователя должна быть включена процедура-заглушка Р (которая также может быть динамически подключена в момент вызова). Эта процедура создает сообщение, которое идентиФицирует вызываемую процедуру и включает передаваемые ей параметры. Затем процедура-заглушка пересылает зто сообщение удаленной системе и ожидает от нее ответ. Когда ответ получен, заглушка возвращает управление вызывающей программе, передавая ей возвращаемые значения. 'Часть 6.
Распределенные систе Глава 13. Распределенные вычисления, архитектура... На удаленной машине с вызываемой процедурой связана другая программа- заглушка. Когда поступает сообщение, заглушка обрабатывает его и генерирует локальный вызов САЕХ. Р~Х, У) Таким образом, эта удаленная процедура вызывается лак~льна, так что не надо специально заботиться а передаче параметров„состоянии стека и т.п. — вызов абсолютно идентичен вызову обычной локальной процедуры.
С вызовом удаленных процедур связан ряд вопросов, которые мы рассмотрим в оставшейся части данного раздела. Передача параметров Большинство языков программирования позволяют использовать передачу параметров по значению либо как указатель на ячейки памяти, содержащие значение (передача параметров па ссылке).
Передача параметров по значению идеально подходит для вызова удаленной процедуры: параметры при этом просто копируются в сообщение и пересылаются удаленной системе. Реализовать передачу параметров по ссылке сложнее — при этом для каждого объекта потребуется свой, уникальный в пределах системы, указатель. Накладные расходы при реализации возможности передачи параметров по ссылке обычно настолько велики, что овчинка выделки не стоит.
Представление параметров Еще одни вопрос заключается в способе представления параметров и результата работы процедуры в сообщении. Если вызывающая и вызываемая программы написаны на одном языке программирования для одного типа машин, находящихся под управлением одной и той же операционной системы, то представление параметров проблем не вызывает. Однако если перечисленные характеристики различны, то иемедленно возникают вопросы представления чисел ~и даже текста) в различных системах. Использование архитектуры, в которой эти вопросы решаются на уровне представления, приводит к высоким накладным расходам, так чта зачастую ответственность за преобразование передаваемых параметров ложится на средства вызова удаленных процедур (см., например, ~01ВВ871).
Наилучший подход к решению этой проблемы заключается в использовании стандартизованного формата для распространенных объектов, таких„ как целые числа, числа с плавающей запятой, символы и строки. В таком случае при передаче данные конвертируются из представления в данной конкретной машине в стандартное представление. Связывание клиент/сервер Связывание (Ь1пй1пй) определяет, каким образом будет установлена взаимосвязь между удаленной процедурой и вызывающей программой. Связывание формируется, когда два приложения устанавливают логическую связь и готовятся к обмену командами и данными. Непостоянное связывание (попрега1э1еп1 Ыпй~пя) означает, что логическая связь между двумя процессами устанавливается во время вызова удаленной процедуры и немедленно уничтожается после получения возвращаемого значения.
Поскольку соединение требует поддержки информации о состоянии на обоих концах, оно потребляет ресурсы. Соответственно, непостоянное связывание по-,: зволяет эти ресурсы сэкономить. На, с другой стороны, при этом мы получаем,': излишние накладные расходы по установлению связывания при каждом вызове процедуры, так что этот метод плохо подходит в случае частого вызова удален ных процедур одной и той же вызывак1щей программой. При постоянном связывании (регэ1э1еп$ Ьшйшя) связь устанавливается при вызове удаленной процедуры, но по окончании вызова не уничтожается. Эта же связь может использоваться и для других вызовов удаленных процедур. Если в течение предопределеннога промежутка времени не осуществляется ни один вы зов, такая связь с целью экономии ресурсов разрывается. Этот метод хороша подходит для интенсивного вызова удаленных процедур, позволяя множеству вызовов использовать одно и та же соединение.
Синхронный и асинхронный вызовы Концепция синхронных и асинхронных вызовов удаленных процедур аналогична концепции блокирующих и неблокирующих сообщений. Традиционный вызов удаленных процедур — синхронный, при котором вызывающий процесс ожидает, пока вызываемый процесс не вернет результирующее значение; синхронный КРС ведет себя так же, как и обычный вызов процедуры. Синхронный ВРС прост для понимания и программирования, поскольку его поведение предсказуемо Однако такой вызов не позволяет в полной мере использовать возможность параллельных вычислений в распределенных приложениях, что приводит к ограничению видов взаимодействия в распределенных приложениях и может привести к снижению производительности.
Для обеспечения большей гибкости и большей степени параллельности реализованы различные варианты асинхронного КРС, сохраняющие простоту и удобство традиционных вызовов удаленных процедур )АХАХ92). Асинхронные вызовы не блокируют вызывающую программу; ответ может быть получен вызывающей программой тогда, когда он ей потребуется, так что клиент может продолжать работу параллельно с обработкой его запроса сервером.
Обычно асинхронный ВРС используется для того, чтобы позволить клиенту сделать несколько запросов к серверу, каждый со своим набором данных, не дожидаясь его ответов. Синхронизация клиента и сервера при этом может быть выполнена одним из двух способов. 1. Приложение-клиент дожидается ответа на все отправленные запросы. 2. По окончании выполнения последовательности асинхронных ВРС клиент выполняет синхронный вызов удаленной процедуры. Сервер ответит на синхронный вызов толька по окончании обработки всех предшествующих асинхронных вызовов.
В некоторых схемах асинхронные вызовы не требуют ответа от сервера, в сервер не может послать сообщение в ответ. В других схемах ответ требуется (или позволяется), но клиент его не ожидает, выполняя другие действия. Объектно-ориентированный механизм Объектно-ориентированные технологии становятся все более распространен ными как при создании операционных систем, так и при разработке систем кли ент/сервер. При таком подходе клиент и сервер обмениваются сообщениями ме жду объектами.
Связь между объектами может как осуществляться на основ Глава 13. Распределенные вычисления, архитектура... ббпр ф ~ '! -' 1 ) ,--ом аомена сообщениями или вызова удаленных процедур, так и быть разратаиа л качестве надстройки над объектно-ориентированными возможностями оро ционнай системы.