Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
осрв.doc
Скачиваний:
20
Добавлен:
25.04.2019
Размер:
269.82 Кб
Скачать

Вопрос 57. Системы на основе Linux. Направления адаптации Linux к требованиям “реального времени”. Обзор осрв rt-Linux.

Рассмотрим системы на основе Linux - свободно распространяемой версии системы UNIX. Она получила значительное распостранение на настольных компьютерах в силу своей бесплатности и качества. Появившись на машинах с процессорами Intel 80x86, сейчас она поддерживает процессоры Alpha, SPARC, PowerPC, ARM, Motorola 68xxx, MIPS. Открытость исходных текстов системы позволяет реализовывать на ее основе специализированные системы и обеспечивать поддержку нового оборудования.

Приспособление системы Linux к требованиям "РВ" происходит по следующим трем направлениям.

1. Поддержка стандартов POSIX, касающихся систем реального времени. Стандарт POSIX 1003.1с (thread - работа с задачами) уже поддержан, стандарт POSIX 1003.1Ь (расширения реального времени) поддержан лишь частично: реализованы мех-мы управления памятью и мех-мы планир-я задач, мех-мы же работы с таймерами, сигналы, POSIX семафоры и очереди сообщений пока не реализованы.

2. Поддержка специального оборудования, важнейшим из которых является шина VME. Уже существует поддержка моста VME-PCI. Ведутся разработки по обеспечению выполнения Linux из ПЗУ. Также для систем реального времени важным является повышение разрешения таймера системы.

3. Реализация механизма preemption для ядра системы. Этот механизм, с одной стороны, является необходимым для того, чтобы систему можно было называть системой реального времени, а с другой стороны, он является очень сложным для реализации. Linux, как и все UNIX системы, надолго запрещает прерывания при входе в ядро системы, и является существенно не preemptive.

Существует несколько проектов реализации premption для ядра Linux. По способу решения задачи их можно разделить на две группы.

1. Механизм preemption реализуется путем переписывания ядра системы (благо оно доступно в исходных текстах). На этом пути можно достичь самых качественных результатов, но на данный момент значительных успехов в этом плане нет по следующим причинам:

a. слишком большой объем работы, связанный с большим объемом ядра;

b. слишком высокая скорость изменения ядра, причем изменения вносятся, не учитывая интересы РВ.

2. Механизм preemption реализуется путем написания микроядра, отвечающего за диспетчеризацию прерываний и задач. Ядро Linux работает как задача с низким приоритетом. Само ядро лишь незначительно изменено, для предотвращения блокирования им аппаратных прерываний. Задачи в такой системе разделены на две группы:

a. процессы, работающие под управлением только микроядра (не использующие функции ядра Linux); эти процессы удовл-ют требованиям реального времени, поскольку могут прерывать ядро Linux;

b. процессы, работающие под управлением Linux (обычные приложения, которые в данной системе рассматриваются как подзадачи процесса - ядра Linux), а также задачи работающие под управлением микроядра, но использующие функции Linux; эти процессы не удовлетворяют требованиям реального времени, поскольку могут быть блокированы ядром Linux.

Недостатком такого подхода является необходимость реализации микроядра, обеспечивающего функционирования процессов реального времени. Например, если процесс реального времени хочет работать с коммуникационным портом (например, СОМ портом), то драйвер этого порта надо перенести из ядра Linux в микроядро (поскольку использование драйвера Linux сделает этот процесс зависимым от текущей загруженности системы и других непредсказуемых факторов). Наиболее законченной реализацией этого подхода является проект RT-Linux.

Обзор ОСРВ RT-Linux.

Система RT-Linux является свободно распространяемой, разрабатываемой энтузиастами в ряде университетов мира. Создана в New Mexico Institute of Mining and Technology (USA).

Представляет собой простейшее микроядро, отвечающее за создание и планирование задач, обеспечение их взаимодействия и диспетчеризацию прерываний. Реализован простейший приоритетный механизм планирования и единственный механизм взаимодействия - очередь сообщений FIFO. Ядро Linux работает как самая низкоприоритетная задача. Само ядро подправлено: макроопределения, отвечающие за запрещение/разрешение прерываний заменены на вызов соответствующих функций микроядра. Задачи Linux не могут прервать ядро Linux, задачи же микроядра - могут.

Типичный механизм функционирования системы следующий. Критическая часть приложения (например, получение данных с датчика) реализуется как процесс микроядра. Часть, отвечающая за визуализацию и хранение данных, реализуется как процесс Linux. Эти два процесса взаимодействуют посредством очереди сообщений FIFO.

Простота микроядра позволяет разработчикам легко его модифицировать для удовлетворения своих потребностей.

Минимальный размер системы для записи в ПЗУ (без Х-Windows) - 2.7Mb.