Среды для параллельной обработки. Поддержка исполнения в мультипрограммной и мультипроцессорной средах.
Технологии параллельных и распределенных систем
Рассмотрим технологию (или инфраструктуру) параллельной и распределенной обработки, которая нужна в приложениях реального времени. Инфраструктуру обеспечивают операционная система, вычислительная сеть и программное обеспечение (ПО) промежуточного слоя.
Среды для параллельной обработки
Основные среды для параллельной обработки можно отнести к следующим категориям: мультипрограммные среды, симметричные мультипроцессорные среды и распределенные среды.
Мультипрограммная среда. В мультипрограммной (или многозадачной) среде несколько задач разделяют единственный процессор. Виртуальный параллелизм обеспечивается операционной системой, которая управляет выделением процессора отдельным задачам, так что создается иллюзия, будто у каждой задачи есть свой процессор.
Симметричная мультипроцессорная среда. В симметричной мультипроцессорной среде есть два или несколько процессоров с общей памятью. Для всех процессоров существует единое физическое адресное пространство, поэтому все процессы находятся в общей памяти. В такой среде поддерживается реальный параллелизм, поскольку процессоры работают одновременно. Задачи, исполняемые на разных процессорах, могут обмениваться информацией с помощью разделяемой памяти
Распределенная среда. Типичная распределенная среда — это несколько узлов, связанных между собой сетью. Каждый узел – это компьютер с собственной локальной памятью, который обычно представляет собой мультипрограммную или симметричную мультипроцессорную среду. Кроме того, в каждом узле имеется сетевая карта. Важным отличием распределенной среды является то, что у узлов нет общей памяти. Следовательно, распределенное приложение состоит из параллельных процессов, работающих в разных узлах. Каждый процесс может иметь несколько потоков, исполняемых в том же узле. Поскольку разделяемой памяти нет, то процессы в разных узлах должны обмениваться информацией, посылая сообщения по сети.
|
|
Поддержка исполнения в мультипрограммной и мультипроцессорной средах
Поддержка исполнения параллельных вычислений реализуется:
·ядром операционной системы. Оно предоставляет сервисы, необходимые для параллельной обработки. В некоторых современных операционных системах минимальную поддержку дает микроядро, а все остальное – системные задачи;
·системой времени исполнения в языке программирования, поддерживающем параллелизм;
·пакетом для поддержки потоков. Предоставляет сервисы, необходимые для управления потоками (облегченными процессами) внутри тяжеловесного процесса.
|
|
В языках, ориентированных на последовательное программирование, например С, C++, Pascal и Fortran, нет встроенной поддержки параллелизма. Поэтому при разработке параллельных многозадачных приложений на этих языках приходится прибегать к помощи ядра или библиотеки потоков.
В параллельных языках программирования, скажем Ada или Java, имеются конструкции для поддержки взаимодействия и синхронизации задач. В таком случае система времени выполнения, являющаяся частью языка, отвечает за планирование задач и предоставление необходимых сервисов.
Сервисы операционной системы. Стандарт POSIX.
Сервисы операционной системы.
• вытесняющее планирование с приоритетами. Задача с наивысшим приоритетом исполняется, как только она будет готова, – например, если ее активизирует прерывание ввода/вывода;
• межзадачную коммуникацию посредством сообщений;
• взаимное исключение с помощью семафоров;
• синхронизацию по событию с использованием сигналов. Вместо этого для синхронизации могут применяться сообщения;
• обработку прерываний и базовые сервисы ввода/вывода;
• управление памятью. Эта подсистема отвечает за отображение виртуальной памяти каждой задачи на физическую память.
|
|
В качестве примеров широко распространенных систем с поддержкой параллелизма в ядре можно назвать несколько версий UNIX (в том числеLinux, Solaris и AIX), Windows 98, Windows NT и Windows 2000.
Если имеется поддержка в ядре, то такие операции как send message иreceive message для обмена сообщениями, а также wait и signal для синхронизации по событию реализуются как прямые вызовы ядра. Взаимно исключающий доступ к критическим секциям обеспечивается операциями над семафорами acquire и release, которые также предоставляет ядро.
Стандарт 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.1b определяет стандартный интерфейс операционной системы реального времени: системные вызовы, списки параметров и информацию о состоянии, возвращаемую каждым вызовом.
|
|
В стандарте POSIX 1003.1b указаны следующие сервисы:
1. Сервисы для управления параллельными задачами. Следующие три сервиса предоставляют средства для обмена информацией между задачами и для синхронизации:
• двоичные семафоры;
• сигналы реального времени;
• передача сообщений. Этот сервис позволяет задаче с наивысшим приоритетом получать процессор по первому запросу, а значит, гарантирует быструю реакцию для наиболее критичных по времени задач;
• вытесняющее планирование с приоритетами;
2. Сервисы времени.
Следующий сервис важен для реализации событий таймера с высоким разрешением и выполнения измерений в системах реального времени:
• часы и таймеры реального времени;
3. Сервисы управления памятью:
• захват памяти задачей (см. следующий раздел);
• файлы, проецируемые на память, и разделяемая память;
4. сервисы ввода/вывода:
• синхронный ввод/вывод;
• асинхронный ввод/вывод. Этот сервис необходим для реализации перекрытия между процессорными вычислениями и вводом/выводом.
Стандарт POSIX 1003.1с добавляет к POSIX спецификацию параллельных потоков, которые позволяют программе запускать несколько экземпляров процедуры, выполняемых в раздельных потоках управления (задачах). Исполняемая программа представляет собой тяжеловесный процесс, имеющий собственное адресное пространство. Поток внутри него – это облегченный процесс.
В терминологии POSIX тяжеловесные процессы называются просто процессами, а облегченные процессы – потоками (thread). Все потоки внутри данного процесса функционируют в одном и том же адресном пространстве.
Операционные системы реального времени. Большинство систем реального времени поддерживают ядро или микроядро. Рассмотрим требования к операционной системе реального времени.
Итак, операционная система реального времени должна:
• поддерживать многозадачность;
• реализовывать вытесняющее планирование с приоритетами. Это означает, в частности, что у каждой задачи должен быть свой приоритет;
• предоставлять механизмы синхронизации и обмена информацией между задачами;
• давать задачам возможности захвата памяти. В системах реального времени с жесткими временными ограничениями параллельные задачи обычно находятся в памяти целиком. Это устраняет неопределенность и разброс во времени отклика, обусловленные подкачкой страниц. Механизм захвата памяти позволяет задаче с жесткими ограничениями по времени выполнения разместиться в оперативной памяти, не опасаясь, что операционная система выгрузит ее;
• включать механизм наследования приоритета. Когда задача А входит в критическую секцию, ее приоритет должен быть повышен. В противном случае задача А может быть вытеснена другой высокоприоритетной задачей, которая не сумеет войти в эту же критическую секцию, поскольку она занята задачей А. Таким образом, высокоприоритетная задача окажется навечно заблокированной;
• иметь предсказуемое поведение (например, при выполнении контекстного переключения, синхронизации задач и обработке прерываний). Это означает, что максимальное время отклика должно быть прогнозируемо при любой ожидаемой нагрузке на систему.
Существует много специализированных операционных систем реального времени, в том числе pSOS, VRTX и iRMX. Растет также число систем реального времени, совместимых со стандартом POSIX: это, например,LynxOS, QNX и HP-RT. Кроме того, есть системы, доводящие Windows NT до уровня системы реального времени: RTX, INTime и Hyperkernel.
Дата добавления: 2018-08-06; просмотров: 359; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!