Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Операционные системы реального времени



Система называется системой реального времени, если правильность ее функционирования зависит не только от логической корректности вычислений, но и от времени, за которое эти вычисления производятся. То есть для событий, происходящих в такой системе, то, КОГДА эти события происходят, так же важно, как логическая корректность самих событий. Говорят, что система работает в реальном времени, если ее быстродействие адекватно скорости протекания физических процессов на объектах контроля или управления. Все ОС РВ являются многозадачными операционными системами, Задачи делят между собой ресурсы вычислительной системы, в том числе и процессорное время. Четкой границы между ядром (Kernel) и операционной системой нет. Различают их. как правило, по набору функциональных возможностей. Ядра предоставляют пользователю такие базовые функции, как планирование и синхронизация задач, межзадачная коммуникация, управление памятью и т. п. Операционные системы в дополнение к этому имеют файловую систему, сетевую поддержку, интерфейс с оператором и другие средства высокого уровня. По своей внутренней архитектуре ОС РВ можно условно разделить на монолитные ОС. ОС на основе микроядра и объектно-ориентированные ОС. Главным отличием ОСРВ от ОС общего назначения является их способность обеспечить реакцию на внешние события в определенном, заранее известном временном интервале. ОСРВ реагируют предсказуемо в условиях работы с потоком непредсказуемых событий. ОСРВ является частью комплекса реального времени, в состав которого входят аппаратные средства, предоставляющие возможность управления внешними объектами (компьютеры или вычислительные модули, датчики, исполнительные элементы, преобразователи информации), а также необходимые для этого прикладные программы. Среди основных параметров ОСРВ — задержка обработки прерывания, которая определяется, как правило, временным интервалом между поступлением сигнала прерывания и началом исполнения первой команды программы его обработки, время переключения контекста, компактность кода. ОСРВ используются в критически важных приложениях, где нельзя допустить, чтобы неадекватное поведение системы привело к катастрофе или огромным финансовым потерям. Не следует путать ОСРВ с системой реального времени. Первая ОС используется для создания системы реального времени. ОСРВ должна быть предсказуемой - это не значит, что она должна быть быстрой, это означает, что при построении СРВ можно добиться того, чтобы максимальное время, затрачиваемое на определенную работу, укладывалось в заранее установленный лимит, сравнимый с требованиями приложения. Windows 3.11, например, даже на сколь угодно быстром процессоре бесполезна для построения СРВ, поскольку любое приложение может захватить управление и заблокировать все остальное. Основой любого аппаратно-программного комплекса, работающего в режиме РВ, является ОС. Надежность и предсказуемость работы всей системы зависит от правильного выбора ОС. ОС общего назначения, особенно многопользовательские, такие как UNIX, ориентированы на оптимальное распределение ресурсов компьютера между пользователями и задачами (системы разделения времени). В ОСРВ подобная задача отходит на второй план – все отступает перед главной задачей – успеть среагировать на события, происходящие на объекте. Другое отличие – применение ОСРВ всегда связано с аппаратурой, с объектом, с событиями, происходящими на объекте. Система реального времени, как аппаратно-программный комплекс, включает в себя датчики, регистрирующие события на объекте, модули ввода-вывода, преобразующие показания датчиков в цифровой вид, пригодный для обработки, и, наконец, компьютер с программой, реагирующей на события, происходящие на объекте. ОСРВ ориентирована на обработку внешних событий. Именно это приводит к коренным отличиям (по сравнению с ОС общего назначения) в структуре системы, в функциях ядра, в построении системы ввода-вывода. ОСРВ может быть похожа по пользовательскому интерфейсу на ОС общего назначения (к этому, кстати, стремятся почти все производители ОСРВ), однако устроена она совершенно иначе. Кроме того, применение ОСРВ всегда конкретно. Если ОС общего назначения обычно воспринимается пользователями как уже готовый набор приложений, то ОСРВ служит только инструментом для создания конкретного аппаратно-программного комплекса реального времени. Проектируя и разрабатывая конкретную систему реального времени, программист всегда знает точно, какие события могут произойти на объекте, знает критические сроки обслуживания каждого из этих событий. Среди современных ОС есть класс продуктов, разработанных специально для построения систем жесткого реального времени – VxWorks, OS9, QNX, LynxOS, OSE и другие. Эти системы содержат необходимый для достижения этой цели набор инструментов и в некоторых случаях являются единственным выбором - на него приходится идти, невзирая на затраты. Однако достаточно часто требования к реальному времени (полная предсказуемость времени реакции) допускают компромиссы. Иногда, например, необходимо добиться только нужной средней производительности. Иногда достаточно жестко контролировать только одно из событий, допуская при этом задержки реакций на остальные. В подобных случаях возможности выбора расширяются и желаемых результатов можно достичь, используя такие широко распространенные ОС как LINUX, Windows NT, Windows CE, дополняя их расширениями реального времени (RTAI, RT LINUX, RTX), и (или) используя глубокие знания системы и высокое искусство конкретных специалистов. Понимание принципа действия и основных свойств ОСРВ (RTOS - Real Time Operating System) требует введения таких базовых определений, как микроядро (microkernel) и макроядро (macrokernel). Существует две основные школы «ядростроителей» (kernel developers): одна считает, что ядро операционной системы должно быть компактным и быстрым, а функциональность рассредоточена в процессах, другая проповедует более традиционный подход, предоставляя ядру все базовые функции ОС, а процессам - ничего, кроме возможности вызова этих самых функций. Для обозначения первого (по перечислению, а не по времени появления) типа архитектуры в 1989 году Ирой Голдштейн и Полом Дейлом был введен термин микроядро (microkernel). Первая (теперь - в хронологическом смысле) архитектура ядра (традиционная, или монолитная (monolithic), как ее называют в англоязычной литературе) получила название «макроядро» Споры о том, какая архитектура лучше, идут до сих пор. Большинство реализаций ОС UNIX построены на макроядре, в том числе наиболее популярные на сегодняшний день - Linux и FreeBSD. На микроядре построены такие операционные системы, как Mach и QNX. Впрочем, некоторые системщики не относят Mach к микрокернелам по причине большого размера ядра (оно включает в себя драйвера устройств, что типично скорее для макрокернелов). С ядром QNX сложилась обратная ситуация - оно настолько мало (и по размеру, и по функциональности), что пришлось ввести новый термин - наноядро (nanokernel). Думаю, что споры вокруг Mach можно было бы решить тем же путем, т.е. изменением терминологии - но, судя по всему, слова сантикернел и децикернел показались программистам недостаточно благозвучными. Следует понимать, что разграничение ОС на микроядра и макроядра производится вовсе не по размеру ядра, а по его архитектуре, т.е. по соотношению между количеством функций, реализованных в ядре, и функций, реализованных вовне ядра. Другие параметры (производительность, гибкость, работа в реальном времени) не могут быть признаками такого разграничения. Кроме того, граница между макрокернелами и микрокернелами становится все более размытой благодаря тому, что многие современные монолитные ядра содержат так называемые нити (threads) и обладают способностью к «мелкозернистому» распараллеливанию (fine-grained parallerism). Архитектурно такие ядра подобны микрокернелам с большим количеством процессов, работающих в разделяемой (shared) памяти. Возможность ОС работать в реальном времени в значительной степени определяется архитектурой ядра. Наиболее удобными в этом плане являются микроядра (собственно, для этого они и разрабатывались), но это не означает, что все микрокернелы работают в реальном времени (Mach - микроядро, не работающее в реально времени, что вовсе не умаляет других достоинств этой ОС, породившей множество потомков, в том числе NeXTStep, Hurd, BeOS и MacOSX). Существование макрокернела с полноценной поддержкой работы в реальном времени все еще под вопросом, а вот частичная реализация - обычное дело. Например, в Linux активно внедряются упоминавшиеся ранее межпроцессные нити, причем уже существует большое количество приложений (первым был Web-сервер Apache), пользующихся этим интерфейсом. QNX. Самая популярная в России ОСРВ - QNX 4.0. Среди других unix-клонов она также занимает уверенное положение - пенетрация (т.е. захваченная доля рынка) этой ОС составляет приблизительно 8-10%, большей распространенности добились только Linux и FreeBSD, захватившие в сумме около половины российского рынка unix-систем. Несмотря на то, что QNX изначально является коммерческой, закрытой и проприетарной, в настоящее время ее модель лицензирования допускает получение и использование на безвозмездной основе как самой ОС (в минимальной конфигурации, конечно, и не для коммерческого использования, но - повторюсь - абсолютно бесплатно и без ограничений по времени), так и исходных кодов (тоже не всех и не для всех - но и это уже немало). В чем же крутость этой ОС? Она многозадачная, многопользовательская, модульная и POSIX-совместимая. Кстати, ОС эта раза в 2 постарше Linux. Впрочем, это не показатель. 8К микроядро (да-да, восемь килобайт!). Вот это показатель! Именно так достигается рекордное время переключения контекста - 2,5 наносекунды. Дело в том, что ядро управляет только разделением времени между процессами и передачей сообщений. Даже управление процессами и распределение ресурсов для процессов осуществляется отдельной программой, которая так и называется - менеджер процессов, причем делает это она в соответствии с POSIX 1003.4. Другие характеристики: 12 возможных вызовов микроядра, 32 уровня приоритета и три алгоритма разделения времени (FIFO, круговой и адаптивный). требования к оборудованию: CPU: 8088, 80286, 80386 и выше RAM: менее 640Кб (для исполнения), 2Mб (для разработки) HDD: 5Мб для ОС и утилит (для системы программирования - еще 4Мб); возможна бездисковая конфигурация.




Дата публикования: 2015-02-03; Прочитано: 981 | Нарушение авторского права страницы



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...