Полезно за вас: Речник | Игри | Новини | Фирми | Рецепти | Обяви
Начало на реферати

Глава 2 - Процеси. Взаимодействие между процеси


Информационни технологии | 2009-12-04 | 48 сваляния

Процеси. Взаимодействие меж-ду процеси.

Паралелната обработка в осно-вата на мултипрограмните сис-теми. Освен апаратен паралел-изъм съществува и логически, реализиран от програмното ос-игуряване. За да се осигури си-нхронизирането на апаратната и софтуерната част, трябва да се предоставят механизми за синхронизация и комуникация

2.1.Процеси основни понят-ия.

Процес: последователен процес (задача, действие) е изходна точка в теорията на ОС. После-дователния процес е работа, извършена от последователен процесор при изпълнение на програмата с нейните данни. Всеки процес има свои процес-ор и програма. Няколко проце-са могат да делят един процес-ор (виртуален процесор) или една програма (при различни последователност на изпълнен-ие), Програмата е пасивна, пр-оцеса активен. Процеса е двой-ката процесор-програма при изпълнение. Когато пакетно за-дание постъпи в системата, се създава процес (или няколко). При интерактивните системи с времеделене също се създава процес. Системните задачи (пр. споолинг) също са процеси. В някои системи могат да се съз-дадат подпроцеси , които се изпълняват паралелно. Систем-ните и потребителските проце-си се изграждат по еднакви принципи, но системните имат по-големи права (не се състеза-ват за ресурси, тъй като те ги управляват).

Състояния на процеса. По вре-ме на съществуването на проц-еса, той преминава основно през три състояния: 1. Изпъл-няван: процесора е предостав-ен на процеса; 2.Готов: процес-ът би могъл да се изпълни, ако му се разпредели процесор; 3. Блокиран: процеса не може да се изпълни, докато не получи сигнал, съобщение или ресурс. Поддържа се опашка с готови-те процеси и опашка с блоки-раните процеси. Новосъздаден-ия процес се записва в опашк-ата на готовите процеси, откъ-дето диспечера избира процес за изпълнение. След като опре-деления квант изтече, управл-ение получава диспечера, кой-то избира нов процес, а изпъл-нявания става готов. В някои ОС има въведени и други съст-ояния на процеса: състояние на преустановяване. Процеса преустановява сам себе си, но може да бъде преустановен и от друг процес. Преустановен-ия може да продължи изпълне-нието си само, ако друг процес го възобнови. Състоянията мо-гат да се разделя и на подсъст-ояния.

Преустановяването на процес-ите се използва за да се регули-ра натоварването на мултип-рограмната система. Потребит-еля също може да преустанови процес, с цел настройка на пр-ограмата. Блокиран процес, може да чака настъпване на събитие неопределено дълго. Обикновено преустановяване се прави с цел освобождаване на ресурси. Управление между състоянията се извършва чрез извикване на съответни прим-итиви.

2.2.Паралелни процеси

Когато два или повече процеса се припокриват във времето, говорим за паралелно изпълне-ние на процеси. Те могат да бъдат 1.Зависими: работят с множества независими проме-нливи и не оказват влияние на други процеси; 2. Взаимодейст-ващи си процеси: имат достъп до общи променливи и резулта-та от един процес влияе върху друг. Общите променливи пре-дставят състоянието на ресурс-ие, разделяни от конкуриращи се процеси. Те също се изпо-лзват за комуникиране между коопериращи се процеси за об-щи задачи. Асинхронността на паралелните процеси и различ-ните скорости на изпълнение усложняват взаимодействията между процесите.

2.3.Взаимно изключване на процеси.

Въпреки, че физическите и логическите ресурси могат да бъдат разделени, обикновено в момент от времето могат да са достъпни само за един процес. Такива ресурси се наричат критични. Ако няколко проце-са трябва да получат достъп до критични ресурси, те съгласув-ат действията си, така, че само единия да има достъп до ресу-рса. Това е същността на взаи-мно изключване на процеси. При това трябва да се спазват следните критерии : 1.Само ед-ин процес може да използва ресурса в даден момент; 2.Ако няколко процеса едновременно имат нужда от ресурса, той тр-ябва да е предоставен на един от тях в крайно време; 3.Ако процес получи ресурс, той тря-бва да го освободи в крайно време. Има варианти на реш-ение на проблема, при които двата процеса използващи об-щи променливи си сътруднич-ат, двата процеса се компили-рат в един общ и ако се изпъ-лняват в непресичащи се инте-рвали от време, ще се получат верни резултати. В този вари-ант е възможна появата на вр-емезависими грешки. Решение-то на проблема с взаимното из-ключване на процеси се реша-ва с определяне на критична секция. За правилното решава-не на проблема трябва да са изпълнени: 1.Само един процес може да се намира в критична-та си секция в даден момент; 2.Процес може да остане в кр-итичната си секция крайно вр-еме; 3.Ако процес иска да влезе в критичната си секция, тряб-ва да му се даде такава възмо-жност в крайно време. (никой процес извън критичната си секция не трябва да пречи на друг да влезе в своята такава)

2.3.1. Програмно решение:

То се основава на блокировка-та на паметта, което означава че операциите за четене и зап-ис на данни в паметта се изкл-ючват взаимно във времето. Когато единпроцес се обръща към паметта а другите чакат.

Взаимно изключване на 2 процеса: Първи вариант: Про-цесите са безкраен цикъл, а вл-

зането в критична секция се управлява от While-do, който тече дотогава докато пром. ред_на стане == на номера на процеса. От критичната секц-ия се излиза когато променлив-

ата присвои номера на другия процес. Ето и сорс кода:

program взаимно_изключване

var red_na: Integer;

procedure process_1;

begin

repeat

begin

while red_na <> 1 do;

critical section {enter in critical section}

red_na := 2;{exit from critical section}

end;

until false;

end;

procedure process_2;

begin

repeat

begin

while red_na <> 2 do{enter in critical section}

critical section

red_na := 1;{exit form critical section}

end;

intil false;

end;

begin

red_na := 1;

parbegin process_1; process_2; parend;

end.

Aко единия процес се блокира след като излезе от критичната си секция, то и другият ще се блокира след излизане от крит-ичната си секция.

Втори вариант: Помни се само кой процес може да влезе в кр-итична секция, но не и състоя-нието на всеки процес. Проме-нливите ред_на_1 и ред_на_2 имат ст/ст истина когато съот-ветния им процес е в крит. си секция, и неистина когато не е.

Начанлната им ст/ст е неисти-на.

Procedure process_1;

Begin

Repeat

While red_na_2 do

Red_na_1 := true;

Critical section

Red_na_1 := false;

Until false

End;

Procedure process_2;

Begin

Repeat

While red_na_1 do

Red_na_2 := true;

Critical section

Red_na_2 := false;

Until false;

End.

Трети вариант:

Необходимо е когато един про-цес взпълнява цикъл на очакв-ане, другия да не може да изле-

зе от своя. За целта всеки про-цес ще установява флага си, преди да влезе в цикъла. Т.е. ред_на_1 = истина, само инди-цира, че процес_1 иска да вле-зе в критична секция.

Procedure Process_1;

Begin

Repeat

Red_na_1 := true;

While red_na_2 do

Critical section

Red_na_1 := false;

Until false;

End;


Procedure Process_2;

Begin

Repeat

Red_na_2 := true;

While red_na_1 do

Critical section

Red_na_2 := false;

Until false

End;

Четвърти вариант:

За избягване на мъртва хват-

да се нулира флага във false и

кратковременна задръжка на

всеки влязъл в цикъл на

очакване процес, чрез което

другия процес излиза от цикъл

на очакване, след като е устан-

овил флага си.

Procedure Process_1;

Begin

Repeat

Red_na_1 := true;

While red_na_2 do

begin

Ред_на_1 := false

Случайна задръжка

Red_na_1 := true;

End;

Critical section

Ред_на_1 := false

Until false;

End;

Procedure Process_2;

Begin

Repeat

Red_na_2 := true;

While red_na_1 do

begin

Ред_на_2 := false

Случайна задръжка

Red_na_2 := true;

End;

Critical section

Ред_на_2 := false

Until false;

End;

Чрез този метод се избягва мъ-ртвата хватка, но възниква пр-облема с безкрайното отлага-не.

Пети вариант: Правилният вариант: Всеки процес устано-вява флага сии съобщава на другия процес че може да влезе в критична секция. Ако и 2-та процеса искат да влязат в кри-тичната секция по едно и също време, това ще се реши от пос-ледната ст/ст на променливата процес_номер

Program Взаимно изключване;

Var ред_на_1; ред_на_2: boolean;

Процес_номер: integer;


Procedure Process_1;

Begin

Repeat

Red_na_1 := true;

Процес_номер := 2;

While (red_na_2 and процес_номер = 2)do

Critical section

Ред_на_1 := false

Случайна задръжка

Until false;

End;


Procedure Process_2;

Begin

Repeat

Red_na_2 := true;

Процес_номер := 1;

While (red_na_1 and процес_номер = 1)do

Critical section

Ред_на_2 := false

Случайна задръжка

Until false;

End;

Begin

Ред_на_1 := false;

Ред_на_2 := false;

Parbegin

Process_1;

Process_2;

Parend.

End.


Взаимно изключване на п процеса: Алгоритъма е нареч-ен Beakery algoritm: т.е: когато влезе в магазина копувачът по-лучав номер. Обслжва се купу-вача с най-малък номер, но ал-горитъма не гарантира че че 2 купувача (процеси) не получав-ат един и същи номер. В случ-ай на конфликт, първи се обсл-ужва процесът с най-малък ид-ентификатор. Общите данни се декларират така:

Var избор:array[0..n-1] of boolean;

Номер: array[0..n-10] of Integer;

Тези данни първоначално се инициализират с false. За удоб-ство се дефинира следната но-тация: (а,b)<(c,d), ако аили

a=c и b0,a n-1 ) има число к, та че к>=аi за i = 0..n-1

тогава процес I може да се орг-

анизира по сл. начин:

repeat

избор[i] := true;

номер[I] := max(номер[0],..,

номер[n-1])+1;

избор[I]:=false;

for j := 0 to n-1 do

begin

while избор[j]

while номер[j] <> 0 and (номер[j],j)<(номер[I],I) do;

end;

критична секция

номер[I]:=0;

until false


2.3.2.Решение с машинна ком-анда TS. В много процесо-ри съществува команда TS (Te-st & Set провери и установи). Формата е TS(a,b) с параметри от логически тип. Командата чете стойността на променлив-ата b, записва я в a (a:=b) и установява b:=true. Всеки про-цес има локална променлива, а обща е глобална променлива за всички процеси и е инициализ-ирана с false.

Глава 2 - Процеси. Взаимодействие между процеси

Добави своя коментар:



Тагове от реферата: , ,


Подобни материали


Форматиране на дискети Персонализиране на работната среда - Control Panel Информационни технологии | 2010-11-19 | 149 прочитания
Съставяне на една С програма Информационни технологии | 2010-11-19 | 40 прочитания
Коментари и структура на програмата Информационни технологии | 2010-11-19 | 50 прочитания
Неуправляеми ТИ с реактивен товар. Работа на р-фазен еднополупериоден ТИ със загуби Информационни технологии | 2010-11-19 | 42 прочитания
МНОГОНИШКОВО ПРОГРАМИРАНЕ Информационни технологии | 2010-11-19 | 156 прочитания
Функции и обхват Информационни технологии | 2010-11-19 | 35 прочитания
Стандарти и спецификаций в областта на инф.сигурност; основни понятия; класове на сигурност Информационни технологии | 2010-11-19 | 38 прочитания
Графи. Основни понятия Информационни технологии | 2010-11-19 | 142 прочитания
Обработка на грешките при CD-Rom Информационни технологии | 2010-11-19 | 91 прочитания
Геометричен процесор 1 Информационни технологии | 2010-11-19 | 36 прочитания