Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Управляющая конструкция для указания параллелизма.

Читайте также:
  1. I ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ КУРСОВОЙ РАБОТЫ
  2. I. ОБЩИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ
  3. I.Методические указания по выполнению курсовых работ
  4. I1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
  5. II. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ РЕФЕРАТА
  6. II. Методические указания по прохождению учебной практики
  7. II. Организационно-методические указания
  8. III. Алгоритмическая конструкция ветвление и ее использование в языке Visual Basic
  9. IV. Алгоритмическая конструкция цикл и ее использование в языке Visual Basic
  10. Lt;variant> ведомственными приказами и указаниями

PARBEGIN \ PAREN

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

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

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

· Взаимоисключения рис.1

 
 
 
N
 

 


 

3 основных действия после нажатия:

1. Загрузка значения переменных строк введенных

2. Прибавляется единица к строкам (строк = строки+1) программный код

3. Общая переменная перезаписывается

Есть центральное место, где хранится значение переменных. Когда происходит событие – возврат каретки, вызывается прерывание.

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

· Критические участки

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

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

· Примитивы взаимоисключения

Конструкции вход взаимоисключения и выход взаимоисключения обрамляют (границы) критические участки. Подобные операторы называют примитивами взаимоисключения. Одно из первых решений взаимоисключения было программным. Разработал Деккер – алгоритм Деккера.

Program версияодин;

Var номерпроцесса: целое;

Procedure процесс1;

Begin

While истина do

Begin

While номерпроцесса=2 do; -пока второй процесс равен 2 он ничего не делает, он лентяй!

Критический участок1;

Номерпроцесса:=2;

End

End;

 

Вторая процедура такая же, только меняется 1 на 2, а 2 на 1.

 

Тело программы:

Begin

Номерпроцедуры:=1;

Parbegin

Процесс1; (запускаются в параллельную обработку)

Процесс2;

Parend

End;

 

Строка while истина do говорит о том, что при положительной проверке этого условия, существует этот процесс.

Первая версия позволила решить проблему взаимоисключения двух процессов программным путем. Минусы: наличие жесткой синхронизации, процессы могли входить в свои критические участки строго поочередно. Если одному из процессов приходилось использовать свой критический участок чаще второго, то он фактически простаивал. В след версии алгоритма Деккера решили использовать две переменные: процесс1 внутри и процесс2 внутри.

Русский язык называет слова так, как он их называет!

Вопрос на ответ?? Че он несет???

Программная реализация

В следующей версии алгоритма решили использовать 2 переменные: процесс1внутри и процесс2внутри, которые имеют истинное значение, если процесс1 и процесс2 соответственно находятся внутри своих критических участках.

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

Для решения проблемы (версия 3) предусматривается установка каждым процессом своего собственного флага перед выполнением цикла ожидания.

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

 

Аппаратная реализация

Команда TestAndSet (a,b) – данная команда называется аппаратной неделимой командой. Неделимая – когда она выполняется невозможно прерывание, она выполняется целиком. Читает значение логической переменной b, копирует его в а, устанавливает для b значение истина. И все это в рамках одной непрерываемой операции.




Дата добавления: 2014-12-19; просмотров: 87 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав