Лекция - Тема 3 - Средства от високо ниво
| Информационни технологии | 2009-12-04 | 61 сваляния |
14
Глава III. СРЕДСТВА ОТ ВИСОКО НИВО
Разгледаните дотук средства са достатъчни, за да осигури правилното изпълнение на паралелните процеси, но използването им често води до създаване на сложни и непрегледни конструкции. Използването на средства от високо ниво е значително no-удобно за програмиста и позволява получаването на лесно разбираеми решения. По-нататък ще бъдат разгледани няколко такива конструкции.
3.1. ЕЗИКОВА КОНСТРУКЦИЯ КРИТИЧНА СЕКЦИЯ
За да се избегнат грешките, зависещи от времето, Хоар и Хансен [22, 52] предлагат методът на Дейкстра да се формализира в термините на езиците от високо ниво. Променлива от зададен тип (може да е и сложна структура), която е достъпна в критични секции на няколко процеса, трябва да се декларира като делим ресурс:
var име на променлива: shared тип;
Всяка критична секция, в която тази променлива е достъпна, се описва с конструкцията:
region име на променлива do оператор;
Примерът от т. 2.3 (глава 2) се решава така:
var с : shared integer;
процес 1: .................................
region с do с := с + 1;
.................................
процес 2: .............................
region с do c:= c - l;
..................................
Предимството на този метод е, че транслаторът генерира за всяка конструкция region необходимите семафори: P(c_sem); оператор; V(c_sem), като за всяко описание на променливата с се генерира описание на семафор c_sem, инициализиран с 1. Освен това, по време на транслация може да се извършва проверка, дали достъпът до общите променливи се прави в критичните секции. Критичните секции могат да се влагат, но в този случай може да възникне мъртва хватка. Например:
процес 1 : region a do region в do оператор;
процес 2 : region в do region a do оператор;
Ако и двата процеса влязат едновременно в критичните секции, те ще изпаднат в мъртва хватка.
Описаната конструкция решава простите проблеми на критичните секции, но не може да се използва за no-общи схеми за синхронизация. Затова тя се разширява с условие.
3.2. УСЛОВНА КРИТИЧНА СЕКЦИЯ
Средствата, описани досега, задържаха процесите до изпълнението на определени условия (критичните секции - до освобождаване на критичния ресурс, семафорите - до получаване на сигнал, пощенската кутия - до пристигане на съобщение). При взаимодействието на процеси може да възникне такъв случай: процес изменя стойност на променлива, а друг процес чете новета стойност. Но вторият процес не трябва да чете, докато няма нова стойност и обратно, първият процес не изменя стойността, докато не се прочете старата. За решение на подобни проблеми е предложена конструкцията условна критична секция, която позволява на процеса да чака до изпълнението на произволно
Тагове от реферата: еданит, екция, средст, Дотук, високо











