Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A_Kpo.pdf
Скачиваний:
157
Добавлен:
10.06.2015
Размер:
1.82 Mб
Скачать

СТК – система телеконтроля

Сечение 1: А1,А2,А3,А4, А7,А11.

Сечение 2: А1,А2,А3,А4,А5,А6,А7,а8,А9,А11 и т.п.

24. Представление работы ПО СТС в виде набора параллельных процессов.

Из рассмотрения временной диаграммы работы ПО следует, что возможен другой способ реализации управления исполнения задач ПО в рамках этой же временной диаграммы.

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

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

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

Потоки, ассоциируемые с такими задачами, являются «облегченными процессами» и реализуют внутренний параллелизм процессов.

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

Представление работы системы в виде связанных между собой процессов позволяет легче проводить масштабирование системы (добавлять и убавлять процессы). В этом смысле такое представление также является более открытым для изменений.

25. Задачи и процессы. Контекст процесса

Физический процесс - упорядоченная последовательность действий в системе над информацией, энергией или материей, приводящая к требуемому результату. Применительно к ПО ЦВМ физический процесс (задача) может реализовываться работой одной или некоторой совокупностью структурных единиц ПО – программ.

38

Реализация многозадачности может быть различной в различных ОС. Однако, в настоящее время сформировался некоторый единообразный подход, связанный с определением «процессов и потоков». В деталях эти понятия могут для различных ОС несколько различаться, но принципиально для авторитетных ОС эти понятия одинаковы поскольку стандартов на ОС нет.

Процесс - это контейнер, содержащий память, ресурсы, открытые файлы и потоки. При этом в процессоре исполняется порожденный процессом поток или потоки.

Распределяя ресурсы ЦВМ между процессами, ОС обеспечивает и поддерживает изоляцию между ними, чтобы уберечь задачи от неожиданного и несанкционированного взаимодействия. В частности, процессы снабжаются отдельными виртуальными адресными пространствами, чтобы избежать наложений по памяти.

Однако, в процессах в свою очередь может иметься необходимость в распараллеливании вычислений с тесными связями между отдельными их потоками. Такие параллельные потоки из всех разделяемых ресурсов ЦВМ требуют только разделения времени процессора. Многопоточная обработка является видом многозадачной обработки без защиты задач друг от друга при использовании памяти.

Каждый исполняемый процесс имеет отображение в системной ЦВМ и в любой момент времени находится в точно определенном состоянии, однозначно описываемом содержимом регистров ЦВМ, содержимым областей памяти ЦВМ, счетчиком команд, счетчиком времени и т. п.

Эта базовая информация о исполняемом процессе называется контекстом. При исполнении одной из задач в процессоре ее контекст всегда можно «заморозить» (запомнить при необходимости в специальной зоне памяти либо в стеке) и приступить к решению другой задачи. При этом сохраненный контекст первой задачи позволяет завершить ее в будущем.

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

Заметим, что переменные процесса сохраняются в выделенной для них зоне памяти в тех случаях, когда ОС обеспечивает защиту этой памяти от доступа к ней данных других процессов. В этом случае их дополнительно защищать упрятыванием не надо и они не входят в контекст.

Время переключения процессов – важнейший показатель качества ОС и в этом вопросе процессоры их должны поддерживать. В набор команд процессора спроектированного для многозадачной работы входят специальные инструкции для быстрого аппаратного упрятывания и восстановления контекста. По времени переключения процессов лидирует ОС QNX.

Существование контекста это общее свойство процессов, а то какие структуры , регистры, конкретно являются частью контекста зависит от конкретной ОС и от используемого процессора.

Потоки используют общую память, породивших их процесса.

[Введите текст]

26. Обобщенная схема возможных вариантов совместного использования информации взаимодействующими процессами

Связь между задачами – характерная часть физических процессов и ПО систем управления. Она используется для того, чтобы данные, сформированные в одной задаче были доступны другим задачам, а также для синхронизации работы задач.

При этом разработчик ПО может выбрать запуск всех задач в едином процессе ПО, но назначить каждой задаче отдельный, параллельно выполняемый поток в пределах этого процесса. В этом случае передача данных между потоками будет происходить в едином адресном пространстве породившего их процесса с использованием обычного синтаксиса языка программирования.

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

В централизованной системе ПО обмен данными между процессами все равно должен проводиться через общую память. При этом надо преодолеть изоляцию памяти процессов, к которой мы стремились с точки зрения безопасности работы ПО и которую обеспечивает ОС. С точки зрения защиты ПО ОС обеспечивают изоляцию «всех от всех». Пользователей друг от друга, пользователей от программ, программы и процессы друг от друга, программы от аппаратуры ЦВМ. ОС каждому процессу выделяет свою память. Поэтому для реализации межпроцессного обмена в ОС, например в WIN существуют системные вызовы, которые записываются в код программы.

Эти вызовы в конечном итоге резервируют специальные зоны памяти межпроцессного обмена, извест-

ные обоим участникам обмена информацией. Методов межпроцессного взаимодействия ,например, в WIN описано более 10. При этом , если сетевой обмен не предполагается (не предполагается взаимодействие процессов ,исполняемых в разных ЦВМ), то обмен упрощается. В других ОС наблюдается примерно та же картина.

На рис.10 приведена схема вариантов взаимодействия процессов через файловую систему, память ОС, разделяемую память задач. В последнем случае один процесс создает специальным вызовом ОС сегмент разделяемой памяти. После отображения разделяемой памяти в адресные пространства процессов через неё происходит обмен данными, но уже без участия ОС. Это самый быстрый вариант взаимодействия. За синхронизацией работы с общей памятью должен следить разработчик ПО. При взаимодействии процессов через файловую систему взаимодействие получается медленное. За синхронизацией работы ПО также должен следить разработчик ПО

40

Рис.10 Схема вариантов взаимодействия процессов

Там, где важна скорость обмена между задачами лучше использовать потоки, соглашаясь со снижением безопасности. Но, если ПО требуется возможность добавлять или убавлять задачи при разработке и эксплуатации, то лучше ПО делать в многопроцессном варианте, чем в многопоточном.

27. Реализация многозадачности за счет параллельных вычислений. Техноло-

гия Open МP.

Технологии микроэлектроники в настоящее время позволяют создавать многоядерные процессоры. Обычный персональный компьютер с одним из таких процессоров является параллельной вычислительной системой с общей памятью. При этом 2, 4, 8 и т.д. процессорных ядер обеспечивают в принципе истинную параллельную обработку при реализации многозадачности, но при организации многопоточного программирования. Если не предпринять специальных мер по созданию многопоточного исполнения ПО, то программа будет использовать ресурсы только одного процессорного ядра, т..к. программа выполняется в рамках одного потока команд, а остальные ядра будут бездействовать.

Имеется возможность изменения уже разработанных программ приложения для работы на параллельных многопроцессорных вычислительных системах. Не говоря уже о приложениях с самого начала разрабатываемых как параллельно исполняемые. Для этого нужно корректно разделить работу между процессорными ядрами, т.е. нужно разделить поток программы на не конфликтующие потоки. Одной из самых популярных программ для многопроцессорных технологий является Open МP.

Суть этой технологии: в тексте последовательной программы необходимо вставить указания - директивы компилятору, чтобы сообщить ему как разделить потоки программы между процессорами или ядрами. При этом компиляторы, не поддерживающие Open МP, эти директивы просто проигнорируют и создадут последовательный код.

В момент запуска программы порождается главный поток команд, в рамках которого выполняются все последовательные участки кода. В точках распараллеливания вычислений порождается необходимое количество дополнительных потоков, которые запускаются параллельно на дополнительных ядрах процессора (смотри рис.11). По окончанию выполнения параллельных секций кода производиться их синхронизация, так как время исполнения каждой секции в общем случае различно. Ранее завершившая работу

[Введите текст]

секция кода должна ждать на специально внесенных в код «барьерах» завершения остальных параллельно исполняемых на других процессорах секций.

Параллельные потоки из одной области распараллеливания могут быть как независимы друг от друга, так и обмениваться в процессе исполнения информацией (сообщениями), что крайне нежелательно. так как требует дополнительной синхронизации. При разработке параллельно исполняемых участков программы их надо выбирать таким образом, чтобы выполняемые потоки были независимы.

Выполнение параллельных потоков начинается с их инициализации. Эта инициализация сопровождается созданием дескрипторов порождаемых потоков и копирования для них данных из области главного потока в области данных создаваемых параллельных потоков. На эти операции затрачивается до 1000 строк кода. Примерно также оцениваются затраты на проведение синхронизации, Эти затраты кода и времени необходимо учитывать при оценке общей эффективности от распараллеливания вычислений.

Основными алгоритмическими языками параллельного программирования с использованием Open MP в настоящее время являются Fortran и C/C++. Для них существуют многочисленные версии компиляторов, разработанных различными производителями системного ПО. При этом вернуться к исполнению сугубо последовательной версии приложения легко – достаточно при компиляции в вызове убрать опцию openmp.

Эти компиляторы обладают также средствами автоматического распараллеливания программ с установкой различных уровней автоматического распараллеливания. Основным объектом систем автоматического распараллеливания являются циклы.

Действительно задачи, которые хорошо распараллеливаются для многопроцессорной обработки: статистические вычисления методом Монте-Карло, вычисления длинных сумм, задачи по подбору ключей и т.п.

42

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]