Языки программирования - концепции и принципы

В этом случае может иметь


В этом случае может иметь место следующая последовательность со­бытий:

• Т1 загружает N в свой регистр R1 (значение равно и).

• Т2 загружает N в свой регистр R1 (значение равно «).

• Т1 увеличивает R1 (значение равно п + 1).

• Т2 увеличивает R1 (значение равно и + 1).

• Т1 сохраняет содержимое своего регистра R1 в N (значение равно п + 1).

• Т2 сохраняет содержимое своего регистра R1 в N (значение равно п + 1).

    Результат выполнения каждого из двух тел циклов состоит только в том, что N увеличится на единицу. Результирующее значение N может лежать между 100 и 200 в зависимости от относительной скорости каждого из двух процессоров.

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

    В теории параллелизма выполнение параллельной программы определя­ется как любое чередование атомарных команд задач. Атомарная команда — это всего лишь команда, которую нельзя выполнить «частично» или пре­рвать, чтобы продолжить выполнение другой задачи. В модели параллелизма с общей памятью команды загрузки и сохранения являются атомарными.

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

 

12.3. Проблема взаимных исключений

 

Проблема взаимных исключений (mutual exclusion problem) для параллельных программ является обобщением приведенного выше примера.

Содержание  Назад  Вперед