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

Необходимые требования к операционным системам для обеспечения предсказуемости. Два класса приоритетов в Windows NT: класс реального времени и динамический. Вызовы системы синхронизации: семафоры или критические секции. Архитектура микроядра Neutrino.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 06.03.2014
Размер файла 48,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Сообщения являются классическим механизмом QNX, который сохранился и в Neutrino, но несколько расширился и усложнился. Помимо синхронных сообщений Neutrino поддерживает короткие асинхронные сообщения, называемые "пульсами" (Pulses), позволяющие передать 4 байт данных и реализованные на той же основе, что и сигналы POSIX. Пульсы представляют собой заменитель недостаточно гибкого механизма Proxy, применяемого в QNX.

Введение полноценного понятия нитей потребовало также усложнения механизма передачи сообщений. Если в QNX процессы устанавливали виртуальный канал непосредственно друг с другом, то в Neutrino они должны использовать для этой цели Соединения (connections) и Каналы (channels).

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

Системные часы и таймеры. Системные часы используются для отслеживания времени суток, которое, в свою очередь, используется таймерами. Neutrino обеспечивает системный вызов для плавной синхронизации часов между несколькими системами.

Общая проблема всех операционных систем с вытесняющей многозадачностью заключается в потенциальной возможности вытеснения нити, установившей таймер, до того, как она успела выполнить запрос на сервис, для которого этот таймер предназначался. В результате, когда запрос все же начнет выполняться, таймер может быть уже исчерпан, что приводит к ненадежному функционированию системы.

В Neutrino эта проблема решена за счет изменения процедуры и механизма использования таймеров. Они также имеют весьма эффективную реализацию. Практически, когда приложение хочет запросить сервис, нуждающийся в тайм-ауте, оно запрашивает у микроядра автоматический запуск таймера в случае перехода приложения в определенное состояние. Запуск таймера и запрос сервиса становятся атомарной операцией, исключая тем самым неоднозначности.

Обработка прерываний. Этот пункт является одним из самых сложных при разработке ОС для системы реального времени, поскольку необходимо выполнить множество плохо согласующихся требований. API обработки прерываний в достаточной степени соответствует предварительному стандарту POSIX 1003.1d. Модель обработки выглядит следующим образом.

Нить, имеющая соответствующие привилегии, может динамически устанавливать и удалять обработчики прерываний путем передачи микроядру адреса функции-обработчика (ISR). При возникновении прерывания обработка передается сначала в микроядро, которое содержит код для его переадресации. Перед вызовом ISR микроядро сохраняет контекст исполняемой нити и переустанавливает регистры процессора таким образом, что ISR имеет доступ к адресному пространству нити, в которой он содержится. Это позволяет ISR выполнить обработку, пользуясь данными и буферами нити, в которой она содержится, или буферизовать принятые данные для последующей обработки этой нитью. Это также дает возможность ISR осуществлять доступ ко всем устройствам, находящимся в домене ответственности (области префиксов) данной нити, и непосредственно выполнять операции ввода-вывода. В результате драйверы аппаратуры оказываются не связанными с ядром и могут работать в кольце 1.

К одному прерыванию можно присоединить несколько ISR, при этом они все будут вызваны. ISR должна вернуть управление по возможности быстро, отложив длительные операции для выполнения соответствующей нитью драйвера и информировав его об этом, например, с помощью пульса. Если возвращенное любой ISR значение указывает на то, что возникло некоторое событие, оно будет буферизовано. После вызова всех ISR микроядро завершает работу с программируемым контроллером прерываний и возвращает управление из прерывания. Однако возврат не обязательно происходит в то место, где оно произошло. Если одно из буферизованных событий вызвало переход более приоритетной нити в состояние READY, то управление будет возвращено в контекст этой нити. Основное отличие этой схемы от механизма ISR/DPC, используемого в Windows NT, заключается в том, что все DPC диспетчеризуются с одним и тем же уровнем приоритета, а это означает невозможность вытеснения одного DPC другим и приводит к непредсказуемой задержке обработки более приоритетных прерываний.

Описанная модель обеспечивает очень хорошие временные характеристики (interrupt latency и sheduling latency), поскольку Neutrino запрещает прерывания лишь на очень короткие промежутки времени, не зависящие от данных. Максимальное время задержки обработки прерывания можно вычислить на основании задержки, вносимой микроядром, и суммы времен исполнения всех ISR, назначенных для прерываний с более высоким аппаратным приоритетом.

Эту сумму также можно контролировать, поскольку Neutrino предоставляет API для переназначения приоритетов уровней прерываний в контроллере. Можно также свести ее к нулю, разработав систему таким образом, чтобы на уровне ISR ничего не делалось, а вся работа происходила бы на уровне нитей с приоритетами, назначенными разработчиком, а не в соответствии с приоритетами аппаратных прерываний.

Наконец, помимо обычных прерываний, нить может перехватить некоторые внутренние события Neutrino, и даже немаскируемые прерывания процессора (NMI). Заметим, что поскольку механизм системных вызовов основан на программных прерываниях, работающих так же, как и аппаратные, обработка системных вызовов происходит идентично обработке прерываний - вытеснение процессов при обработке прерываний и системных вызовов происходит одинаково быстро.

Практические аспекты применения системы. В соответствии с целями проекта система Neutrino должна быть в конечном итоге пригодна для решения таких разных задач, как создание системы управления беспилотным летательным аппаратом или создание корпоративного Internet-сервера. Пригодность системы может быть теоретической или практической, что определяется такими факторами, как наличие средств разработки, графических средств, дополнительного программного обеспечения, поставляемого независимыми разработчиками, и многими другими объективными и субъективными факторами, в том числе общественным мнением.

Пригодность также не означает целесообразность, которая всегда зависит от конкретных факторов, играющих роль в том или ином проекте. Например для реализации Internet-сервера на базе QNX/Neutrino.

Графическая подсистема Photon. Существует несколько довольно известных операционных систем, пригодных для создания систем реального времени. Однако большинство из них неспособны решить проблему реализации графического интерфейса пользователя (GUI) для встраиваемых систем, поскольку представляют собой очень ограниченные по возможностям realtime executives. Те, что способны поддержать полноценный GUI, например RtLinux, не позволяют извлечь из этого практическую пользу, поскольку реализация традиционных GUI, типа X11, связана с очень высокими затратами ресурсов, особенно памяти.

Приступая к проекту Neutrino, его разработчики продумали и это. Для реализации GUI, пригодного к использованию во встраиваемых системах реального времени, был начат еще один параллельный проект - Photon. В результате появилась графическая подсистема, по внешнему виду и структуре пользовательского интерфейса очень похожая на X11/Motif, но весьма скромная по затратам ресурсов. Это стало возможным благодаря применению при ее разработке принципа модульности и ряда новых фундаментальных идей. Вот лишь наиболее существенные из них:

- расширенный набор оптимизированных драйверов, которые имеют теперь новую архитектуру, повышенное быстродействие (не используется int10) и обеспечивают поддержку режимов High Color и True Color для всех адаптеров. Список поддерживаемых адаптеров пополнился такими моделями, как Matrox Millenium, ATI Rage 3D/3DII, IBM XGA, Trident 9470;

- поддержка мобильных масштабируемых шрифтов формата Bitstream TrueDOC через фонт-сервер, обеспечивающий единую систему именования и отображения имен в шрифтовые файлы с учетом кодировки Unicode (UTF-8), а также низкоуровневый доступ к шрифтам из приложений;

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

- новые виджеты, например PtHTML, PtTree, PtDivider, PtMenuBar, PtGrid, PtFontSel, RtProgress и ряд других, которые значительно перекрывают набор виджетов Motif 2.0;

- примеры исходного кода и документация для создания собственных виджетов и включения их в генератор приложений PhAB, который таким образом стал наконец расширяемым;

- набор новых приложений, включающий в себя File Manager, CD Player, Audio Player, Calculator, Personal Information Manager;

- графическая программа конфигурирования видеорежима;

- система XinPh, которая обеспечивает запуск системы X Window в окне системы Photon;

- фронт-процессор клавиатуры для поддержки азиатских языков (японский, китайский, корейский).

Бета-версия Photon 1.12 содержит ряд новых средств, включая:

- поддержку печати на принтерах PostScript, Epson и Hewlett-Packard, Canon;

- поддержку протокола Drag'n'Drop на уровне виджетов;

- новые виджеты (PtNumber, PtPrintSel, PtFileSelector и другие);

- универсальный драйвер видеоадаптеров класса VESA 2.0 (любые современные адаптеры, которые можно перевести в режим flat-memory);

- графический редактор текстов, поддерживающий кодировку Unicode;

- расширения API для поддержки новых возможностей Neutrino.

Сетевой сервис и файловая система. Сетевой сервис в Neutrino представлен только протоколом TCP/IP. Разработчики Neutrino хотели предоставить пользователям полный набор функциональных возможностей классического стека TCP/IP, но были вынуждены учитывать потребности рынка встроенных систем, для которых классическая реализация слишком велика и содержит много ненужных элементов. В результате они создали специальную версию стека для встроенных систем - Micro TCP/IP, который занимает всего около 40 Кбайт кода за счет ряда ограничений. Для тех же, кому нужны все возможности TCP/IP, например динамическая маршрутизация, будет предоставлен другой вариант, совместимый на 100% с BSD-sockets.

Neutrino также поддерживает сетевой протокол FLEET, используемый сейчас в QNX, с некоторыми усовершенствованиями, касающимися автоконфигурирования.

Файловая система в Neutrino реализована иначе, чем в QNX. Главное функциональное отличие - улучшенная приспособленность к сменным носителям. Для этого была изменена модель взаимодействия менеджеров ресурсов и драйверов устройств, примененная в QNX. Если там менеджер файловой системы обращался к драйверу устройства для получения сервиса физического уровня, то в Neutrino все наоборот. Теперь приложение обращается к драйверу, который определяет тип файловой системы (по сигнатурам) и динамически загружает соответствующую файловую систему, реализованную в виде разделяемой библиотеки.

Собственно говоря, файловых систем в Neutrino много. Поддерживаются все файловые системы, имеющиеся в QNX, а также виртуальная файловая система Proc. Для обеспечения обмена данными с другими операционными системами Neutrino также поддерживает файловую систему CIFS (Common Internet File System), которая представляет собой обобщенный вариант SMB, способный использовать любой сервис имен (например DNS) вместо Netbios NS. Разумеется, все файловые системы реализованы с учетом возможности работы в ограниченных ресурсах, то есть очень компактно. Например, код для поддержки файловой системы Tiny QNX (POSIX) занимает всего 12 Кбайт, конечно за счет некоторых ограничений. Эта система способна читать разделы, созданные QNX4, но не может создавать жесткие ссылки и файлы с именами длиннее 16 символов (иначе говоря, не может писать в файл .inodes)

Средства разработки и совместимость. Для успеха любой операционной системы необходимо наличие высококачественных средств разработки приложений. В отличие от большинства систем Neutrino имеет свои собственные средства разработки вместо обычного компилятора GCC и связанных с ним программ. Однако эти средства ничуть не хуже, и они вполне стандартны - это компилятор Watcom C/C++ 10.6. Среда разработки включает все стандартные средства Watcom. Существует версия системы кросс-разработки приложений QNX/Neutrino под Windows NT, с использованием системы разработки Watcom. Таким образом, разработчики, привыкшие использовать Windows, могут больше не пересаживаться за QNX и пользоваться "кровавыми" командными строками.

Более того, система Willows предоставит возможность компиляции приложений, написанных с использованием API Win32 под QNX/Neutrino/Photon. При этом обеспечивается поддержка бинарных объектов (DLL от третьих фирм) и непосредственное исполнение приложений Windows через эмуляцию. Однако перекомпилированные приложения будут иметь преимущество в скорости (вероятно, они будут работать быстрее, чем в Windows) и смогут использовать одновременно API системы QNX/Neutrino для выполнения задач реального времени и обмена сообщениями.

Между тем компилятор GCC 2.7.2 был перенесен в QNX и в Neutrino. А также переносена стандартная библиотека C из Unix (libc). Эти программы предоставляются бесплатно и являются неплохим дополнением к системе разработки Watcom. Данный факт может сыграть ключевую роль в ускорении переноса приложений из Unix и включении QNX/Neutrino в список платформ, поддерживаемых разработчиками приложений для Unix.

Таким образом, QNX/Neutrino становится платформой, на которую можно будет без проблем перенести приложения и из Unix, и из Windows, что должно существенно расширить круг готовых приложений для этой платформы.

Средства работы с Internet и разработка Internet-приложений. Ни одна современная ОС не может сегодня игнорировать "фактор Internet". В поддержке Internet нет ничего необычного, за исключением того, что и здесь нужно было учитывать основное требование встроенных систем - низкие затраты ресурсов. Сочетание QNX/Neutrino и графической системы Photon открывает совершенно новые возможности для рынка встроенных клиентских систем для Internet-устройств "карманного" размера (handheld devices). Фирма QSSL лицензировала WEB-browser фирмы Spyglass (на котором также основан MS Internet Explorer) и разработала комплект клиентских приложений для работы с Internet (Voyager Pro), включающий в себя Web-браузер, mail/news-клиент и графическую программу установления соединения с ISP.

Этот комплект доступен почти полностью с исходным кодом, под названием Internet Applliance Toolkit (IAT). Разработчики могут использовать этот код для создания модифицированных версий клиентских программ (browser, mail, news), оптимизированных под конкретные нужды. В результате разработчики получают уникальную возможность создавать встроенные системы с комплектом Internet-приложений за очень короткое время, поскольку все, что им потребуется - это модифицировать пользовательский интерфейс с помощью визуального средства разработки (Photon Application Builder).

Заключение. Neutrino - не единственная новая разработка в области операционных систем. Существует ряд других интересных проектов, некоторые из них построены на принципах, сходных с QNX (микроядро и обмен сообщениями), и пригодны для применения в системах реального времени. Такие системы, как L3/L4 и MkLinux, имеют также некоторые преимущества перед существующей версией Neutrino, например поддержку алгоритма диспетчеризации EDF и возможность исполнять приложения Linux (которых достаточно много). Тем не менее ни одна из этих систем не пригодна для применения во встраиваемых системах с ограниченными ресурсами, представляющими наибольший интерес для рынка систем реального времени.

Чем Neutrino отличается от QNX? Те, кто хорошо знаком с QNX, могут сделать вывод, что Neutrino имеет множество преимуществ, как-то:

- большая степень масштабируемости, как вниз, так и вверх;

- более высокая производительность, за счет улучшения архитектуры (нити);

- большее количество уровней приоритетов (256);

- новые средства синхронизации (condvars и mutexes) с поддержкой наследования приоритетов;

- отсутствие необходимости в BIOS;

- улучшенные средства асинхронного обмена (рulses);

- поддержка SMP;

- поддержка файлов, отображаемых в память;

- поддержка Unix-domain sockets и 100% совместимость с BSD-sockets;

- современный формат исполняемых модулей (ELF, с расширениями для сжатия);

- поддержка динамически связываемых библиотек (DLL);

- повышенный уровень безопасности (шифрование сообщений);

- усовершенствованная файловая система;

- поддержка виртуальной файловой системы Proc;

- мультиплатформенность (потенциальная);

- поддержка Java;

- расширяемость системы за счет подстановки системных вызовов;

- более гибкая цена, за счет более модульной структуры.

Обратная сторона медали? Перечисленные нововведения настолько глобальны, что они неизбежно должны привести к некоторой несовместимости с QNX 4.x.

QNX или Neutrino? Такой вопрос возникает у тех, кто уже давно использует QNX для своих разработок, равно как и у тех, кто только начинает работу в этой области. QNX4 является наиболее полной системой, с точки зрения функциональных возможностей. Она проверена временем, следовательно, ее можно считать также более надежной. Но ее архитектура отличается меньшей гибкостью, чем у Neutrino, что неизбежно означает некоторое замедление или прекращение ее дальнейшего развития в пользу Neutrino.

На данный момент API двух платформ имеют значительные непересекающиеся части, однако представители QSSL утверждают, что эта ситуация будет улажена. Вероятно, тогда проблема несколько упростится. Уже сейчас в системе Photon, которая поддерживается для обеих платформ, появились функции, маскирующие различия между QNX и Neutrino (например proxy/pulses). Впрочем, это не решит всех проблем. Neutrino предлагает совершенно иную парадигму программирования, с сильным акцентом на использование многопоточности, поэтому для ее эффективного использования особую актуальность приобретет переобучение специалистов, привыкших к QNX4.

Следует отметить, что богатый набор функций, реализованный в соответствии со стандартами POSIX, уже сейчас делает Neutrino весьма привлекательной альтернативой существующим решениям. Исследования рынка систем реального времени показали, что для систем с жесткими ограничениями ресурсов все еще широко используются различные исполняющие системы (realtime executive) c нестандартизированным API и часто довольно бедными функциональными возможностями. Именно поэтому разработчики Neutrino приняли решение выпустить предварительную версию системы, не имеющую пока возможностей для масштабирования вверх, но уже пригодную для применения во встроенных системах. Не случайно фирма Intel с некоторых пор поддерживает очень хорошие отношения с QSSL и покупает лицензии на Neutrino в огромных количествах. Несмотря на наличие собственной ОС реального времени, Intel также официально объявила о том, что QNX/Neutrino является для нее "Realtime OS of preference".

Размещено на Allbest.ru

...

Подобные документы

  • Основные характеристики систем реального времени, типы архитектур. Система приоритетов процессов (задач) и алгоритмы диспетчеризации. Понятие отказоустойчивости, причины сбоев. Отказоустойчивость в существующих системах реального времени (QNX Neutrino).

    контрольная работа [428,8 K], добавлен 09.03.2013

  • Классификация систем реального времени. Ядра и операционные системы реального времени. Задачи, процессы, потоки. Преимущества и недостатки потоков. Свойства, планирование, синхронизация задач. Связанные задачи. Синхронизация с внешними событиями.

    реферат [391,5 K], добавлен 28.12.2007

  • Обзор требований проблемной области. Особенности управления задачами. Исполнительные системы реального времени. Программирование на уровне микропроцессоров. Модели и методы предметной области. Реализация прототипа системы реального времени.

    курсовая работа [263,1 K], добавлен 15.02.2005

  • Требования, предъявляемые с сетевым операционным системам. Принцип работы Windows Server 2008, Windows Home Server 2011, Linux. Принципы управления ресурсами в сетевой операционной системе. Множественные прикладные среды. Основные ресурсы и службы.

    дипломная работа [179,6 K], добавлен 16.08.2013

  • История создания. Windows 9x/NT. Операционная система Microsoft Windows. Преимущества и недостатки Windows. Некоторые клавиатурные комбинации Windows 9x и NT. Windows XP Professional. Наиболее совершенная защита.

    реферат [19,3 K], добавлен 18.07.2004

  • Характеристики, основы применения, архитектура жестких и операционных систем реального времени. Последовательное программирование задач реального времени. Структура и языки параллельного программирования, мультипрограммирования и многозадачности.

    курсовая работа [195,9 K], добавлен 17.12.2015

  • Общая характеристика задач фиксации времени выполнения программ: выполнение процессов реального времени, профилирование. Программируемый интервальный таймер как весьма сложная система. Анализ основных функций, возвращающих стандартное время Windows.

    курсовая работа [82,7 K], добавлен 18.05.2014

  • Операционные системы пакетной обработки, разделения времени, реального времени. Особенности алгоритмов управления ресурсами. Поддержка многопользовательского режима. Вытесняющая и невытесняющая многозадачность. Операционные системы и глобальные сети.

    реферат [55,0 K], добавлен 11.12.2011

  • Универсальная многоцелевая сетевая операционная система Windows NT Server. Использование Windows NT Workstation как невыделенного сервера в одноранговых сетях и в качестве клиента сетей. Операционные системы Windows 2003, Windows Vista и Windows 7.

    презентация [6,2 K], добавлен 23.10.2013

  • Поддержание целостности общих данных, используемые методы и приемы. Проблема критической секции и направления ее разрешения. Аппаратная поддержка синхронизации, классические проблемы и разрешение. Критические области. Синхронизация в Solaris и в Windows.

    презентация [1,5 M], добавлен 24.01.2014

  • Характеристика устройств реального времени: принципы их создания, виды, практическое применение к операционным системам для персональных компьютеров. Основные свойства системы LynxOS, поддержка приложений, сетевые возможности. Средства кросс-разработки.

    реферат [33,1 K], добавлен 02.12.2013

  • Классификация программного обеспечения. Операционные системы и их функции. Служебные приложения Windows. Средства обеспечения компьютерной безопасности. Программы проверки и обслуживания диска Windows. Классификация служебных программных средств.

    реферат [50,5 K], добавлен 23.06.2012

  • Серверные операционные системы, их особенности и сферы применения. Функции и ресурсы операционной системы Windows Server 2003. Сервер как программный компонент вычислительной системы. Аппаратные и серверные решения. Минимальные системные требования.

    презентация [1005,9 K], добавлен 05.12.2013

  • Рассмотрение основных принципов и методов проектирования систем реального времени. Описание конструктивных и функциональных особенностей объекта управления, построение диаграммы задач. Выбор аппаратной архитектуры, модели процессов-потоков, интерфейса.

    курсовая работа [1,2 M], добавлен 19.01.2015

  • Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

    курсовая работа [2,8 M], добавлен 27.01.2010

  • Применение персональных компьютеров различных классов. Работа со встроенными программами Windows. Характеристика распространенных операционных систем (Windows 3.Х, 9Х, NT, 2000, XP, Windows7, Vista). Виды антивирусных программ и защита данных от вирусов.

    контрольная работа [32,3 K], добавлен 23.01.2011

  • Архитектурная организация ЭВМ основных классов и типов. Классификация компьютеров по поколениям. Операционные системы: Windows 95, Windows XP и Windows Vista. Защита от компьютерных вирусов: сканирование, эвристический анализ, антивирусные мониторы.

    контрольная работа [122,9 K], добавлен 08.04.2009

  • Характеристика операционной системы. История развития Windows. Сравнительная характеристика версий Windows. Элементы и инструменты Windows XP. Прикладные программы в Windows XP. Работа настольных и портативных компьютеров под управлением Windows.

    доклад [19,1 K], добавлен 16.10.2011

  • Понятия вычислительной системы, ее аппаратное обеспечение. Конфигурация и устройство компьютера. Элементы управления операционной системы Windows ХР. Стандартные и служебные приложения ОС. Архитектура фон Нейман. Работа в программе Microsoft Excel.

    шпаргалка [47,0 K], добавлен 29.12.2010

  • Первая версия Windows, постепенный рост системных требований. Важное отличие Windows 98 от Windows 95. История эволюции персональных компьютеров Apple Macintosh. Операционная система Linux, ее характерные черты и особенности, графические интерфейсы.

    реферат [1,5 M], добавлен 15.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.