Здравствуйте! В прошлой лекции мы рассмотрели
такой способ взаимодействия процессов, как сокеты.
Но у этого способа есть специальное назначение —
он используется при взаимодействии двух программ по сети.
В сегодняшней лекции рассмотрим этот аспект подробнее.
Основа работы вычислительных сетей —
взаимодействие удаленных процессов.
Изучая взаимодействие локальных процессов,
мы разделили средства обмена информацией
по объему передаваемых между ними данных
и возможности влияния на поведение другого процесса
на три категории: сигнальные,
канальные и разделяемая память.
Взаимодействие удаленных процессов
принципиально отличается от ранее рассмотренных случаев.
Удаленные процессы могут обмениваться информацией,
только передавая друг другу пакеты данных
определенного формата
(в виде последовательностей электрических
или электромагнитных сигналов, включая световые)
через некоторый физический канал связи
или несколько каналов таких, соединяющих компьютеры.
Поэтому в основе всех средств взаимодействия
удаленных процессов лежит передача
структурированных пакетов информации или сообщений.
При взаимодействии локальных процессов
и процесс–отправитель информации,
и процесс-получатель функционируют под управлением
одной и той же операционной системы.
Эта же операционная система поддерживает
функционирование промежуточных накопителей данных
при использовании непрямой адресации.
Для организации взаимодействия процессы пользуются
одними и теми же сигналами, вызовами,
присущими данной операционной системе,
с одинаковыми интерфейсами.
Но соединить напрямую два компьютера
в большое сети проблематично.
Вопросы надежности средств связи
и способы ее реализации, рассмотрены
нами в предыдущей лекции,
носили для случая локальных процессов
скорее теоретический характер.
Мы выяснили, что физической основой "общения"
процессов на автономной вычислительной машине
является разделяемая память.
Поэтому для локальных процессов
надежность передачи информации
определяется надежностью ее передачи по шине данных
и хранения в памяти машины,
а также корректностью работы с операционной системой.
Для хороших вычислительных комплексов
и операционных систем мы могли бы
забыть про возможную ненадежность средств связи.
Для удаленных процессов вопросы, связанные
с надежностью передачи данных,
становятся куда более значимыми.
Протяженные сетевые линии связи
подвержены разнообразным физическим воздействиям,
приводящим к искажению передаваемых
по ним сигналов (помехи в эфире)
или к полному отказу линий
(например, когда мыши съели кабель).
Даже при отсутствии внешних помех
передаваемый сигнал затухает по мере удаления
от точки отправления, приближаясь по интенсивности
к внутренним шумам линий связи.
Промежуточные вычислительные комплексы сети,
участвующие в доставке информации,
не застрахованы от повреждений
или внезапной перезагрузки операционной системы.
Поэтому вычислительные сети должны
организовываться исходя из предпосылок
ненадежности доставки физических пакетов информации.
При организации взаимодействия локальных процессов
каждый процесс (в случае прямой адресации)
и каждый промежуточный объект для накопления данных
(в случае непрямой адресации) должны были
иметь уникальные идентификаторы — адреса —
в рамках одной операционной системы.
При организации взаимодействия удаленных процессов
участники этого взаимодействия должны иметь
уникальные адреса уже в рамках всей сети.
Физическая линия связи, соединяющая
несколько вычислительных комплексов,
является разделяемым ресурсом
для всех процессов комплексов,
которые хотят ее использовать.
Если два процесса попытаются одновременно
передать пакеты информации по одной и той же линии,
то в результате интерференции физических сигналов,
представляющих эти пакеты,
произойдет взаимное искажение передаваемых данных.
Для того чтобы избежать возникновения такой ситуации
и обеспечить эффективную совместную работу
вычислительных систем,
должны выполняться условия взаимоисключения,
прогресса и ограниченного ожидания
при использовании общей линии связи,
но уже не на уровне отдельных процессов
операционных систем, а на уровне различных
вычислительных комплексов в целом.