ВУЗ:
Составители:
10
В многозадачных системах с разделением процессорного времени использование об-
щих переменных для решения задачи взаимного исключения будет выглядеть иначе. Рас-
смотрим использование одной переменной FLAG, показывающей нахождение какого-либо
процесса в критическом интервале (допустим, FLAG=1- критический интервал свободен, а
FLAG=0- занят).
Begin
mov FLAG,1
Cobegin
Process1:
begin
.
.
loop: test FLAG,1
jz loop
mov FLAG,0
Критический
интервал
mov FLAG,1
end;
Process2:
begin
.
.
loop: test FLAG,1
jz loop
mov FLAG,0
Критический
интервал
mov FLAG,1
end;
Coend;
end;
Здесь первые команды mov сбрасывают флажок в 0 пытаясь предотвратить доступ к
критическому интервалу другому процессу. Последние команды mov устанавливают флажок
в 1, разрешая другому процессу войти в критический интервал. При таком решении имеется
возможность входа обоих процессов в критический интервал. Предположим, что FLAG=1 и
происходит такая последовательность событий:
1. Выполняется команда test в процессе 1.
2. До выполнения команды jz в процессе 1 происходит переключение на процесс 2.
3. Выполняется команда test в процессе 2.
Очевидно, что при таком подходе к решению задачи оба процесса могут находиться в
критическом интервале.
Лекция 3. Средства взаимного исключения.
Использование специальных команд
Рассмотрим вопрос использования специальных команд “Проверить и установить” –
Test & Set (TS).
(Tset – в микропроцессоре Z80 ). Команда TS работает с некоторой глобальной пере-
менной х. TS выбирает некоторый разряд двоичной переменной х и помещает его в признак
В многозадачных системах с разделением процессорного времени использование об- щих переменных для решения задачи взаимного исключения будет выглядеть иначе. Рас- смотрим использование одной переменной FLAG, показывающей нахождение какого-либо процесса в критическом интервале (допустим, FLAG=1- критический интервал свободен, а FLAG=0- занят). Begin mov FLAG,1 Cobegin Process1: begin . . loop: test FLAG,1 jz loop mov FLAG,0 Критический интервал mov FLAG,1 end; Process2: begin . . loop: test FLAG,1 jz loop mov FLAG,0 Критический интервал mov FLAG,1 end; Coend; end; Здесь первые команды mov сбрасывают флажок в 0 пытаясь предотвратить доступ к критическому интервалу другому процессу. Последние команды mov устанавливают флажок в 1, разрешая другому процессу войти в критический интервал. При таком решении имеется возможность входа обоих процессов в критический интервал. Предположим, что FLAG=1 и происходит такая последовательность событий: 1. Выполняется команда test в процессе 1. 2. До выполнения команды jz в процессе 1 происходит переключение на процесс 2. 3. Выполняется команда test в процессе 2. Очевидно, что при таком подходе к решению задачи оба процесса могут находиться в критическом интервале. Лекция 3. Средства взаимного исключения. Использование специальных команд Рассмотрим вопрос использования специальных команд “Проверить и установить” – Test & Set (TS). (Tset – в микропроцессоре Z80 ). Команда TS работает с некоторой глобальной пере- менной х. TS выбирает некоторый разряд двоичной переменной х и помещает его в признак 10
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »