Тема 2-2. Основы разработки программ для распределенной обработки данных
Открытые системы и объектно-ориентированный подход
Основные принципы объектно-ориентированного подхода:
Объектно-ориентированные системы обладают следующими основными cвойствами:
Объектно-ориентированный подход реализации системы хорошо согласуется с основными свойствами открытых систем
Параллельные вычислительные системы
Параллелизм
Параллелизм
Параллелизм на уровне битов
Параллелизм на уровне инструкций
Параллелизм данных
Параллелизм задач
Распределённые операционные системы
Распределенные базы данных
Распределенные базы данных
Распределенные базы данных
Распределенные базы данных
Распределенные базы данных
Распределенные банки данных (РБнД)
POSIX
POSIX
Стандарт POSIX
POSIX
Необходимость стандарта
Переносимость приложений
Приложения реального времени
Профили
Расширения для приложений реального времени
Диспетчеризация процессов реального времени
Диспетчеризация процессов реального времени
Блокирование виртуальной памяти
Синхронизация процессов
Синхронизация процессов
Разделяемая Память
Сигналы реального времени
Взаимодействие процессов
Часы и таймеры
Асинхронный Ввод/Вывод
Другие Функции
Threads-расширение
Интерфейс для поддержки нескольких параллельных действий
Управление нитями
Диспетчеризация нитей
Синхронизация нитей
Другие функции
Дополнительные расширения стандарта для приложений реального времени
Таймауты
Часы времени выполнения
Спорадический сервер
Управление прерываниями
Управление устройствами ввода/вывода
Другие функции
Профили прикладных контекстов реального времени
Подмножество интерфейсов
Протоколы и интерфейсы
TCP
SOCKET
Принципы сокетов
HTTP
URI
Спасибо за внимание!
237.37K
Категория: ПрограммированиеПрограммирование

Основы разработки программ для распределенной обработки данных

1. Тема 2-2. Основы разработки программ для распределенной обработки данных

Гончаров Сергей Леонидович
Старший преподаватель

2. Открытые системы и объектно-ориентированный подход

Открытые системы и объектноориентированный подход
• В связи с применением открытых систем
весьма перспективным направлением
представляется объектноориентированный подход проектирования
и программирования.
• Объектно-ориентированное
программирование - это относительно
новый подход к разработке программных
систем.
Компьютерные сети
МИОЭС

3. Основные принципы объектно-ориентированного подхода:

Основные принципы объектноориентированного подхода:
• данные и процедуры объединяют в
программные объекты;
• для связи объектов используют
механизм посылки сообщения;
• объекты с похожими свойствами
объединяют в классы;
• объекты наследуют свойства других
объектов через иерархию классов.
Компьютерные сети
МИОЭС

4. Объектно-ориентированные системы обладают следующими основными cвойствами:


инкапсуляция (скрытие реализации) - данные и процедуры объекта
скрываются от внешнего пользователя, и связь с объектом
ограничивается набором сообщений, которые «понимает» объект;
полиморфизм (многозначность сообщений) - одинаковые сообщения
по-разному понимаются разными объектами, в зависимости от их
класса;
динамическое (позднее) связывание - значение имени (область памяти
для данных или текст программы для процедур) становится известным
только во время выполнения программы;
абстрактные типы данных - объединение данных и операций для
описания новых типов, позволяющие использовать новые типы
наравне с уже существующими.
наследование - позволяет при создании новых объектов использовать
свойства уже существующих объектов, описывая заново только те
свойства, которые отличаются.
Компьютерные сети
МИОЭС

5. Объектно-ориентированный подход реализации системы хорошо согласуется с основными свойствами открытых систем

• Дружественность. Удобство взаимодействия человека с
системой требует от последней наличия всех трех
вышеуказанных качеств.
• Мобильность. Инкапсуляция позволяет хорошо скрыть
машинно-зависимые части системы, которые должны быть
реализованы заново при переходе на другую платформу.
• Расширяемость. Наследование позволяет сэкономить
значительные средства при расширении системы, поскольку
многое не нужно создавать заново, а некоторые новые
компоненты можно получить, лишь слегка изменив старые.
• Интероперабельность. Способность системы
взаимодействовать с другими системами базируется на
принципе посылки сообщения и соответствующих понятиях
полиморфизма и динамического связывания.
Компьютерные сети
МИОЭС

6.

Свойства
открытых
систем
Свойства
объектноориентирова
нных систем
программир
ования
Расширяемость
Дружественность Мобильность (новые функции
(пользователь)
(платформы) и области
применения)
Интероперабельность (другие
системы,
пользователь)
Объектное
Инкапсуляция Наследование,
Полиформизм,
представление
(скрытие
абстрактные типы динамическое
предметной
реализации)
данных
связывание
области, наиболее
удобное человеку.
Сочетание всех
других свойств при
конструировании
пользовательского
интерфейса
Компьютерные сети
МИОЭС

7. Параллельные вычислительные системы

• Параллельные вычислительные системы —
это физические компьютерные, а также
программные системы, реализующие тем или
иным способом параллельную обработку данных
на многих вычислительных узлах.
• Например, для быстрой сортировки массива на
двухпроцессорной машине можно разделить
массив пополам и сортировать каждую половину
на отдельном процессоре.
• Сортировка каждой половины может занять разное
время, поэтому необходима синхронизация.
Компьютерные сети
МИОЭС

8. Параллелизм

• Идея распараллеливания вычислений основана на том,
что большинство задач может быть разделено на набор
меньших задач, которые могут быть решены
одновременно.
• Обычно параллельные вычисления требуют координации
действий.
• Параллельные вычисления существуют в нескольких
формах:




параллелизм на уровне битов,
параллелизм на уровне инструкций,
параллелизм данных,
параллелизм задач.
• Параллельные вычисления стали доминирующей
парадигмой в архитектуре компьютеров, в основном в
форме многоядерных процессоров.
Компьютерные сети
МИОЭС

9. Параллелизм

• Писать программы для параллельных систем
сложнее, чем для последовательных, так как
конкуренция за ресурсы представляет новый
класс потенциальных ошибок в программном
обеспечении (багов), среди которых состояние
гонки является самой распространённой.
• Взаимодействие и синхронизация между
процессами представляют большой барьер
для получения высокой производительности
параллельных систем.
Компьютерные сети
МИОЭС

10. Параллелизм на уровне битов

• Эта форма параллелизма основана на увеличении
размера машинного слова.
• Увеличение размера машинного слова уменьшает
количество операций, необходимых процессору
для выполнения действий над переменными, чей
размер превышает размер машинного слова.
• К примеру: на 8-битном процессоре нужно сложить
два 16-битных целых числа. Для этого вначале
нужно сложить нижние 8 бит чисел, затем сложить
верхние 8 бит и к результату их сложения
прибавить значение флага переноса. Итого 3
инструкции. С 16-битным процессором можно
выполнить эту операцию одной инструкцией.
Компьютерные сети
МИОЭС

11. Параллелизм на уровне инструкций

• Компьютерная программа — это, по существу, поток
инструкций, выполняемых процессором. Но можно изменить
порядок этих инструкций, распределить их по группам, которые
будут выполняться параллельно, без изменения результата
работы всей программы.
• Данный приём известен как параллелизм на уровне инструкций.
Продвижения в развитии параллелизма на уровне инструкций в
архитектуре компьютеров происходили с середины 1980-х до
середины 1990-х.
• Современные процессоры имеют многоступенчатый конвейер
команд.
• Каждой ступени конвейера соответствует определённое
действие, выполняемое процессором в этой инструкции на этом
этапе.
• Процессор с N ступенями конвейера может иметь
одновременно до N различных инструкций на разном уровне
законченности.
Компьютерные сети
МИОЭС

12. Параллелизм данных

• Основная идея подхода, основанного на параллелизме
данных, заключается в том, что одна операция
выполняется сразу над всеми элементами массива
данных.
• Различные фрагменты такого массива обрабатываются
на векторном процессоре или на разных процессорах
параллельной машины.
• Распределением данных между процессорами
занимается программа.
• Роль программиста в этом случае обычно сводится к
заданию настроек векторной или параллельной
оптимизации компилятору, директив параллельной
компиляции, использованию специализированных языков
для параллельных вычислений.
Компьютерные сети
МИОЭС

13. Параллелизм задач

• Стиль программирования, основанный
на параллелизме задач,
подразумевает, что вычислительная
задача разбивается на несколько
относительно самостоятельных
подзадач и каждый процессор
загружается своей собственной
подзадачей.
Компьютерные сети
МИОЭС

14. Распределённые операционные системы

• Распределённая ОС, динамически и автоматически
распределяя работы по различным машинам системы для
обработки, заставляет набор сетевых машин обрабатывать
информацию параллельно.
• Пользователь распределённой ОС, вообще говоря, не имеет
сведений о том, на какой машине выполняется его работа.
• Распределённая ОС существует как единая операционная
система в масштабах вычислительной системы.
• Каждый компьютер сети, работающей под управлением
распределённой ОС, выполняет часть функций этой глобальной
ОС.
• Распределённая ОС объединяет все компьютеры сети в том
смысле, что они работают в тесной кооперации друг с другом
для эффективного использования всех ресурсов компьютерной
сети.
Компьютерные сети
МИОЭС

15. Распределенные базы данных

• Распределённые базы данных (англ.
"Distributed DataBase", DDB)
представляют определённым образом
связанные между собой БД,
рассредоточенные на какой-либо
территории (локально или
регионально), обеспечивающие
свободный обмен информацией и поиск
данных в них.
Компьютерные сети
МИОЭС

16. Распределенные базы данных

• При распределённой обработке работа с
базой (представление данных, их
обработка и др.) ведётся на компьютере
клиента, а поддержание базы в
актуальном состоянии – на сервере.
• При этом такие БД обычно располагаться
на нескольких серверах – различных узлах
компьютерной сети, а некоторые данные
могут дублироваться.
Компьютерные сети
МИОЭС

17. Распределенные базы данных

• Размещение частей общей БД
бывает избыточным или безызбыточным.
• При избыточном размещении определяют
степень дублирования частей (фрагментов)
единой БД. Чтобы поддерживать целостность
БД необходимо постоянно корректировать все
её копии.
• Преимущества дублирования уменьшаются,
когда увеличивается стоимость хранения её
частей, что связано с необходимостью
обеспечивать устойчивость системы.
Компьютерные сети
МИОЭС

18. Распределенные базы данных

• Создание распределённых баз данных
(РБД) вызвано попыткой одновременного
решения двух задач: интеграции и
децентрализации.
• Интеграция подразумевает
централизованное управление и ведение
баз данных.
• Децентрализация обеспечивает хранение
данных там, где они появились и
обрабатываются.
Компьютерные сети
МИОЭС

19. Распределенные базы данных

• Выделяют однородные и неоднородные
РБД.
• В неоднородных РБД используются
различные СУБД.
• Основная проблема при этом
заключается в сложности их
интеграции.
Компьютерные сети
МИОЭС

20. Распределенные банки данных (РБнД)

Распределенные банки
данных (РБнД)
• Если накапливаемая в сетях машиночитаемая
(электронная) информация не размещается на
одной ЭВМ, то доступ к подобным базам и банкам
данных осуществляется с помощью сетевых СУБД.
• Они дают возможность безадресно обращаться к
любым данным (аналогично обычным БД,
расположенным на одной ЭВМ) и порой
предоставляют пользователям новые, ранее
неизвестные, возможности работы с информацией.
• При этом возникают новые проблемы, решение
которых осуществляется путём использования
новых технологий.
Компьютерные сети
МИОЭС

21. POSIX

Компьютерные сети
МИОЭС

22. POSIX

• POSIX (англ. Portable Operating System Interface
for Unix — Переносимый интерфейс
операционных систем Unix) — набор
стандартов, описывающих интерфейсы
между операционной системой и прикладной
программой.
• Стандарт создан для обеспечения
совместимости различных UNIX-подобных
операционных систем и переносимости
прикладных программ на уровне исходного
кода, но может быть использован и для не-Unix
систем.
Компьютерные сети
МИОЭС

23. Стандарт POSIX

• В стандарте POSIX определяется
переносимый интерфейс для UNIXподобных операционных систем.
• Этот стандарт, приобретающий все
большее значение, призван обеспечить
переносимость приложений на уровне
исходных текстов.
Компьютерные сети
МИОЭС

24. POSIX

• POSIX - это развивающийся набор
стандартов, каждый их которых
охватывает различные аспекты
операционных систем.
• Некоторые из них уже одобрены, в то
время как другие все еще находятся на
стадии разработки.
Компьютерные сети
МИОЭС

25. Необходимость стандарта

• Стандарт POSIX необходим по той причине, что,
несмотря на то, что операционная система UNIX
де-факто является стандартом, все же среди ее
реализаций есть достаточное количество
различий, не позволяющих создавать полностью
переносимые приложения.
• Но, если для переносимости на другую платформу
приложений UNIX достаточно небольшого
количества изменений, портируемость приложений
реального времени вызывает гораздо больше
трудностей, поскольку существует огромное
количество систем реального времени.
• UNIX не является системой реального времени и
стандартом де-факто для этих приложений.
Компьютерные сети
МИОЭС

26. Переносимость приложений

• Необходимость добиться переносимости
приложений для систем реального времени
привела к созданию в среде разработчиков POSIX
соответствующей рабочей группы.
• Эта рабочая группа разрабатывает стандарты,
которые добавляют к службам операционных
систем, используемых приложениями реального
времени, свойства POSIX (или UNIX).
• Ее задача формулируется так: "Для поддержки
переносимости приложений реального времени
разработать стандарты, содержащие минимальное
количество синтаксических или семантических
изменений или дополнений к стандартам POSIX".
Компьютерные сети
МИОЭС

27. Приложения реального времени

• Во многих приложениях реального времени, таких
как небольшие встроенные системы, есть
ограниченный набор специальных физических
средств, для которых нужны операционные
системы с минимальными функциональными
возможностями.
• Например, во многих системах может
отсутствовать жесткий диск, аппаратный диспетчер
памяти, а объем памяти может быть небольшим.
• Для таких систем необходимо, чтобы стандарт
позволял реализацию только конкретного
подмножества POSIX-функций.
Компьютерные сети
МИОЭС

28. Профили

• Рабочая группа определила четыре
профиля для контекста приложений
реального времени:
– для небольших встроенных систем,
– контроллеров реального времени,
– больших встроенных систем и
– больших систем реального времени.
Компьютерные сети
МИОЭС

29. Расширения для приложений реального времени

РАСШИРЕНИЯ ДЛЯ
ПРИЛОЖЕНИЙ РЕАЛЬНОГО
ВРЕМЕНИ
Компьютерные сети
МИОЭС

30. Диспетчеризация процессов реального времени


В базовом стандарте определяется модель параллельной работы
процессов, но никакого механизма диспетчеризации и никакой
концепции приоритетов не специфицируется.
Для приложений реального времени, которые должны быть
переносимыми, необходимо специфицировать некоторый механизм
диспетчеризации, удовлетворяющий специфике реального времени.
В стандарте POSIX.4 специфицируется три механизма
диспетчеризации.
У каждого процесса есть атрибут диспетчеризации, который должен
устанавливаться в соответствии с одним из трех механизмов:
– * SCHED_FIFO: это механизм приоритетной диспетчеризации с фиксированными
приоритетами, при которой процессы с одинаковыми приоритетами
обрабатываются по принципу "первым пришел - первым вышел" (FIFO). Этот
механизм должен обслуживать минимум 32 уровня приоритетов.
– * SCHED_RR: этот механизм подобен механизму SCHED__FIFO, но в нем для
диспетчеризации равноприоритетных процессов используется метод
квантования времени (круговая диспетчеризация).
– * SCHED_OTHER: этот механизм диспетчеризации определяется конкретной
реализацией.
Компьютерные сети
МИОЭС

31. Диспетчеризация процессов реального времени

• Распространенным методом диспетчеризации процессов
в системах реального времени является метод
диспетчеризации с фиксированными приоритетами.
• Он очень прост, и, назначая процессам приоритеты
монотонно-пропорционально или монотоннопропорционально с учетом некоторого порога, можно
добиться его высокой эффективности.
• Используя эти методы диспетчеризации, а также функции
установки приоритета каждого процесса и функции
включения (разрешения) нужного метода, в операционных
системах в стандарте POSIX можно выполнять
диспетчеризацию приложений реального времени.
Компьютерные сети
МИОЭС

32. Блокирование виртуальной памяти

• Хотя в стандарте POSIX.1 использование виртуальной
памяти не требуется, в UNIX-системах этот механизм
широко распространен.
• Он очень эффективен при работе программ, не
относящихся к программам реального времени, но
приводит к непредсказуемости времени реакции системы.
• Для того чтобы ограничить время доступа к памяти, в
стандарте POSIX.4 определяются функции блокировки
(фиксации) в памяти всего адресного пространства
процесса или отдельных его областей.
• Эти функции следует использовать для критичных ко
времени процессов, а также для процессов, с которыми
синхронизируются критичные ко времени процессы.
• В этом случае время их реакции может быть
предсказуемым.
Компьютерные сети
МИОЭС

33. Синхронизация процессов

• С. В стандарте POSIX.4 определяются функции
управления синхронизацией процессов с помощью
семафоров-счетчиков.
• Эти семафоры идентифицируются по имени,
находящемся в некотором пространстве имен,
определяемом при реализации стандарта.
• Это пространство имен может совпадать, но не
обязательно, с пространством имен файлов.
• Семафор-счетчик - это общий механизм синхронизации,
который позволяет реализовать взаимно исключающий
доступ к разделяемым ресурсам, передачу сигналов,
ожидание процессов и другие механизмы синхронизации.
• Одним из наиболее распространенных применений
семафоров является совместное использование данных
процессами.
Компьютерные сети
МИОЭС

34. Синхронизация процессов


К сожалению, семафоры-счетчики, определение которых дается в стандарте
POSIX.4, допускают "незаконное отрицание приоритета" .
Отрицание приоритета возникает тогда, когда высокоприоритетный процесс
вынужден ждать завершения некоторого действия, выполняемого процессом с более
низким приоритетом.
При использовании соответствующих протоколов, отрицание приоритета может быть
законным, вызванным продолжительностью выполнения критических секций, то есть
секций кода, во время выполнения которых процесс резервирует конкретный ресурс
для монопольного использования.
Однако при использовании условных семафоров может возникнуть незаконное
отрицание приоритета; это означает, что задержка высокоприоритетных задач
вызывается не длительностью выполнения критических секций, а зависит от общего
времени выполнения низкоприоритетных задач.
Эта ситуация может возникнуть тогда, когда высокоприоритетная задача ожидает
освобождения низкоприоритетной задачей семафора, который управляет доступом к
разделяемым ресурсам, а низкоприоритетная задача вытеснена задачей с
промежуточным значением приоритета.
Компьютерные сети
МИОЭС

35. Разделяемая Память


В соответствии с POSIX.1 процессы имеют независимые адресные
пространства, но во многих приложениях реального времени (и других)
требуется совместное использование, с очень малыми издержками,
большого количества данных.
Это возможно в случае, если процессы могут разделять части
физической памяти.
В стандарте POSIX.4 определяются объекты разделяемой памяти,
представляющие собой участки физической памяти, которые могут
отображаться на адресное пространство процесса.
Когда два или несколько процессов отображают один и тот же объект,
они разделяют связанный с ним участок памяти.
Как и в случае семафоров, объекты разделяемой памяти
идентифицируются по имени, принадлежащему некоторому
пространству имен, которое определяется при реализации стандарта.
Если к объектам данных, находящихся в разделяемой памяти, нужен
взаимно исключающий доступ, для управления этим доступом можно
использовать семафоры.
Компьютерные сети
МИОЭС

36. Сигналы реального времени


Механизм сигналов позволяет извещать о событиях, возникающих в
системе, но требования приложений реального времени полностью
удовлетворить не может.
Сигналы не могут образовывать очереди, поэтому некоторые события
могут теряться.
Сигналы не могут иметь приоритетов, из-за чего возможно увеличение
времени отклика на события, требующие неотложной реакции.
Так как многие системы реального времени должны обеспечивать
быстрый обмен событиями, интерфейс сигналов в стандарте POSIX.4
расширен, чтобы получить следующие возможности:
– Сигналы реального времени устанавливаются в очередь, поэтому события не
теряются.
– Необработанные сигналы реального времени извлекаются из очереди по
приоритетам, где в качестве приоритета служит номер сигнала.
– Сигналы реального времени содержат дополнительное поле данных, которое
может использоваться прикладной системой для обмена между генератором
сигнала и его обработчиком.
– Расширен диапазон доступных прикладной системе сигналов.
Компьютерные сети
МИОЭС

37. Взаимодействие процессов

• Для взаимодействия процессов определяется простой
механизм очередей сообщений.
• Очереди сообщений идентифицируются по имени,
принадлежащему некоторому пространству имен,
определяемому при реализации стандарта.
• Сообщения имеют связанное с ними поле приоритета и
извлекаются из очереди в соответствии с приоритетом.
• Это способствует сокращению незаконного отрицания
приоритета, возникающего в системе.
• Передача и получение сообщений может блокироваться и
разблокироваться; передача и получение не
синхронизируются, то есть, отправитель не ждет, когда
получатель действительно извлечет сообщение из
очереди.
Компьютерные сети
МИОЭС

38. Часы и таймеры

• Определяются часы реального времени, которые
измеряют время с точностью настенных часов.
• Эти часы должны обеспечивать разрешение минимум 20
мс.
• Так как время представляется с наносекундным
разрешением, разработчики могут воспользоваться
высокоточными аппаратными часами.
• Для отсчета временных интервалов на основе часов
реального времени или других часов, определенных при
реализации стандарта, могут создаваться таймеры.
• По истечении заданного интервала времени эти таймеры
генерируют сигнал, направленный процессу, создавшему
данный таймер.
Компьютерные сети
МИОЭС

39. Асинхронный Ввод/Вывод

• В стандарте определяются функции, которые
обеспечивают возможность совмещать
прикладную обработку и операции В/В,
инициированные данным приложением.
• Асинхронные операции В/В подобны обычным
операциям В/В, за исключением того, что после
того как процесс инициировал асинхронную
операцию В/В, он продолжает выполняться
параллельно этой операции.
• Когда операция завершается, данному
приложению может быть послан сигнал.
Компьютерные сети
МИОЭС

40. Другие Функции

• В стандарте POSIX.4 определяются
другие функции, такие, как
синхронизированный ввод/вывод,
файлы реального времени и т. п.
Компьютерные сети
МИОЭС

41. Threads-расширение

THREADS-РАСШИРЕНИЕ
Компьютерные сети
МИОЭС

42. Интерфейс для поддержки нескольких параллельных действий

• В стандарте POSIX.4a определяется
интерфейс для поддержки нескольких
параллельных действий внутри каждого
POSIX-процесса.
• Этот интерфейс называется "нитями" (threads).
• Нити, определяемые в POSIX.4a, имеют
некоторое состояние взаимодействия, которое
обладает меньшим контекстом, чем состояние
процесса.
• Все нити внутри одного процесса разделяют
одно и то же адресное пространство.
Компьютерные сети
МИОЭС

43. Управление нитями

• Эти функции позволяют управлять созданием и
завершением выполнения нитей, а также связанными с
ними операциями.
• Определяются функции создания нити, ожидания
завершения нити, нормального завершения нити,
открепления нити (то есть указания разработчику, что
связанная с нитью память может после завершения нити
перераспределяться) или создания конкретной нити
только в том случае, если она еще не была создана.
• Другие функции позволяют управлять идентификаторами
нитей.
• Определяются также функции для управления
атрибутами при создании нитей, такими, как размер стека,
возможность перераспределения памяти, занимаемой
нитью после ее создания, и т.п.
Компьютерные сети
МИОЭС

44. Диспетчеризация нитей


В. Для нитей определяются те же методы диспетчеризации, что и для процессов в стандарте
POSIX.4 (приоритетное вытеснение, с FIFO- или круговым обслуживанием равноприоритетных
нитей).
Так как в системе могут одновременно существовать два планировщика (диспетчера) планировщик процессов и планировщик нитей - определяется концепция конкурентного
пространства.
Конкурентное пространство некоторой нити - это набор нитей, с которыми она конкурирует за
центральный процессор.
При реализации может возникнуть три основных вида различных конкурентных пространств:



Глобальная Диспетчеризация. Все нити имеют глобальное конкурентное пространство, и, следовательно,
диспетчеризация каждой нити производится с учетом всех остальных нитей, имеющихся в системе,
независимо от того, какому процессу они принадлежат.
Локальная Диспетчеризация. Нити конкурируют только с другими нитями того же самого процесса.
Диспетчеризация производится на двух уровнях. Сначала подвергаются диспетчеризации все процессы по
отношению друг к другу. Затем нити выбранного процесса конкурируют друг с другом за центральный
процессор.
Смешанная Диспетчеризация. Некоторые нити имеют глобальное конкурентное пространство, а другие v
локальное. Диспетчеризация производится на двух уровнях: на первом уровне диспетчеризации подвергаются
процессы и глобальные нити; на втором уровне происходит диспетчеризация локальных нитей выбранного
процесса.
Наилучшие результаты для приложений реального времени дает глобальная и смешанная
диспетчеризация, так как в этих случаях можно производить диспетчеризацию на одном и том же
уровне всех, самых разных, конкурирующих объектов, обладающих жесткими временными
требованиями.
Компьютерные сети
МИОЭС

45. Синхронизация нитей


Для нитей определяется два примитива синхронизации: мьютексы и условные
переменные.
Мьютексы используются для синхронизации взаимно исключающего (mutually
exlusive) доступа нитей к разделяемым ресурсам, а условные переменные
используются для сигнализации и ожидания событий среди нитей.
Мьютексы определяются с помощью трех альтернативных протоколов
синхронизации:



NO_PRIO_INHERIT. Приоритет нити не зависит от ее владения мьютексами (мьютексом
владеет данная нить, которая его заблокировала);
PRIOJNHERIT. Нить, владеющая некоторым мьютексом, наследует приоритеты нитей,
ожидающих захвата этого мьютекса. Это протокол наследования приоритетов;
PRIO_PROTECT. Когда нить блокирует захваченный ею мьютекс, она наследует приоритет,
соответствующий данному мьютексу. Этот приоритет определяется прикладной программой
как атрибут мьютекса. В случае использования соответствующего значения, равного
наименьшему целому числу, превышающему значения приоритетов, получаем протокол
приоритетной защиты, называемый также эмуляцией протокола с перекрытием приоритета .
Используя один из двух последних протоколов, можно избежать незаконного
отрицания приоритета, достигая, таким образом, высокой эффективности работы
системы с жесткими требованиями к характеристикам реального времени.
Компьютерные сети
МИОЭС

46. Другие функции

• Для управления специфическими
данными, связанными с нитями, для
завершения нитей, для посылки
сигналов нитям и управления
реентерабельными функциями, в
стандарте POSIX.4а определяются и
другие функции.
Компьютерные сети
МИОЭС

47. Дополнительные расширения стандарта для приложений реального времени

ДОПОЛНИТЕЛЬНЫЕ РАСШИРЕНИЯ
СТАНДАРТА ДЛЯ ПРИЛОЖЕНИЙ
РЕАЛЬНОГО ВРЕМЕНИ
Компьютерные сети
МИОЭС

48. Таймауты

• Некоторые службы операционной системы могут
приостанавливать вызывающий процесс на
неопределенный период времени, пока не
освободятся и не станут доступными необходимые
ресурсы.
• Службы, которые могут с наибольшей
вероятностью использоваться в критичных ко
времени участках прикладных программ и в
которых еще не используются таймауты:




Ожидать семафор для разблокирования;
Ожидать прибытия сообщения в очередь сообщений;
Послать сообщение для установки его в очередь;
Ожидать мьютекс для разблокирования.
Компьютерные сети
МИОЭС

49. Часы времени выполнения

• Для каждого процесса и каждой нити
определяются необязательные часы
процессорного времени.
• Для управления часами времени выполнения
используются интерфейсы часов и таймеров.
• На базе этих часов могут определяться
таймеры; они могут измерять излишний расход
времени процессом или нитью, позволяя
динамически выявлять программные ошибки
или ошибки вычисления максимально
возможного времени выполнения (в наихудшем
случае)..
Компьютерные сети
МИОЭС

50. Спорадический сервер

• Определяется новый механизм диспетчеризации
(SCHED_SPORADIC), в котором реализуется алгоритм
диспетчеризации спорадического сервера.
• Этот механизм может использоваться для обработки
апериодических событий на нужном уровне приоритета.
• При этом гарантированно удовлетворяются временные
требования, предъявляемые к низкоприоритетным
задачам.
• Спорадический сервер обеспечивает быстрое время
отклика и делает поведение системы, в которой
обрабатываются апериодические события,
предсказуемым.
Компьютерные сети
МИОЭС

51. Управление прерываниями

• Многие системы реального времени должны иметь возможность
захватывать прерывания, сгенерированные специальными
устройствами, и обрабатывать их в прикладной программе.
• Предложенные в стандарте функции позволяют процессу или
нити обслужить прерывание с помощью разработанной
пользователем подпрограммы обработки прерываний,
блокироваться в ожидании прибытия прерывания и защитить
критичные участки кода от прерывания.
• Из-за множества отличий в обработке прерываний в разных
архитектурах определяемые интерфейсы не позволят
достигнуть полной переносимости прикладных программ.
• Однако с помощью данного интерфейса, благодаря
установлению эталонной модели и заключению немобильного
кода в определенные модули, переносимость приложений
улучшается.
Компьютерные сети
МИОЭС

52. Управление устройствами ввода/вывода


В системах реального времени взаимодействие со средой обычно
происходит через специальные устройства, такие, как цифровые или
аналоговые устройства ввода/вывода, счетчики и т. п.
Драйверы этих специальных устройств обычно пишутся разработчиком
приложения, а стандартизованные интерфейсы этих драйверов
позволяют хорошо определить прикладные операции, вызывающие
такой драйвер.
Определяется функция, которая позволяет прикладной программе
передать управляющую информацию в драйвер и из драйвера
устройства.
Аналогично программам, использующим функции управления
прерываниями, программы, использующие функции управления
устройствами, могут не быть полностью переносимыми, так как сами
драйверы обычно немобильны.
Однако при использовании стандартного эталонного интерфейса
взаимодействия с драйверами устройств переносимость прикладных
систем улучшается.
Компьютерные сети
МИОЭС

53. Другие функции

• В POSIX.4b определяются и другие
интересные возможности, такие, как
эффективное создание процесса
(spawn).
Компьютерные сети
МИОЭС

54. Профили прикладных контекстов реального времени

ПРОФИЛИ ПРИКЛАДНЫХ
КОНТЕКСТОВ РЕАЛЬНОГО
ВРЕМЕНИ
Компьютерные сети
МИОЭС

55. Подмножество интерфейсов


Для маленьких встроенных систем реального времени было бы
предпочтительно некоторое подмножество этих интерфейсов.
Например, многие небольшие встроенные системы имеют
ограниченную аппаратную поддержку, из-за чего очень трудно
реализовать такие возможности, как файловая система или
независимые адресные пространства для процессов.
Определяются четыре системы реального времени:
– Минимальная Система. Соответствует небольшой встроенной системе без
диспетчера памяти (MMU), файловой системы (диска) и терминала В/В.
Разрешается только один процесс, но с параллельным выполнением нескольких
нитей.
– Контроллер реального времени. Соответствует управляющей системе
специального назначения. Подобен минимальному профилю реального
времени, но с добавлением файловой системы и терминала В/В. Разрешается
только один процесс с несколькими нитями.
– Специализированная Система. Соответствует большой встроенной системе без
файловой системы. В ней выполняется несколько процессов и нитей.
– Многоцелевая Система. Соответствует большой системе реального времени со
всеми поддерживаемыми функциями.
Компьютерные сети
МИОЭС

56. Протоколы и интерфейсы

ПРОТОКОЛЫ И
ИНТЕРФЕЙСЫ
Компьютерные сети
МИОЭС

57. TCP

— это транспортный механизм,
предоставляющий поток данных, с предварительной
установкой соединения, за счёт этого дающий
уверенность в достоверности получаемых данных,
осуществляет повторный запрос данных в случае
потери данных и устраняет дублирование при
получении двух копий одного пакета.
• Гарантирует целостность передаваемых данных и
уведомление отправителя о результатах передачи.
• Реализация TCP, как правило, встроена в ядро ОС,
хотя есть и реализации TCP в контексте
приложения.
Компьютерные сети
МИОЭС

58. SOCKET


Со́кеты (англ. socket — разъём) — название программного
интерфейса для обеспечения обмена данными между процессами.
Процессы при таком обмене могут исполняться как на одной ЭВМ, так
и на различных ЭВМ, связанных между собой сетью.
Сокет — абстрактный объект, представляющий конечную точку
соединения.
Следует различать клиентские и серверные сокеты.
Клиентские сокеты грубо можно сравнить с оконечными
аппаратами телефонной сети, а серверные — с коммутаторами.
Клиентское приложение (например, браузер) использует только
клиентские сокеты, а серверное (например, веб-сервер, которому
браузер посылает запросы) — как клиентские, так и серверные сокеты.
Интерфейс сокетов впервые появился в Unix.
Программный интерфейс сокетов описан в стандарте POSIX.1 и в той
или иной мере поддерживается всеми современными операционными
системами.
Компьютерные сети
МИОЭС

59. Принципы сокетов


Каждый процесс может создать слушающий сокет (серверный сокет) и привязать его
к какому-нибудь порту операционной системы (в UNIX непривилегированные
процессы не могут использовать порты меньше 1024).
Слушающий процесс обычно находится в цикле ожидания, то есть просыпается при
появлении нового соединения.
При этом сохраняется возможность проверить наличие соединений на данный
момент, установить тайм-аут для операции и т.д.
Каждый сокет имеет свой адрес.
ОС семейства UNIX могут поддерживать много типов адресов, но обязательными
являются INET-адрес и UNIX-адрес.
Если привязать сокет к UNIX-адресу, то будет создан специальный файл (файл
сокета) по заданному пути, через который смогут сообщаться любые локальные
процессы путём чтения/записи из него.
Сокеты типа INET доступны из сети и требуют выделения номера порта.
Обычно клиент явно подсоединяется к слушателю, после чего любое чтение или
запись через его файловый дескриптор будут передавать данные между ним и
сервером.
Компьютерные сети
МИОЭС

60. HTTP

(англ. HyperText Transfer Protocol — «протокол
передачи гипертекста») — протокол прикладного
уровня передачи данных (изначально — в виде
гипертекстовых документов).
• Основой HTTP является технология «клиентсервер», то есть предполагается
существование потребителей (клиентов),
которые инициируют соединение и посылают
запрос, и поставщиков (серверов), которые
ожидают соединения для получения запроса,
производят необходимые действия и
возвращают обратно сообщение с
результатом.
Компьютерные сети
МИОЭС

61. URI

• Основным объектом манипуляции в HTTP является
ресурс, на который указывает URI (англ. Uniform Resource
Identifier) в запросе клиента.
• Обычно такими ресурсами являются хранящиеся на
сервере файлы, но ими могут быть логические объекты
или что-то абстрактное.
• Особенностью протокола HTTP является возможность
указать в запросе и ответе способ представления одного
и того же ресурса по различным параметрам: формату,
кодировке, языку и т. д.
• Именно благодаря возможности указания способа
кодирования сообщения клиент и сервер могут
обмениваться двоичными данными, хотя данный
протокол является текстовым.
Компьютерные сети
МИОЭС

62. Спасибо за внимание!

Компьютерные сети
МИОЭС
English     Русский Правила