Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ѕрименение семафоров дл€ решени€ задачи взаимного исключени€




 

Ќеделимое обращение к общей переменной всегда подразумевает одностороннее движение информации. ќтдельный процесс может либо присвоить новое значение, либо проверить текущее значение. ќднако така€ проверка не оставл€ет следов дл€ других процессов. ¬следствие этого, в то врем€ как процесс желает отреагировать на текущее значение общей переменной, значение этой переменной может быть изменено другими процессами. “о есть такое взаимодействие через общие переменные нельз€ считать во всех случа€х адекватным. ƒл€ разрешени€ такой ситуации:

1. ¬вод€тс€ специальные целочисленные общие переменные, называемые семафорами.

2. ƒобавл€ютс€ к набору действи€, из которых состо€т процессы, два новых примитива: p-операци€ и v-операци€.

(p Ц proberen(проверка); v Ц verhogen(увеличение ))

Ёти две операции всегда выполн€ютс€ над семафорами и представл€ют единственный способ обращени€ к семафорам со стороны одновременно действующих процессов. ƒл€ решени€ задачи взаимного исключени€ область значений семафоров 0 и 1 (двоичные семафоры), но существует пон€тие и общего семафора, при котором он может принимать определенное количество целочисленных значений.

s1 Ц семафор,

p(s1) или v(s1) Ц запись операций над семафором.

 

V-операци€ Ц операци€ с одним аргументом, который должен быть семафором. ≈е назначение Ц увеличение аргумента на единицу. Ёто действие рассматриваетс€ как неделима€ операци€.

»меетс€ достаточно принципиальное различие между семафорными и обычными операци€ми сложени€. ≈сли двум€ параллельно-развивающимис€ процессами выполнена семафорна€ операци€ v(s1) над общим семафором s1, получим увеличение семафора s1 на два, так как операци€ v неделима€. ј выполнение операции сложени€ s1 с единицой параллельными процессами может привести к увеличению значени€ s1 на единицу.

 

ѕ1 ѕ2

S1:= S1+1 S1:= S1+1

 

ѕ1 ѕ2

v(S1) v(S1)

 

P-операци€ Ц операци€ с одним аргументом, который должен быть семафором. ≈е назначение Ц уменьшение аргумента на единицу, если только результирующее значение не становитс€ отрицательным. «авершение р-операции, то есть решение о том, что в насто€щий момент €вл€етс€ подход€щим дл€ выполнени€ уменьшени€ и последующее уменьшение значени€ аргумента, рассматриваетс€ как неделима€ операци€.

P-операци€ определ€ет потенциальную задержку. ≈сли инициируетс€ р-операци€ над семафором, который в этот момент равен нулю, то в данном случае р-операци€ не может завершитьс€, пока какой-либо другой процесс не выполнит v-операцию над тем же семафором и не присвоит ему значение 1. Ќесколько процессов могут одновременно начать р-операцию над одним семафором.

”тверждение о том, что завершение р-операции есть неделимое действие, означает, что когда семафор получит значение 1, только одна из начавшихс€ р-операций над семафором завершитс€, кака€ именно Ц не определено.

 

Begin integer свободно;

свободно:= 1;

Parbegin

процесс 1: begin Е end;

процесс 2: begin Е end;

Е

процесс N: begin Е end;

Parend;

End;

 

процесс i:

Begin

Li: P(свободно);

 ритический интервал i;

V(свободно);

ќстаток цикла i;

Goto Li;

End;

 

«адача Упроизводитель-потребительФ

ќбщие семафоры

 

–ассматриваютс€ два процесса, которые называютс€ производитель и потребитель. ќба процесса €вл€ютс€ циклическими. ѕроизводитель при каждом циклическом повторении участка программы производит отдельную порцию информации, котора€ должна быть обработана потребителем. ѕотребитель при каждом повторении обрабатывает следующую порцию информации, выработанную производителем. ќтношени€ производитель-потребитель подразумевают односторонний канал св€зи, по которому могут передаватьс€ порции информации. — этой целью процессы св€заны через буфер неограниченной емкости. “о есть, произведенные порции не должны немедленно потребл€тьс€, а могут организовывать в буфере очередь. Ѕуфер работает по принципу FIFO.

 

„ѕЅ Ц число порций в буфере.

–Ѕ Ц работа с буфером

 

Begin integer „ѕЅ;

„ѕЅ:= 0;

Parbegin

производитель: begin

ѕ1: производство новой порции;





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-11-05; ћы поможем в написании ваших работ!; просмотров: 582 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ћибо вы управл€ете вашим днем, либо день управл€ет вами. © ƒжим –он
==> читать все изречени€...

1335 - | 1148 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.015 с.