Главная » Просмотр файлов » ПОД (пособие)

ПОД (пособие) (1184372), страница 41

Файл №1184372 ПОД (пособие) (ПОД (пособие) - Ельцин) 41 страницаПОД (пособие) (1184372) страница 412020-08-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 41)

Этот прием называют взаимнымисключением.Простейший способ обеспечить взаимное исключение - позволить процессу, находящемусяв критической секции, запрещать все прерывания. Однако этот способ непригоден, так какопасно доверять управление системой пользовательскому процессу; он может надолгозанять процессор, а при крахе процесса в критической области крах потерпит вся система,потому что прерывания никогда не будут разрешены.Другим способом является использование блокирующих переменных. С каждымразделяемым ресурсом связывается двоичная переменная, которая принимает значение 1,если ресурс свободен (то есть ни один процесс не находится в данный момент вкритической секции, связанной с данным процессом), и значение 0, если ресурс занят.

Нарисунке 2.4 показан фрагмент алгоритма процесса, использующего для реализациивзаимного исключения доступа к разделяемому ресурсу D блокирующую переменную F(D).Перед входом в критическую секцию процесс проверяет, свободен ли ресурс D. Если онзанят, то проверка циклически повторяется, если свободен, то значение переменной F(D)устанавливается в 0, и процесс входит в критическую секцию. После того, как процессвыполнит все действия с разделяемым ресурсом D, значение переменной F(D) сноваустанавливается равным 1.Если все процессы написаны с использованием вышеописанных соглашений, то взаимноеисключение гарантируется. Следует заметить, что операция проверки и установкиблокирующей переменной должна быть неделимой.

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

Таким образом был нарушен принцип взаимного исключения, чтопотенциально может привести к нежелаемым последствиям. Во избежание таких ситуацийв системе команд машины желательно иметь единую команду "проверка-установка", или жереализовывать системными средствами соответствующие программные примитивы,которые бы запрещали прерывания на протяжении всей операции проверки и установки.Реализация критических секций с использованием блокирующих переменных имеетсущественный недостаток: в течение времени, когда один процесс находится в критической130секции, другой процесс, которому требуется тот же ресурс, будет выполнять рутинныедействия по опросу блокирующей переменной, бесполезно тратя процессорное время. Дляустранения таких ситуаций может быть использован так называемый аппарат событий. Спомощью этого средства могут решаться не только проблемы взаимного исключения, но иболее общие задачи синхронизации процессов.

В разных операционных системах аппаратсобытий реализуется по своему, но в любом случае используются системные функциианалогичного назначения, которые условно назовем WAIT(x) и POST(x), где x идентификатор некоторого события. На рисунке 2.5 показан фрагмент алгоритма процесса,использующего эти функции. Если ресурс занят, то процесс не выполняет циклическийопрос, а вызывает системную функцию WAIT(D), здесь D обозначает событие,заключающееся в освобождении ресурса D. Функция WAIT(D) переводит активныйпроцесс в состояние ОЖИДАНИЕ и делает отметку в его дескрипторе о том, что процессожидает события D. Процесс, который в это время использует ресурс D, после выхода изкритической секции выполняет системную функцию POST(D), в результате чегооперационная система просматривает очередь ожидающих процессов и переводит процесс,ожидающий события D, в состояние ГОТОВНОСТЬ.Общий семафор - это целочисленная переменная, над которой разрешены только двенеделимые операции P и V.

Аргументом у этих операций является семафор. Определятьсемантику этих операций можно только для семафоров - положительных чисел, иливключать и отрицательный диапазон. Операции могут быть определены так:P(S) - декремент и анализ семафораS := S-1IF (S < 0) THEN <блокировка текущего процесса>ENDIFV(S) - инкремент семафораS := S+1IF S <= 0 THEN <запустить блокированный процесс>ENDIFP и V операции неделимы: в каждый момент только один процесс может выполнять Р или Vоперацию над данным семафором. Если семафор используется как счетчик ресурсов, то:S >= 1 - есть некоторое количество (S) доступных ресурсов,S = 0 - нет доступного ресурса,S < 0 - один или несколько (S) процессов находятся в очереди к ресурсу.Вводится, также, операция инициализации семафора (присвоение начального значения).Общий семафор - избыточный, т.к.

его можно реализовать через двоичные семафоры,которые принимают только два значения 0,1.Семафоры позволяют:- синхронизировать работу процессов,- управлять распределением ресурсом (использованием положительного диапазоназначений семафора как счетчика ресурсов) ,- организовывать очередь блокированных процессов (отрицательные значения семафорапоказывают число блокированных процессов).В системах программирования вводится специальный тип данных, определяющийструктуру семафора, например, SEMAPHOR,SIGNAL,GETA.Использование семафоровbegin integer S; S:=1;parbegintask1: begindo while (true)P(S);<критический участок 1>;131V(S);<обычный участок>;enddoend;task2: begindo while (true)P(S);<критический участок 2>;V(S);<обычный участок>;enddoendparendendУпорядоченные секции. Распараллелить цикл, используяупорядоченные секции и семафоры:DO I=2,NA(I) = 2*A(I) + C(I)B(I) = C(I)*sin(X(I))Y(I) = Y(I-1) + X(I)D(I) = P(I)*B(I)/A(I)ENDDOЧто-то на темуДиректива синхронизации OpenMP:ORDERED ...

END ORDERED //видиимо,это и есть упорядоченные секци… прим. А.Е.Определяет блок внутри тела цикла, который должен выполняться в том порядке, в которомитерации идут в последовательном цикле. Может использоваться для упорядочения выводаот параллельных нитей.Ограничения на использования OrderedМожет появляться только в динаических расширениях следующих деректив:DO or PARALLEL DO (Fortran)for or parallel for (C/C++)В упорядоченную секцию допускается только одна нить в единицу времени.Переходы на другие процессоры внутри Ordered-блока запрещены.Итерация цикла не может исполнять одну и ту же Odered-директиву более 1 раза и должнане исполнять более 1 Ordered-директивы.Цикл, имеющий внутри Ordered-директиву должен быть циклом, определенным как OrderedDO I=2,NA(I) = 2*A(I) + C(I)B(I) = C(I)*sin(X(I))Y(I) = Y(I-1) + X(I)D(I) = P(I)*B(I)/A(I)ENDDOИногда, почти полностью распараллеливающийся по данным,алгоритм имеетединственную зависимость данных, которая на векторных машинах может потребоватьрасщепления цикла, чтобы изолировать зависимость.Например:132DO I = 1,NA(I) = EXP(SIN(B(I))) * EXP(COS(B(I)))C(I) = (D(I) + E(I)) / F(I) * A(I)X(I) = S * X(I-1) + C(I)Z(I) = X(I) * Y(I) + EXP(Z(I))ENDDOОператор присваивания X(I) включает рекурсию, что запрещает векторизацию.

Обычнолибо компилятор, либо программист выделит этот оператор в отдельный скалярный цикл,чтобы позволить другим трем операторам присваивания выполняться в параллельномрежиме.Это не всегда необходимо делать при распараллеливании. Если имеется достаточноработы выше и/или ниже оператора присваивания X(I) и N достаточно велико, можнодостичь эффективного параллельного выполнения цикла путем помещения оператораприсваивания X(I) в упорядоченную критическую секцию. Она будет обеспечивать доступтолько одной нити в один и тот же момент явным или неявным замковым (lock)механизмом. В данном случае требуется выполнять итерации в таком порядке, чтобыудовлетворить требования рекурсии для вычисления X.Реальная система синхронизации для SEQCALL SETSEQ (SEQ,0)* инициализация, установка SEQ=0С$DIR DO_PARALLEL (ORDRED)DO I = 1,NA(I) = EXP(SIN(B(I))) * EXP(COS(B(I)))C(I) = (D(I) + E(I)) / F(I) * A(I)CALL WAITSEQ (SEQ,I-1)* ждать, пока SEQ будет равно I-1X(I) = S * X(I-1) + C(I)CALL POSTSEQ (SEQ,I)* установить SEQ в IZ(I) = X(I) * Y(I) + EXP(Z(I))ENDDOСемантика (для случая четырех процессоров):Инициализируются вычисления первых четырех итераций в заданном порядке на четырехпараллельных процессорах.

Все четыре процессора вычисляют свои A(I),C(I)одновременно. Первый процессор выполнит для I=1 присваивание X(1), в то время какдругие ждут. Первый процессор для I=1 вычисляет Z(1), в то время как X(2) вычисляетсявторым процессором для I=2. Первый процессор начинает вычислять новую итерацию дляI=5, в то время как другие три процессора проходят сквозь критическую секцию такжеупорядочено.Теперь, если работа по выполнению цикла хорошо сбалансирована, первый процессордля I=5 достигает точки WAITSEQ как раз тогда, когда четвертый процессор для I=4закончит POSTSEQ. С этой точки все процессоры работают без простоя, пока они недостигнут последние четыре итерации цикла.133Системы передачи сообщений.

Фортран-GNS.Статический и динамический способы образования параллельныхпроцессов."Процесс - группа ячеек памяти, содержимое которых меняется по определенным правилам.Эти правила описываются программой, которую интерпретирует процессор." /ЦикритзисД./.Вычислительный процесс можно рассматривать как последовательность команд ЭВМ,которая работает с данными ей ресурсами. (Задача, задание, процесс, нить, TASK).

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

Этипроцессы могут работать параллельно с главной и также порождать другие процессы.Другим способом порождения процессов является статический способ, когда производитсяодновременная инициализация на всех процессорах одинаковых процессов (SPMD – SingleProgram Multiple Data). Эти процессы опрашивают состояние решающего поля инастраиваются на выполнение своей части вычислений.(Они могут узнать: сколько ихпорождено, свои уникальные, внутренние имена, и т.д.)Процессы, работающие на равных правах (не вызовы процедур и не процессы, связанныепонятиями "главная-подчиненная"), иногда называемые сопроцессами, могут выполнятьсяпараллельно и при этом общаться друг с другом - не часто (слабо связанные процессы).Требования с системам программирования методом передачисообщений.Кое-что…Основной моделью параллельного выполнения программы на кластере является модельпередачи сообщений .В этой модели параллельная программа представляет собой систему процессов,взаимодействующих посредством передачи сообщений .Можно выбрать модель передачи сообщений и в качестве модели программирования.При этом возможны три способа построения языка программирования:·Расширение стандартного языка последовательного программированиябиблиотечными функциями (например, Фортран+MPI);·Расширение стандартного языка последовательного программирования специальнымиконструкциями (например, Fortran-GNS);·Разработка нового языка (например, Occam).Однако модель передачи сообщений является слишком низкоуровневой, непривычной инеудобной для программистов, разрабатывающих вычислительные программы.

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

Характеристики

Тип файла
PDF-файл
Размер
1,93 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

ПОД (пособие) - Ельцин
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее