Параллельное программирование



              

Средства синхронизации параллельных процессов - часть 2


Т.е. двоичный семафор в действительности более универсален.

Перечислим основные процедуры над семафорами, реализуемые в МВК "Эльбрус".

Процедура ОБЪЯВИТЬ (С) объявляет список семафоров, который рассматривается как описание, действующее внутри данного блока в алгоритмическом языке. Этим обеспечивается выделение памяти и тип переменной при трансляции.

Процедура ЗАКРЫТЬ (С) сначала присваивает семафорам, перечисленным в списке C, значение "закрыт". Затем для каждого семафора она проверяет, был ли он закрыт ранее. Если в списке C семафоров указан один или несколько семафоров, которые были закрыты до выполнения данной процедуры, происходит прерывание процесса (задачи). Процедура ОС, запустившаяся по прерыванию, ставит данный процесс в очередь к тем семафорам, которые были закрыты ранее. Таким образом, процесс задерживается до тех пор, пока другие процессы не откроют эти семафоры. После прерывания процесса и обработки прерывания процессор обращается к очереди для выборки следующего задания — "готового" процесса. Если до выполнения данной процедуры все семафоры из списка С были открыты, выполняется следующая инструкция программы.

Процедура ЖДАТЬ (С) в случае, если в C указаны семафоры со значением "закрыт", организует прерывание процесса. Процесс, ставший пассивным, дополняет очереди к закрытым семафорам из списка C. Концом выполнения процедуры является переход к анализу очереди "к процессору" для последующей загрузки процессора.

Процедура ЖУЖ (С) не переводит процесс в очереди к семафорам, а организует ожидание процессором, на котором выполняется процесс, момента открытия всех семафоров в режиме "жужжания" — непрерывного опроса семафоров, указанных в списке C.

Процедура ЖДАТЬ (С,Т) ограничивает время ожидания семафоров, указанных в списке C, значением T.

Процедура ОТКРЫТЬ (С) присваивает семафорам, указанным в списке C, значение "открыт". Процессы снимаются с очереди к указанным в C семафорам и, если они не стоят в очереди к другим семафорам, переводятся в очередь "к процессору" в соответствии с их приоритетом.


Содержание  Назад  Вперед