
- •Распределенные информационные системы и сети
- •Архитектура распределенных систем и основные понятия распределенной обработки данных
- •Концепция открытых систем
- •Преимущества идеологии открытых систем.
- •Открытые системы и объектно-ориентированный подход
- •Компьютерные (информационные) сети
- •Глобальные сети
- •Локальные сети
- •Многопроцессорные компьютеры
- •Взаимодействующие процессы
- •От централизованных систем - к вычислительным сетям
- •1.1. Эволюция вычислительных систем
- •Системы пакетной обработки
- •Многотерминальные системы - прообраз сети
- •Появление глобальных сетей
- •Первые локальные сети
- •Создание стандартных технологий локальных сетей
- •Современные тенденции
- •1.2. Вычислительные сети - частный случай распределенных систем
- •Мультипроцессорные компьютеры
- •Многомашинные системы
- •Вычислительные сети
- •Распределенные программы
- •Преимущества использования сетей
- •2.1. Проблемы физической передачи данных по линиям связи
- •2.2. Проблемы объединения нескольких компьютеров
- •Топология физических связей
- •Организация совместного использования линий связи
- •Адресация компьютеров
- •2.3. Стандартные решения сетевых проблем
- •2.4. Структуризация как средство построения больших сетей.
- •Физическая структуризация сети
- •Логическая структуризация сети
- •3.1. Многоуровневый подход. Протокол. Интерфейс. Стек протоколов
- •3.2. Модель osi
- •3.3. Уровни модели osi Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Транспортный уровень
- •Сеансовый уровень
- •Представительный уровень
- •Прикладной уровень
- •Сетезависимые и сетенезависимые уровни
- •3.4. Стандартные стеки коммуникационных протоколов
- •Стек tcp/ip
- •Стек ipx/spx (Internetwork Packet Exchange/ Sequenced Packet Exchange)
- •Стек NetBios/smb (Network Basic Input/Output System / Server Message Block)
- •4.1. Локальные и глобальные сети
- •4.2 Требования, предъявляемые к современным вычислительным сетям
- •Производительность
- •Надежность и безопасность
- •Расширяемость и масштабируемость
- •Прозрачность
- •Поддержка разных видов трафика
- •Управляемость
- •Совместимость
- •5.1. Типы линий связи
- •5.2. Аппаратура линий связи
- •5.3. Характеристики линий связи
- •Амплитудно-частотная характеристика, полоса пропускания и затухание
- •Пропускная способность линии
- •Связь между пропускной способностью линии и ее полосой пропускания
- •Помехоустойчивость и достоверность
- •Коаксиальные кабели
- •Кабели на основе неэкранированной витой пары
- •Кабели на основе экранированной витой пары
- •Волоконно-оптические кабели
- •6.1. Аналоговая модуляция
- •Методы аналоговой модуляции
- •Спектр модулированного сигнала
- •6.2. Цифровое кодирование
- •Требования к методам цифрового кодирования
- •Потенциальный код без возвращения к нулю
- •Метод биполярного кодирования с альтернативной инверсией
- •Потенциальный код с инверсией при единице
- •Биполярный импульсный код
- •Манчестерский код
- •Потенциальный код 2b1q
- •6.3. Логическое кодирование
- •Избыточные коды
- •Скрэмблирование
- •6.4. Дискретная модуляция аналоговых сигналов
- •6.5. Асинхронная и синхронная передачи
- •7.1. Методы передачи данных канального уровня
- •Асинхронные протоколы
- •Синхронные символьно-ориентированные и бит-ориентированные протоколы
- •Символьно-ориентированные протоколы
- •Бит-ориентированные протоколы
- •Протоколы с гибким форматом кадра
- •Передача с установлением соединения и без установления соединения
- •Обнаружение и коррекция ошибок
- •Методы обнаружения ошибок
- •Методы восстановления искаженных и потерянных кадров
- •Компрессия данных
- •7.2. Методы коммутации
- •Коммутация каналов
- •Коммутация каналов на основе частотного мультиплексирования
- •Коммутация каналов на основе разделения времени
- •Общие свойства сетей с коммутацией каналов
- •Обеспечение дуплексного режима работы на основе технологий fdm, tdm и wdm
- •Коммутация пакетов Принципы коммутации пакетов
- •Виртуальные каналы в сетях с коммутацией пакетов
- •Пропускная способность сетей с коммутацией пакетов
- •Коммутация сообщений
- •Общая характеристика протоколов локальных сетей
- •3.1.2. Структура стандартов ieee 802.X
- •Максимальная производительность сети Ethernet
- •Основные характеристики технологии
- •Маркерный метод доступа к разделяемой среде
- •Форматы кадров Token Ring
- •Физический уровень технологии Token Ring
- •10.2. Технология fddi
- •Основные характеристики технологии
- •Особенности метода доступа fddi
- •Отказоустойчивость технологии fddi
- •Физический уровень технологии fddi
- •Сравнение fddi с технологиями Ethernet и Token Ring
- •Структурированная кабельная система
- •Иерархия в кабельной системе
- •Выбор типа кабеля для горизонтальных подсистем
- •Выбор типа кабеля для вертикальных подсистем
- •Выбор типа кабеля для подсистемы кампуса
- •Глобальные сети
- •Обобщенная структура и функции глобальной сети Транспортные функции глобальной сети
- •Высокоуровневые услуги глобальных сетей
- •Структура глобальной сети
- •Интерфейсы dte-dce
- •Типы глобальных сетей
- •Выделенные каналы
- •Протоколы семейства hdlc
- •Протокол ppp
- •Глобальные сети с коммутацией каналов
- •Глобальные сети с коммутацией пакетов
- •Магистральные сети и сети доступа
- •Сети х.25 Протоколы сетей х.25 были специально разработаны для низкоскоростных линий с высоким уровнем помех. Назначение и структура сетей х.25
- •Адресация в сетях х.25
- •Стек протоколов сети х.25
- •Сети Frame Relay Назначение и общая характеристика
- •Стек протоколов frame relay
- •Поддержка качества обслуживания
- •Использование сетей frame relay
- •Технология атм
- •Основные принципы технологии атм
- •Стек протоколов атм
- •Уровень адаптации aal
- •Протокол атм
- •Категории услуг протокола атм и управление трафиком
- •Сосуществование атм с традиционными технологиями локальных сетей
- •Использование технологии атм
- •100Vg-Anylan
- •6.5. Удаленный доступ
- •6.5.1. Основные схемы глобальных связей при удаленном доступе
- •Типы взаимодействующих систем
- •Типы поддерживаемых служб
- •Типы используемых глобальных служб
- •6.5.2. Доступ компьютер - сеть
- •Удаленный узел
- •Удаленное управление и терминальный доступ
- •6.5.3. Удаленный доступ через промежуточную сеть Общая схема двухступенчатого доступа
- •Технологии ускоренного доступа к Internet через абонентские окончания телефонных и кабельных сетей
- •11.2. Концентраторы и сетевые адаптеры
- •Сетевые адаптеры (в лабораторной работе) Функции и характеристики сетевых адаптеров
- •Классификация сетевых адаптеров
- •Концентраторы Основные и дополнительные функции концентраторов
- •Отключение портов
- •Поддержка резервных связей
- •Защита от несанкционированного доступа
- •Многосегментные концентраторы
- •Управление концентратором по протоколу snmp
- •Конструктивное исполнение концентраторов
- •13.1. Принципы объединения сетей на основе протоколов сетевого уровня
- •Ограничения мостов и коммутаторов
- •Понятие internetworking
- •Функции маршрутизатора
- •Реализация межсетевого взаимодействия средствами tcp/ip
- •Многоуровневая структура стека tcp/ip
- •Уровень межсетевого взаимодействия
- •Основной уровень
- •Прикладной уровень
- •Уровень сетевых интерфейсов
- •Соответствие уровней стека tcp/ip семиуровневой модели iso/osi
- •13.2. Адресация в ip-сетях Типы адресов стека tcp/ip
- •Классы ip-адресов
- •Особые ip-адреса
- •Использование масок в ip-адресации
- •Порядок распределения ip-адресов
- •Автоматизация процесса назначения ip-адресов
- •Отображение ip-адресов на локальные адреса
- •Отображение доменных имен на ip-адреса Организация доменов и доменных имен
- •Система доменных имен dns
- •14.1. Основные функции протокола ip
- •14.2. Структура ip-пакета
- •14.3. Таблицы маршрутизации в ip-сетях
- •Примеры таблиц различных типов маршрутизаторов
- •Назначение полей таблицы маршрутизации
- •Источники и типы записей в таблице маршрутизации
- •14.4. Маршрутизация без использования масок
- •14.5. Маршрутизация с использованием масок Использование масок для структуризации сети
- •Использование масок переменной длины
- •Технология бесклассовой междоменной маршрутизации cidr
- •14.6. Фрагментация ip-пакетов
- •14.7. Протокол надежной доставки tcp-сообщений
- •Сегменты и потоки
- •Соединения
- •Реализация скользящего окна в протоколе tcp
- •Раздел 2
- •6.2.3. Протоколы канального уровня для выделенных линий
- •Протокол slip
- •Протоколы семейства hdlc
- •Протокол ppp
- •6.2.4. Использование выделенных линий для построения корпоративной сети
- •6.3. Глобальные связи на основе сетей с коммутацией каналов
- •6.3.1. Аналоговые телефонные сети Организация аналоговых телефонных сетей
- •Модемы для работы на коммутируемых аналоговых линиях
- •6.3.2. Служба коммутируемых цифровых каналов Switched 56
- •6.3.3. Isdn - сети с интегральными услугами Цели и история создания технологии isdn
- •Пользовательские интерфейсы isdn
- •Подключение пользовательского оборудования к сети isdn
- •Адресация в сетях isdn
- •Стек протоколов и структура сети isdn
- •Использование служб isdn в корпоративных сетях
- •6.4. Компьютерные глобальные сети с коммутацией пакетов
- •6.4.1. Принцип коммутации пакетов с использованием техники виртуальных каналов
Взаимодействующие процессы
Разработка сложных программных систем может быть зачастую упрощена организацией программы как набора (последовательных) процессов, каждый с хорошо определенной, простой задачей.
Классический пример для иллюстрации этого упрощения это преобразование записей Конвея. Проблема состоит в том, чтобы читать 80 символьные записи и записывать ту же информацию в 125 символьные записи.
После каждой входной записи должен вставляться дополнительный пробел, и каждая пара звездочек («**») должна заменяться на восклицательный знак («!»).
Каждая выходная запись должна завершаться символом конца записи (EOR).
Преобразование может быть проведено одной программой, но написание этой программы очень сложно.
Все функции, т.е. замена «**» на «!», вставка пробелов, и вставка символов EOR, должны осуществляться за один цикл.
Программу лучше структурировать как два взаимодействующих процесса.
Первый процесс, скажем р1, читает входные карты и конвертирует входной поток в поток печатных символов, не разбивая на записи.
Второй процесс, скажем р2, получает поток символов и вставляет EOR после 125 символов.
Структура программы как набор двух процессов обычно предполагается для:
операционных систем,
телефонных переключающих центров
коммуникационных программ в компьютерных сетях.
Набор кооперирующих процессов становится причиной того, что приложение становится локально распределенным, но абсолютно возможно выполнять процессы на одном компьютере, в этом случае приложение не является физически распределенным.
Конечно, в этом случае достигнуть физической распределенности легче именно для систем, которые логически распределены.
Операционная система компьютерной системы должна:
1) управлять конкурентным выполнением процессов 2) обеспечить средства коммуникации и синхронизации между процессами.
Процессы, которые выполняются на одном компьютере, имеют доступ к одной физической памяти, отсюда – естественно использование этой памяти для коммуникации. Один процесс пишет в определенное место памяти, и другой процесс читает из этого места.
Проблемы, которые встречаются рассматривались в модели конкурирующих процессов, включают следующие:
Атомичность операций с памятью.
Часто предполагается, что чтение и запись одного слова памяти атомичны, т.е. чтение и запись выполняемые процессом завершается перед тем как другая операция чтения или записи начнется.
Если структуры большие, больше чем одно слово обновляется, операции должны быть аккуратно синхронизированы, чтобы избежать чтения частично обновленной структуры.
Это может быть осуществлено, например, применением взаимного исключения в структуре: пока один процесс имеет доступ к структуре, ни один другой процесс не может начать чтение или запись.
Применение взаимного исключения с использованием разделяемых переменных усложнено из-за возможности нескольких процессов искать поле в этой структуре в это же время.
Условия ожидания, налагаемые доступом со взаимным исключением к разделяемым данным, могут понизить производительность процессов, например, если «быстрый» процесс должен ждать данные, в настоящее время используемые «медленным» процессом.
До настоящего времени внимание разработчиков концентрировалось на применении разделяемых переменных, которые являются wait-free, что значит, что процесс может читать или писать данные без ожидания любых других процессов. Чтение и запись могут перекрываться, но только при тщательной проработке алгоритмов чтения и записи, которые должны обеспечить атомичность.
Проблема производитель-потребитель.
Два процесса, один из которых пишет в разделяемый буфер и другой и которых читает из буфера, должны быть скоординированы, чтобы предупредить первый процесс от записи, когда буфер полон и второй процесс от чтения, когда буфер пуст.
Проблема производитель-потребитель возникает, когда решение проблемы преобразования Конвея выработано: процесс р1 производит промежуточный поток символов, и процесс р2 потребляет его.
Сборка мусора.
Приложение, которое запрограммировано с использованием динамических структур данных может производить недоступные ячейки памяти, называемые мусором.
Формально, приложение должно бы прерваться, когда у системы памяти кончается свободное место, для того чтобы позволить специальной программе, называемой сборщиком мусора, идентифицировать и вернуть недоступную память. Для решения этой проблемы был предложен сборщик мусора на-лету, который может работать как отдельный процесс, параллельно с приложением.
Требуется сложное взаимодействие между приложением и сборщиком, т.к. приложение может модифицировать структуры указателей в памяти, в то время как сборщик решает какие ячейки являются недоступными.
Алгоритм должен быть тщательно проанализирован, чтобы показать, что модификации не обусловят ошибочный возврат доступных ячеек. Алгоритм для сбора мусора на-лету с упрощенным доказательством правильности был предложен Бен-Ари.
Решения проблем, перечисленных здесь, демонстрируют, что могут быть решены очень трудные проблемы взаимодействия процессов для процессов, которые сообщаются посредством разделяемой памяти.
Однако, решения часто исключительно усложнены и иногда очень незначительное перемешивание шагов различных процессов дает ошибочные результаты для решений, которые кажутся правильными на первый и даже на второй взгляд.
Поэтому, операционные системы и языки программирования предлагают следующие примитивы для более структурной организации межпроцессовых коммуникаций:
Семафоры.
Семафор это неотрицательная переменная, чье значение может быть прочитано и записано за одну атомичную операцию.
V операция приращает значение этой переменной, а Р операция уменьшает ее значение, когда оно положительно ( и подвешивает выполнение процесса на этой операции, пока значение переменной нулевое).
Семафоры – подходящее средство для применения взаимного исключения над разделяемой структурой данных: семафор инициализируется в 1, и доступ к структуре предваряется операцией Р и завершается операцией V.
Семафоры накладывают большую ответственность на каждый процесс за правильное использование. Целостность разделяемых данных нарушается, если процесс манипулирует данными неправильно или не выполняет требуемых Р и V операций.
Мониторы.
Монитор состоит из структуры данных и набора процедур, которые могут выполняться над этими данными, с помощью их вызова процессами способом, использующим взаимное исключение.
Т.к. к данным доступ осуществляется полностью через процедуры, объявленные в мониторе, то гарантируется правильное использование данных, если монитор объявлен корректно. Монитор, таким образом, предотвращает не позволенный доступ к данным и синхронизирует доступ различных процессов.
Каналы.
Канал это механизм, который передает поток данных от одного процесса к другому и синхронизирует два коммутирующих процесса.
Это заранее запрограммированное решение проблемы производитель-потребитель.
Канал это основной механизм коммуникаций в операционной системе UNIX. Если программа р1 выполняет процесс р1 преобразования Конвея и р2 выполняет р2 , команда UNIX р1 | р2 вызывает две программы и соединяет их каналом. Вывод р1 буферизируется и становится вводом р2
р1 подвешивается, когда буфер полон, и р2 подвешивается, когда буфер пуст.
Передача сообщений.
Некоторые языки программирования, такие как OCCAM и ADA, обеспечивают передачу сообщений, как механизм для межпроцессовой коммуникации.
Проблемы синхронизации относительно легко решаются с использованием передачи сообщений. Так как. сообщение не может быть получено до его передачи, возникает временное отношение между событиями благодаря обмену сообщениями.
Передача сообщений может быть выполнена с использованием мониторов или каналов, и это естественные средства для систем коммуникации, которые используются в аппаратуре распределенных систем (без разделяемой памяти). В самом деле, языки OCCAM и ADA были разработаны с идеей использования их для физически распределенных приложений.