- •Оглавление
- •1.Компоненты сетевого по
- •2. Функции и характеристики системного сетевого по:
- •3. Уровни поддержки сетевых вычислений операционными системами.
- •4. Вычисления в архитектуре клиент-сервер. Классы приложения клиент-сервер.
- •5.Передача сообщений в сетевых системах. Синхронизация процессов при передачи сообщений.
- •6. Буферизация при синхронном и асинхронном взаимодействии процессов.
- •7. Способы адресации при передаче сообщений.
- •8. Надёжные и ненадёжные примитивы передачи сообщений:
- •9. Конвейеры (программные каналы).
- •10. Концепция вызова удалённых процедур.
- •11 И 12. Вопросы согласования времени в сетевых системах.Алгоритм синхронизации часов в сетевых системах.
- •13. Именование в сетевых системах.
- •14 И 15. Взаимное исключение в сетевых системах.
- •16 И 17.Распределённая взаимоблокировка. Виды распределённых взаимоблокировок. Методы предотвращения взаимоблокировок.
- •18. Репликация данных. Согласование реплик. Варианты внесения изменений в репликационные данные.
- •19. Кластерная обработка. Методы кластеризации.
- •20.Миграция процессов. Механизмы переноса процессов.
- •21. Организация доступа к удалённым данным. Доступ данных, основанный на документах.
- •22. Модели хранения информации в файловых системах. Надёжность и непротиворечивость файловых систем.
- •23. Организация доступа к удалённым данным. Доступ, основанный на файловой системе. Модели переноса.
- •24. Принципы построения сетевых файловых систем.
5.Передача сообщений в сетевых системах. Синхронизация процессов при передачи сообщений.
Практически всё взаимодействие между процессами осуществляется передачей сообщений.
Сообщение – это блок информации, отформатированный процессом-отправителем таким образом, чтобы он был понятен процессу-получателю. Состоит из заголовка (фиксированной длины) и набора данных (переменной длины).
В заголовке содержится следующая информация:
- адрес. Набор символов, уникально определяющий отправляющий и получающий процесс. Адрес состоит из двух частей: адрес отправителя и адрес получателя. Причём, в сетевых системах адрес уникален и имеет свою структуру;
- идентификатор сообщения. Некоторый последовательный номер сообщения.
Данные – некоторая структурированная информация:
- тип данных. Может быть указание на то, являются данные резидентными (непосредственно в сообщении) или нерезидентными (находятся где-то в другом месте, а тут только указатель на это место);
- поле длины данных (данные могут быть переменной длины);
- собственно данные.
В любой ОС имеется подсистема передачи сообщений, которая обеспечивает набор средств для организации взаимодействия процессов по сети. Эта подсистема скрывает детали сложных сетевых протоколов, тогда передача сообщений может осуществляться с помощью некоторых примитивов. Например, send и receive.
Вопросы, решаемые при передаче сообщений и влияющие на её эффективность:
1) способ задания адреса получателя;
2) количество получателей;
3) требуется ли гарантированная доставка сообщений (нужно ли подтверждение получения);
4) как отправитель, получатель и система передачи сообщений должны реагировать на отказы узлов или каналов во время взаимодействия;
5) нужна ли буферизация сообщений и как себя вести при переполнении буфера; 6) может ли приёмник менять порядок обработки сообщений.
От того, как протокол передачи сообщений отвечает на эти вопросы, зависит семантика протокола передачи.
Синхронизация процессов при передаче сообщений
Коммуникационные примитивы делятся на блокирующие (синхронные) и неблокирующие (асинхронные).
При использовании блокирующего примитива send процесс, выдавший запрос на его выполнение, приостанавливается до выдачи сообщения о том, что приёмник получил сообщение, а вызов блокирующего примитива receive приостанавливает выполнение процесса-получателя до получения сообщения. Вот так вот:
Если что-то произойдёт с коммуникационной сетью, то произойдёт бесконечная блокировка. Поэтому используют механизм time out.
При использовании неблокирующих примитивов, управление возвращается процессу немедленно. Для того, чтобы получить информацию о том, что процесс P1 получил сообщение, процесс P2 должен использовать примитив test, чтобы определить. Вот так:
Вместо примитивы test можно использовать систему прерывания.
6. Буферизация при синхронном и асинхронном взаимодействии процессов.
Буферизация необходима, если принимающий процесс не готов при прибытии сообщения. Буферизация зависит от того, какой используется механизм синхронизации: при синхронном может не использоваться, но чаще всего используется (для одного сообщения). При асинхронном – используется всегда, буфер должен быть произвольного размера, что, вообще говоря, сложно, потому что буфер имеет ограниченный размер (может произойти переполнение буфера).
Для избежания переполнения буфера используется механизм управления потоком сообщений. Управление потоками заключается в том, что при заполнении буфера на принимающей стороне до некоторого опасного порога, процесс передачи блокируется до тех пор, пока процесс-приёмник не обработает часть принятых сообщений и не разгрузит буфер до безопасной величины. Управление передатчиком осуществляется с помощью некоторых примитивов сообщений, которые будут ограничивать работу передатчика.
Создание буфера. ОС предоставляют для прикладных процессов специальные примитивы для создания буферов. Такие примитивы должны использоваться перед тем, как отправлять/принимать сообщение. Размеры буфера могут приниматься по умолчанию, либо выбираться прикладным процессом.