Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
9.4. Мультипрограммное выполнение параллельных процессовНа уровне модели параллельных процессов предполагается, что процессы выполняются параллельно. Физически это обусловливает наличие для каждого процесса своего индивидуального процессора. В реальной жизни количество процессоров компьютера ограничено и вместо дисциплины параллельного выполнения процессов используются дисциплины квазипараллельного, в частности на одном процессоре. В этом случае для эквивалентности результатов необходимо учитывать дополнительные ограничения на выполнение процессов и использовать специальные средства синхронизации. В настоящей главе рассмотрен однопроцессорный вариант выполнения параллельных процессов, называемый мультипрограммным, причем все процессы предполагаются детерминированными. Его главное свойство состоит в чередовании выполнения переходов различных процессов на одном процессоре как последовательности дискретных шагов. На каждом шаге (такте) выбирается один процесс, выполнение которого допустимо, и выполняется его допустимый переход. (Заметим, что этот переход в каждом процессе единственный вследствие детерминированности процессов.) Выбором процесса ведает специальный планировщик или диспетчер. Диспетчер может осуществлять холостые такты, в которых ни один процесс не выполняется, и значения всех переменных, включая переменные места, остаются неизменными. В случае, когда ни один из допустимых процессов не может быть выполнен и холостой такт является единственно возможным выбором, будем говорить, что модель параллельных процессов находится в дедлоке. Специальный случай такой ситуации проявляется, когда все процессы остановились (находятся в терминальных местах). Следует также отметить, что каждый переход выполняется без какого-либо вмешательства со стороны других процессов, в связи с чем все операции, относящиеся к переходу, называются неделимыми или атомарными. Рассмотрим условия, при которых мультипрограммное выполнение параллельных процессов будет давать те же результаты, что и чисто параллельное. Предположим, что в нашем распоряжении имеется два параллельных процесса Мультипрограммное выполнение этих процессов дает единственный результат
Рис. 9.5. Параллельные процессы Таким образом, мультипрограммное выполнение не отражает реального параллелизма. Это является следствием того, что при мультипрограммном выполнении команды В реальном параллельном выполнении процессов эти события могут чередоваться с событиями в других процессах, приводя таким образом к взаимовлиянию. При тщательном изучении выполнения процессов обнаруживается, что критическими событиями являются выбор и присвоение значений распределяемым переменным. Разделим все переменные на две группы: локальные, или частные, переменные процесса распределяемые переменные — это те переменные, к которым имеют доступ другие процессы. Появление переменной в левой части команды назовем модифицирующей ссылкой на переменную, в правой — ссылкой доступа к переменной. Появление переменной в команде данного процесса назовем критической ссылкой на переменную, если справедливо одно из следующих условий:
Рис. 9.6. Модифицированные параллельные процессы модифицирующая ссылка на переменную, к которой имеется ссылка доступа со стороны другого процесса; ссылка доступа к. переменной, на которую имеется модифицирующая ссылка со стороны другого процесса. Мультипрограммное выполнение позволяет получить те же результаты, что и при реальном параллелизме, если справедливо следующее правило единственности критической ссылки: каждая команда может иметь самое большее одну критическую ссылку. В предыдущем примере команда Подытожим обсуждение отношения между параллельным и мультипрограммным выполнением параллельных процессов. Модель параллельных процессов, подчиняющаяся правилу единственности критической ссылки, может давать одно и то же множество результатов при параллельном и мультипрограммном выполнении. Для каждой модели параллельных процессов существует эквивалентная модель, подчиняющаяся правилу единственности ссылки. Таким образом, используя мультипрограммное выполнение параллельных процессов, можно представить все возможные ситуации, возникающие при параллельном выполнении. Однако следование только правилу единственности критической ссылки при мультипрограммном выполнении еще не гарантирует результата, эквивалентного результату параллельного выполнения. Для достижения эквивалентности результатов необходимо должным образом управлять (диспетчировать) выполнением процессов, в частности, запрещать вмешиваться в выполнение определенного множества переходов (команд) одного процесса до их завершения, прежде, чем переходить к выполнению переходов другого. Управление такого типа обычно называют синхронизацией выполнения 9.4.1. СемафорыСемафоры являются особыми атомарными командами, для которых делается необходимое в этом случае исключение из правила единственности критической ссылки, поскольку они выступают как стандартный способ синхронизации параллельных процессов и имеют дело со специальными семафорными переменными. Этих команд две и их обозначают занять Команда занять
где Г — место перехода, следующего в записи процесса сразу за этим предложением. Для краткости этот переход можно записывать в виде Команда освободить
где Г также место перехода, следующего в записи процесса за этим предложением. Для краткости ее можно записать в виде При преобразованиях процессов с целью удовлетворить правила единственности критической ссылки семафоры не изменяют и всегда оставляют в том виде, как они определены выше. Никакие другие операции над семафорными переменными у, кроме указанных выше, не допускаются. Обычно семафорным переменным вначале присваивается 1 или другое положительное целое число. Процесс, достигший команды занять Пример. Рассмотрим модель параллельных процессов следующего вида:
Предположим, что называется критической секцией, и наше использование семафоров в этом примере гарантирует взаимное исключение доступа к критической секции, т.е. только один из процессов может выполнять критическую секцию в любом такте. Взаимное исключение критических секций необходимо, когда двум или более процессам необходим доступ к распределяемым переменным или ресурсам, таким, например, как диски, и нам необходимо защититься от взаимовлияния этих процессов или от попыток других процессов получить доступ к тому ресурсу, с которым данный процесс уже имеет дело. Пример. Вернемся еще раз к программе вычисления биноминальных коэффициентов. Заметим, что
на две:
Подобным образом команду
разобьем на две:
Если считать, что допустима последовательность
Взаимно защищенными критическими секциями здесь являются Помимо необходимости синхронизации выполнения параллельных процессов, управление ими со стороны диспетчера при их мультипрограммном выполнении должно обладать свойством справедливости. Рассмотрим сущность 9.4.2. СправедливостьРассмотрим сначала программу без семафоров с полным условием терминальном месте, никогда не будет предоставлена возможность выполняться. В общем случае требование справедливости формулируется следующим образом: требование справедливости по отношению к процессу соблюдается, если всякий раз, когда процесс готов выполняться, он в конце концов получит такую возможность, даже если будет готов выполняться бесконечно часто. Рассмотрим простой пример двух процессов
Очевидно, что если бесконечное чередование мест образует последовательность
|
1 |
Оглавление
|