Взаимодействие процессов на разных машинах
Особенность: потеря, искажение,
дублирование.
Надежный поток:
Open – устанавливает
соединение, так что оба ожидают что-то
друг о друга.Sender шлет
пакетOpen до тех пор пока
не получит подтверждение об установлении
соединения или пока не исчерпан счетчик
попыток.
Обе стороны ведут протокол переданных
- принятых данных. В каждом пакете
передается пересылаемый диапазон
байтов.
Sender буферизует переданные
данные и держит их до тех пор, пока не
получит подтверждение об их успешном
приеме.
Если подтверждение о приеме данных не
приходит в течение установленного
таймаута, то передача данных повторяется
и так до тех пор, пока не исчерпан счетчик
попыток.
Receiver отслеживает принятые
данные с тем, чтобы обнаружить потерю
пакета или появление повторного пакета.
В первом случае посылается отрицательное
подтверждение, во втором - данные
игнорируются и посылается положительное
подтверждение.
Receiver контролирует
правильность приема данных по контрольной
сумме.
Любая сторона может закрыть поток
послав пакет Close. Close должен
подтверждаться и лишь после получения
подтверждения можно уничтожать все
что связано с соединением.
Надежные сообщения:
В целом действия аналогичны потокам.
Каждое сообщение снабжается порядковым
номером для контроля потери и повтора
сообщений.
Нет Open – Close. Когда
освобождать ресурсы? Когда истекло
время необходимое на выполнение
установленного числа попыток ретрансляции.
Всегда ли параллельные процессы дают выигрыш?
1988 Microsoft OS/2 – все не нитях
(позже вIBM переписали
ядро полностью). Нить – 9K
стек. Реально до 90 нитей, из которых
лишь несколько активны. Результат: около
1M дополнительной памяти.
В те времена 1М памяти стоил примерно$200.
Мораль: нити очень удобны, но не бесплатны