ЖУРНАЛ СТА 2/1997

Очереди сообщений Очередь сообщений представляет собой буфер данных, в который может быть помещено фиксиро- ванное количество запи- сей (сообщений). Очере- ди сообщений позволяют осуществлять обмен дан- ными между задачами. Ко- личество записей, поме- щаемых в очередь сооб- щений, устанавливается при ее создании. Очере- ди сообщений особенно удобны для буферизации данных при обмене между задачами или процедура- ми обслуживания прерываний. Передача сообщений Механизм передачи сообщений обеспечивает возможность обмена данными между двумя задачами без ис- пользования сигналов или очередей сообщений. Копирование данных производится непосредственно из од- ной задачи в другую. Данный меха- низм обмена может рассматриваться как передача информации через «поч- товый ящик» нулевой длины. Передача сообщений позволяет осуществить на- иболее тесное взаимодействие вовле- каемых в нее задач, поскольку их синх- ронизация осуществляется ядром RTKernel. Планировщик Планировщик RTKernel предназна- чен для управления состояниями за- дач. Основной функцией планиров- щика является выявление задачи, которая должна исполнять- ся в текущий момент времени. Любая задача RTKernel всегда пребывает в од- ном из следую- щих состоя- ний (рис. 3). Current (состояние исполнения) Активная в на- стоящий момент времени задача харак- теризуется состоянием Current. По крайней мере одна задача под управле- нием RTKernel должна пребывать в указанном состоянии. Ready (состояние готовности) Все задачи, готовые к исполнению, находятся в состоянии Ready. В теку- щий момент времени одна из данных задач переходит в состояние Current (состояние исполнения). Задачи в со- стоянии Ready имеют одинаковый или более низкий приоритет по сравне- нию с текущей активной задачей. Suspended (состояние приостановки) Задачи, исполнение которых явно приостановлено обращением к ядру посредством вызова RTKSuspend. Дан- ные задачи могут быть переведены в состояние Ready только с помощью вы- зова функции RTKResume. Blocked (состояние блокировки) Задачи в указанном со- стоянии не могут испол- няться, поскольку ожида- ют какоголибо события, например, освобождения семафора (ресурса) или прихода сообщения в очередь. Перевод данных задач в состояние Ready возможен только по ини- циативе другой задачи или обработчика преры- вания. Delaying (состояние задержки) Задачи в данном состо- янии блокируют себя на определенный интервал времени. По истечении заданного интервала обра- ботчиком прерывания RTKernel по сис- темному таймеру производится пере- вод указанных задач в состояние Ready. Timed (состояние ожидания события с синхронизацией) Состояние ожидания задачей собы- тия в течение заданного интервала времени. Перевод задачи в состояние Ready производится по истечении ус- тановленного интервала либо при на- ступлении ожидаемого события. При инициализации RTKernel созда- ются две задачи: основная (Main Task) и «пустая» (Idle Task). Пустая задача, имеющая нулевой (самый низкий) приоритет, необходима для функцио- нирования планировщика, поскольку условием его работы является наличие хотя бы одной задачи, находящейся в состоянии Ready. Планирование в RTKernel проис- ходит согласно следующим правилам. 1.Из всех задач, нахо- дящихся в состоя- нии Ready, в ак- тивное состоя- ние переводит- ся задача с на- ивысшим при- оритетом. 2. Если в со- стоянии Ready пребывают не- сколько задач, имеющих одинако- вый приоритет, в ак- тивное состояние пе- реводится задача, не исполнявшаяся в те- чение наиболее дли- тельного интервала времени. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ 2/97 86 Рис. 2. Структура приложения RTKernel Рис. 3. Состояния задачи RTKernel

RkJQdWJsaXNoZXIy MTQ4NjUy