Что такое функционирование в «Реальном масштабе времени»


Download 1.86 Mb.
Pdf ko'rish
bet23/72
Sana19.04.2023
Hajmi1.86 Mb.
#1362511
TuriУчебное пособие
1   ...   19   20   21   22   23   24   25   26   ...   72
Bog'liq
Луканов А.С. Системы реального времени 2020


разделяемые области памяти;
– 
псевдоустройства, предоставляющие возможность обмена 
данными с приложениями реального времени.
Ключевой принцип построения RTLinux – как можно больше 
использовать Linux и как можно меньше собственно RTLinux
Действительно, именно Linux заботится об инициализации системы 
и устройств, а также о динамическом выделении ресурсов. "На 
плечи" RTLinux ложится только планирование задач реального 
времени и обработка прерываний. Для простоты запуска в 
контексте ядра, сохранения модульности и расширяемости системы 
процессы реального времени реализованы в виде загружаемых 
модулей Linux. Как правило, приложение реального времени с 
RTLinux 
состоит из двух независимых частей: процесса
исполняемого ядром RTLinux, и обыкновенного Linux-приложения.
Для иллюстрации работы приложения реального времени 
рассмотрим прикладной модуль, который использует ядро 
реального времени RTLinux в виде загружаемого модуля Linux


52 
#define MODULE 
#include <linux/module.h
/* необходимо для задач 
реального времени */ 
#include <linux/rt_sched.h
#inlcude <linux/rt_fifo.h
RT_TASK mytask
В заголовке модуля определяется структура RT_TASK
которая содержит указатели на структуры данных модуля, а также 
управляющую информацию. В нашем случае для связи между 
процессами используются очереди сообщений FIFO (рис. 1.2).
Модуль реального времени читает данные из устройства и 
кладет их в очередь сообщений, откуда их потом забирает 
обыкновенное приложение Linux. 
Рис. 1.2. Механизм межпроцессной связи через очереди сообщений FIFO 
Как и каждый модуль Linux-ядра, процесс реального времени 
должен выполнить процедуры инициализации и завершения
аналогичные модулям Linux:
 
int init_module(void

/* 
определить номер 
очереди сообщений */ 
#define RTFIFODESC 1 


53 
/* взять локальное время */ 
RTIME now = rt_get_time() 
rt_task_init(&mytaskmainloop
RTFIFODESC,3000, 4); 
rt_task_make_periodic(&mytask
now+1000, 25000); 
return 0; 

Подобный модульный подход к написанию приложений 
присущ многим расширениям реального времени для 
универсальных систем, когда задача реального времени работает 
независимо от ОС. Разработчики уже приняли схему, по которой 
задачи, критичные к времени реакции, программируются с 
помощью API-интерфейсов, предусмотренных расширением 
реального времени, а все служебные и интерфейсные функции 
возлагаются на традиционную операционную систему. Логично 
предположить, что при использовании данного подхода 
разработчику потребуется изучить только API-интерфейс реального 
времени.
Оба подхода в реализации механизмов реального времени, 
заложенные в KURT и RTLinux, применимы для большинства задач 
реального времени. Многие разработчики уже приняли Linux и 
внедряют ее в своих коммерческих проектах как основную 
операционную систему для серверов приложений. Однако до сих 
пор при реализации вертикальных проектов на нижнем уровне 
применялись специализированные ОС реального времени. 
Ситуация 
может 
существенно 
измениться 
благодаря 
использованию расширений реального времени для Linux.

Download 1.86 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   72




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling