Лекции - Часть 7 - файл n1.doc
Лекции - Часть 7скачать (7624.4 kb.)
Доступные файлы (1):
n1.doc
7. Технологии параллельных и распределенных систем Рассмотрим технологию (или инфраструктуру) параллельной и распределенной обработки, которая нужна в приложениях реального времени. Инфраструктуру обеспечивают операционная система, вычислительная сеть и программное обеспечение (ПО) промежуточного слоя.
7.1. Среды для параллельной обработки Основные среды для параллельной обработки можно отнести к следующим категориям: мультипрограммные среды, симметричные мультипроцессорные среды и распределенные среды.
7.1.1.
Мультипрограммная среда. В мультипрограммной (или многозадачной) среде несколько задач разделяют единственный процессор. Виртуальный параллелизм обеспечивается операционной системой, которая управляет выделением процессора отдельным задачам, так что создается иллюзия, будто у каждой задачи есть свой процессор. Пример мультипрограммной среды приведен на рис. 7.1. Здесь изображены плата процессора (ЦП) и плата памяти (их может быть несколько). В памяти хранятся коды и данные каждой задачи, а также самой операционной системы. Платы соединены между собой системной шиной. В примере система включает также два устройства ввода/вывода, дисплей и датчик, все они подключаются к шине с помощью интерфейсных карт, на каждой из которых имеется контроллер устройства.
Рис. 7.1. Мультипрограммная среда (с одним процессором)
7.1.2.
Симметричная мультипроцессорная среда. В симметричной мультипроцессорной среде есть два или несколько процессоров с общей памятью. Для всех процессоров существует единое физическое адресное пространство, поэтому все процессы находятся в общей памяти. В такой среде поддерживается реальный параллелизм, поскольку процессоры работают одновременно. Задачи, исполняемые на разных процессорах, могут обмениваться информацией с помощью разделяемой памяти. Мультипроцессорная среда показана на рис. 7.2.
Рис. 7.2. Симметричная мультипроцессорная среда
7.1.3.
Распределенная среда. На рис.7.3 показана типичная распределенная среда, где есть несколько узлов, связанных между собой сетью. Каждый узел – это компьютер с собственной локальной памятью, который обычно представляет собой мультипрограммную (см. рис.7.1) или симметричную мультипроцессорную (см. рис.7.2) среду. Кроме того, в каждом узле имеется сетевая карта. Важным отличием распределенной среды является то, что у узлов нет общей памяти. Следовательно, распределенное приложение состоит из параллельных процессов, работающих в разных узлах. Каждый процесс может иметь несколько потоков, исполняемых в том же узле. Поскольку разделяемой памяти нет, то процессы в разных узлах должны обмениваться информацией, посылая сообщения по сети.
Рис. 7.3. Распределенная среда
7.2. Поддержка исполнения в мультипрограммной и мультипроцессорной средах Поддержка исполнения параллельных вычислений реализуется:
– ядром операционной системы. Оно предоставляет сервисы, необходимые для параллельной обработки. В некоторых современных операционных системах минимальную поддержку дает микроядро, а все остальное – системные задачи;
– системой времени исполнения в языке программирования, поддерживающем параллелизм;
– пакетом для поддержки потоков. Предоставляет сервисы, необходимые для управления потоками (облегченными процессами) внутри тяжеловесного процесса.
В языках, ориентированных на последовательное программирование, например
С, C++, Pascal и
Fortran, нет встроенной поддержки параллелизма. Поэтому при разработке параллельных многозадачных приложений на этих языках приходится прибегать к помощи ядра или библиотеки потоков.
В параллельных языках программирования, скажем
Ada или
Java, имеются конструкции для поддержки взаимодействия и синхронизации задач. В таком случае система времени выполнения, являющаяся частью языка, отвечает за планирование задач и предоставление необходимых сервисов.
7.2.1.
Сервисы операционной системы. Ядро операционной системы обычно предоставляет следующие сервисы:
– вытесняющее планирование с приоритетами. Задача с наивысшим приоритетом исполняется, как только она будет готова, – например, если ее активизирует прерывание ввода/вывода;
– межзадачную коммуникацию посредством сообщений;
– взаимное исключение с помощью семафоров;
– синхронизацию по событию с использованием сигналов. Вместо этого для синхронизации могут применяться сообщения;
– обработку прерываний и базовые сервисы ввода/вывода;
– управление памятью. Эта подсистема отвечает за отображение виртуальной памяти каждой задачи на физическую память.
В качестве примеров широко распространенных систем с поддержкой параллелизма в ядре можно назвать несколько версий
UNIX (в том числе
Linux, Solaris и
AIX),
Windows 98,
Windows NT и
Windows 2000.
Если имеется поддержка в ядре, то операции
send message и
receive message для обмена сообщениями, а также
wait и
signal для синхронизации по событию реализуются как прямые вызовы ядра. Взаимно исключающий доступ к критическим секциям обеспечивается операциями над семафорами
acquire и
release, которые также предоставляет ядро.
7.2.2.
Стандарт POSIX. POSIX (
Portable Operating System Interface Standard – стандарт переносимого интерфейса операционной системы) – это стандарт разработки программного обеспечения операционных систем, принятый
IEEE. Обычно его называют
POSIX 1003.
POSIX основан на операционной системе
UNIX – наиболее распространенной переносимой ОС.
POSIX 1003.1 определяет базовые сервисы операционной системы,
POSIX 1003
.b – расширения для режима реального времени, а
POSIX 1003.1
с – расширения для параллельной обработки.
Стандарт
POSIX 1003.1 задает библиотечные функции, которые должна поддерживать любая
POSIX-совместимая система
UNIX, например
open, read и
fork.
POSIX 1003.1
b определяет стандартный интерфейс операционной системы реального времени: системные вызовы, списки параметров и информацию о состоянии, возвращаемую каждым вызовом.
В стандарте
POSIX 1003.1
b указаны следующие сервисы:
1. Сервисы для управления параллельными задачами. Следующие три сервиса предоставляют средства для обмена информацией между задачами и для синхронизации:
– двоичные семафоры;
– сигналы реального времени;
– передача сообщений. Этот сервис позволяет задаче с наивысшим приоритетом получать процессор по первому запросу, а значит, гарантирует быструю реакцию для наиболее критичных по времени задач;
– вытесняющее планирование с приоритетами;
2. Сервисы времени.
Следующий сервис важен для реализации событий таймера с высоким разрешением и выполнения измерений в системах реального времени:
– часы и таймеры реального времени;
3. Сервисы управления памятью:
– захват памяти задачей (см. следующий раздел);
– файлы, проецируемые на память, и разделяемая память;
4. сервисы ввода/вывода:
– синхронный ввод/вывод;
– асинхронный ввод/вывод. Этот сервис необходим для реализации перекрытия между процессорными вычислениями и вводом/выводом.
Стандарт
POSIX 1003.1
с добавляет к
POSIX спецификацию параллельных потоков, которые позволяют программе запускать несколько экземпляров процедуры, выполняемых в раздельных потоках управления (задачах). Исполняемая программа представляет собой тяжеловесный процесс, имеющий собственное адресное пространство. Поток внутри него – это облегченный процесс.
В терминологии
POSIX тяжеловесные процессы называются просто процессами, а облегченные процессы – потоками (
thread). Все потоки внутри данного процесса функционируют в одном и том же адресном пространстве.
7.2.3.
Операционные системы реального времени. Большинство систем реального времени поддерживают ядро или микроядро. Рассмотрим требования к операционной системе реального времени. Итак, операционная система реального времени должна:
– поддерживать многозадачность;
– реализовывать вытесняющее планирование с приоритетами. Это означает, в частности, что у каждой задачи должен быть свой приоритет;
– предоставлять механизмы синхронизации и обмена информацией между задачами;
– давать задачам возможности захвата памяти. В системах реального времени с жесткими временными ограничениями параллельные задачи обычно находятся в памяти целиком. Это устраняет неопределенность и разброс во времени отклика, обусловленные подкачкой страниц. Механизм захвата памяти позволяет задаче с жесткими ограничениями по времени выполнения разместиться в оперативной памяти, не опасаясь, что операционная система выгрузит ее;
– включать механизм наследования приоритета. Когда задача
А входит в критическую секцию, ее приоритет должен быть повышен. В противном случае задача
А может быть вытеснена другой высокоприоритетной задачей, которая не сумеет войти в эту же критическую секцию, поскольку она занята задачей
А. Таким образом, высокоприоритетная задача окажется навечно заблокированной;
– иметь предсказуемое поведение (например, при выполнении контекстного переключения, синхронизации задач и обработке прерываний). Это означает, что максимальное время отклика должно быть прогнозируемо при любой ожидаемой нагрузке на систему.
Существует много специализированных операционных систем реального времени, в том числе
pSOS, VRTX и
iRMX. Растет также число систем реального времени, совместимых со стандартом
POSIX: это, например,
LynxOS,
QNX и
HP-RT. Кроме того, есть системы, доводящие
Windows NT до уровня системы реального времени:
RTX,
INTime и
Hyperkernel [29].