Компоненты и технологии • №2 '2011 компоненты


Доступ из множества задач



Pdf көрінісі
бет47/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   43   44   45   46   47   48   49   50   ...   129
Kurniz

Доступ из множества задач
Очередь — это самостоятельный объект 
ядра, она не принадлежит ни одной конкрет-
ной задаче. Напротив, любое количество за-
дач могут как читать, так и записывать данные 
в одну и ту же очередь. Следует отметить, что 
ситуация, когда в очередь помещают данные 
сразу несколько задач, является «обычным де-
лом» для программ под управлением ОСРВ, 
однако чтение данных несколькими задачами 
из одной очереди встречается редко.
Рис. 2. Запись и чтение элементов из очереди по принципу FIFO
а
б
в
г
д


100
КОМПОНЕНТЫ И ТЕХНОЛОГИИ • № 6 '2011
компоненты
микроконтроллеры
Блокировка при чтении из очереди
Когда задача пытается прочитать данные 
из очереди, которая не содержит ни одного 
элемента, то задача переходит в блокирован-
ное состояние. Такая задача вернется в состо-
яние готовности к выполнению, если другая 
задача (или прерывание) поместит данные 
в очередь.
Выход из блокированного состояния воз-
можен также при истечении тайм-аута, если 
очередь на протяжении этого времени оста-
валась пуста.
Данные из очереди могут читать сра-
зу несколько задач. Когда очередь пуста, 
то все они находятся в блокированном со-
стоянии. Когда в очереди появляется элемент 
данных, начнет выполняться та задача, кото-
рая имеет наибольший приоритет.
Возможна ситуация, когда равноприори-
тетные задачи ожидают появления данных 
в очереди. В этом случае при поступлении 
данных в очередь управление получит та 
задача, время ожидания которой было наи-
большим. Остальные же останутся в блоки-
рованном состоянии.
Блокировка при записи в очередь
Как и при чтении из очереди, задача мо-
жет находиться в блокированном состоя-
нии, ожидая возможность записи в очередь. 
Это происходит, когда очередь полностью 
заполнена и в ней нет свободного места для 
записи нового элемента данных. До тех пор 
пока какая-либо другая задача не прочита-
ет данные из очереди, задача, которая пишет 
в очередь, будет «ожидать», находясь в бло-
кированном состоянии.
В одну очередь могут писать сразу несколь-
ко задач, поэтому возможна ситуация, ког-
да несколько задач находятся в блокирован-
ном состоянии, ожидая завершения опера-
ции записи в одну очередь. Когда в очереди 
появится свободное место, получит управле-
ние задача с наивысшим приоритетом. В слу-
чае если запись в очередь ожидали равно-
приоритетные задачи, управление получит 
та, которая находилась в блокированном со-
стоянии дольше остальных.


Достарыңызбен бөлісу:
1   ...   43   44   45   46   47   48   49   50   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет