22 - hal (Ответы на экзаменационные билеты), страница 6
Описание файла
Файл "22 - hal" внутри архива находится в папке "Ответы на экзаменационные билеты". Документ из архива "Ответы на экзаменационные билеты", который расположен в категории "". Всё это находится в предмете "системное программное обеспечение (спо)" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "спо" в общих файлах.
Онлайн просмотр документа "22 - hal"
Текст 6 страницы из документа "22 - hal"
Таким образом, оцениваются три основные концепции – производительность, оперативность отклика и детерминизм. Как быстро система переключает задачи и реагирует на внешние возбуждения надо оценить и при различных загрузках, это и называется детерминизмом.
Часто нужно ответить на вопросы типа
-
Как система управляет задачами.
-
Зависит ли способ управления от числа задач в системе.
Использование программного таймера добавляет непредсказуемости в измерения. Кроме того, измерения синхронны с системными часами. Вместо это используется внешняя аппаратура, чтобы выполнить измерения.
-
Можно ли использовать Windows NT как систему реального времени?
-
Архитектура
-
Windows NT – это относительно новая операционная система. Она была разработана в 1989 г. как операционная система 90-х годов и позднее. Базовая идея покоится на объектно-ориентированном программировании, строя операционную систему на модулях. Это идея была также распространена на ядро операционной системы, так чтобы ядро было функционально независимо от аппаратуры. Это было достигнуто, используя уровень абстрагирования от аппаратуры (hardware abstraction layer, HAL).
HAL
Следуя объектно-ориентированной модели, все компоненты операционной системы взаимодействуют, посылая сообщения друг другу. Вызовы к системным сервисам реализованы по средством сообщений, который посылаются из процесса в пользовательском режиме в сервис ядра операционной системы. Это позволяет каждой части ОС разрабатываться независимо и увеличивает общую надежность проекта. Приложения не имеют непосредственный доступ к аппаратуре, когда управление осуществляется сервисами, запущенными на уровне ядра. Это позволяет переносить NT легко на другие аппаратные платформы.
Управление задачами
Процессы в Windows NT принадлежат двум различным классам приоритетов: динамическому и реального времени. Большинство процессов принадлежат динамическому классу, который допускает изменение своих приоритетов операционной системой в зависимости от таких факторов как являются ли они фоновыми задачами или они недавно ожидают. Это хорошо для GPOS (General propose OS) , так как позволяет всем потокам быть запущенными и предоставляет пользователям более быструю реакцию от активного приложения. Однако правила, определяющие эти изменения приоритетов не подходят для RTOS (real-time OS). Поэтому Microsoft включила ряд приоритетов выше динамического класса, назвав их (Real-Time Class) класс приоритетов реального времени.
Потоки, запущенные с этими приоритетами всегда выполняются до тех, которые запущены с приоритетами из динамического класса. Операционная система не изменяет их приоритет никогда, таким образом оставляет большой контроль за разработчиком. Microsoft не рекомендует, чтобы потоки тратили много времени в этом классе, так как они имеют приоритет выше чем некоторые системные задачи, такие как сброс кэша диска и контроль ввода.
Можно подумать, что этого достаточно, чтобы сделать Windows NT операционной системой реального времени. К несчастью, существует ряд проблем с приоритетами. Только семь уровней приоритетов может быть использовано внутри класса, что явно недостаточно для серьезного приложения реального времени.
Блокировка инверсии приоритетов может происходить в потоках, ожидающих мьютекса. Большинство RTOS решают эту проблему с помощью инверсии приоритетов, но Windows NT использует схему, где потоки, которые не запускаются некоторое время принимают случайный приоритет повышая возможность быть запущенным. Это приводит к непредсказуемости и поэтому неприемлемо для системы реального времени, но используется в общецелевых операционных системах.
Память
Виртуальная память была включена с самого начала и каждый процесс запускается в своем собственном адресном пространстве. Это увеличивает надежность предотвращая процессы от разрушающего воздействия других процессов. Но это также изолирует задачи от аппаратуры и намного более сложно иметь доступ к ним непосредственно.
Управление виртуальной памятью включает механизм свопинга. Для бизнес-приложений это прекрасно, но для систем реального времени, которые должны откликаться на внешние события в предопределенных временных рамках, это веет к непредсказуемости, когда система должна получить страницу памяти с диска. Поэтому Windows NT позволяет закрыть страницы в памяти, вызвав функцию VirtualLock. Память для окна может быть свопирована, если оно сжато в иконку. Таким образом, можно избежать проблемы свопинга для приложений реального времени, ограничиваясь доступной физической памятью.
На уровне драйвера устройств, однако, свопинг можно обойти.
Метод управления прерываниями.
Системы реального мира взаимодействуют с реальным миром через аппаратуру компьютера. Внешние события преобразуются в прерывания и управляются драйверами устройств. Прерывания генерируются аппаратурой. На них откликаются драйверы устройств. Чтобы увеличить оперативность отклика ОС на прерывание был выбран оригинальный механизм. Управление прерываниями происходит в два этапа. Во-первых, прерывания управляются очень короткими Interrupt Service Routine (ISR) (модуль обслуживания прерываний). Он выполняет минимальную работу по сохранению содержимого аппаратных регистров и подтверждает прерывание. Затем он для остатка работы запрашивает DPC (Deferred Procedure Call) (процедура отложенного вызова), которая выполняется позднее. DPC размещается в очереди FIFO и запускается тогда, когда предыдущие DPC закончили свое выполнение. В очереди DPC нет никаких приоритетов. Так, что DPC с более низким приоритетом прерываний будет выполняться до DPC с более высоким приоритетом (но позже пришедшим) . Нет способа определить сколько DPC стоит в очереди и сколько времени они будут выполняться.
Рис. спектр приоритетов Windows NT
Отделение DPC от ISR позволяет уменьшить время маскирования прерывания. Это позволяет быстро откликнуться на аппаратуру для срочных вещей таких как чтение регистра. Но когда DPC установлен в очередь с порядком FIFO , нет никакой гарантии по времени, что пройдет до того как DPC будет запущен. Это уменьшает предсказуемость системы и делает не пригодным для RTOS. Однако, быстрый отклик перетягивает отсутствие предсказуемости для GPOS и тестовые результаты показывают, что средняя задержка прерывания очень быстрая.
Win 32 API
Все эти точки выглядят скорее как отрицательные для тех кто ищет серьезную надежную RTOS. Но Windows NT имеет свои преимущества и главный из них Win32 API. Этот интерфейс прикладного программирования должен быть широко используемым в мире так, что существует много разработчиков, знакомы с ним и хорошо его понимающих. У него много объектов синхронизации. Легкие и понятные инструменты разработчика. Это значительно упрощает работу программистов и открывает рынок реального времени для новых разработчиков и производителей.
-
Производительность
Рассмотрим сравнительные характеристики Windows NT и QNX на Pentium MMX. 200 MHz. Измерения проводились с помощью аппаратного таймера. Программный таймер не имеет нужной точности, поскольку синхронизирован с часами.
Первыми были измерены задержки переключения потоков. Т.е. время на переключение от одной задаче к другой. Тесты показали, что среднее переключение между потоками в Windows NT значительно выше, чем в QNX. И растет с увеличением числа потоков линейно. Этого не должно происходить в системах реального времени. (Система должна предсказуемым образом реагировать на непредсказуемые внешние воздействия, многие из которых происходят параллельно.) Кроме того, задержка переключателя порядка миллисекунд слишком длинная для приложений реального времени.
Измерения задержки обработки прерывания содержали две характеристики. Первый – это задержка ISR _ время с последней строчки прерванного потока и время первой строчки обработчика. Согласно Microsoft только критичная часть работы должна выполняться в ISR, остальное должно в DPC, которое будет задержано на случайное количество времени в зависимости от установленных драйверов.
Вторая характеристика – это время возврата из прерывания, т.е. время между последней линией процедуры обработки и первой линий прерванного потока. DPC имела более высокий приоритет, чем задача (даже задача реального времени), так что они бы выполнялись бы перед запуском задачи, которая была прервана.
Тесты показали, что средняя величина задержки ISR достаточно маленькая. Но максимальная величина слишком большая, что вызвано более приоритетными прерываниями типа таймера. В результате получается большое стандартное отклонение, что свидетельствует о небольшой предсказуемости системы. В сравнении с QNX и средняя величина и особенно максимальное значение выше, чем у QNX. Это делает NT не подходящим для реального времени.
Время возврата из прерывания также значительно превосходит QNX. Если DPC используется (как советует Microsoft), то нужно добавить время потраченное на DPC и переключатель контекста.
Все это не умаляет достоинств Windows NT как GPOS системы, где не нужен быстрый отклик на прерывание. Windows NT имеет быстрое время отклика на прерывание и контекстный переключатель. Это важная метрика для GPOS. Устойчивость и надежность архитектуры и богатство API и приложений делают Windows NT хорошим выбором для GPOS. Однако, слишком большая максимальная величина может вызвать проблему для требований приложений с временными ограничениями. В настоящее время на рынке имеются расширители к Windows NT, повышающие предсказуемость. Эти производители верят, что NT достаточно для систем реального времени.