Что такое функционирование в «Реальном масштабе времени»
Download 1.86 Mb. Pdf ko'rish
|
Луканов А.С. Системы реального времени 2020
Системные часы и таймеры. Системные часы используются
для отслеживания времени суток, которое, в свою очередь, используется таймерами. Neutrino обеспечивает системный вызов для плавной синхронизации часов между несколькими системами. Общая проблема всех операционных систем с вытесняющей многозадачностью заключается в потенциальной возможности вытеснения нити, установившей таймер, до того, как она успела выполнить запрос на сервис, для которого этот таймер предназначался. В результате, когда запрос все же начнет выполняться, таймер может быть уже исчерпан, что приводит к ненадежному функционированию системы. В Neutrino эта проблема решена за счет изменения процедуры и механизма использования таймеров. Они также имеют весьма эффективную реализацию. Практически, когда приложение хочет запросить сервис, нуждающийся в тайм-ауте, оно запрашивает у микроядра автоматический запуск таймера в случае перехода 83 приложения в определенное состояние. Запуск таймера и запрос сервиса становятся атомарной операцией, исключая тем самым неоднозначности. Обработка прерываний. Этот пункт является одним из самых сложных при разработке ОС для системы реального времени, поскольку необходимо выполнить множество плохо согласующихся требований. API обработки прерываний в достаточной степени соответствует предварительному стандарту POSIX 1003.1d . Модель обработки выглядит следующим образом. Нить, имеющая соответствующие привилегии, может динамически устанавливать и удалять обработчики прерываний путем передачи микроядру адреса функции-обработчика (ISR). При возникновении прерывания обработка передается сначала в микроядро, которое содержит код для его переадресации. Перед вызовом ISR микроядро сохраняет контекст исполняемой нити и переустанавливает регистры процессора таким образом, что ISR имеет доступ к адресному пространству нити, в которой он содержится. Это позволяет ISR выполнить обработку, пользуясь данными и буферами нити, в которой она содержится, или буферизовать принятые данные для последующей обработки этой нитью. Это также дает возможность ISR осуществлять доступ ко всем устройствам, находящимся в домене ответственности (области префиксов) данной нити, и непосредственно выполнять операции ввода-вывода. В результате драйверы аппаратуры оказываются не связанными с ядром и могут работать в кольце 1. К одному прерыванию можно присоединить несколько ISR, при этом они все будут вызваны. ISR должна вернуть управление по возможности быстро, отложив длительные операции для выполнения соответствующей нитью драйвера и информировав его об этом, например, с помощью пульса. Если возвращенное любой ISR значение указывает на то, что возникло некоторое событие, оно будет буферизовано. После вызова всех ISR микроядро завершает работу с программируемым контроллером прерываний и 84 возвращает управление из прерывания. Однако возврат не обязательно происходит в то место, где оно произошло. Если одно из буферизованных событий вызвало переход более приоритетной нити в состояние READY, то управление будет возвращено в контекст этой нити. Основное отличие этой схемы от механизма ISR/DPC , используемого в Windows NT, заключается в том, что все DPC диспетчеризуются с одним и тем же уровнем приоритета, а это означает невозможность вытеснения одного DPC другим и приводит к непредсказуемой задержке обработки более приоритетных прерываний. Описанная модель обеспечивает очень хорошие временные характеристики (interrupt latency и sheduling latency), поскольку Download 1.86 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling