Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора з романова.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
6.65 Mб
Скачать

4::Системы управляемые прерываниями::28.09.2010

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

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

Программы обработки прерываний

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

В любой системе существует 2 вида прерываний:

Аппаратное – сигнал генерируется периферийным устройством и посылается ЦП. В свою очередь ЦП выполняет программу обслуживания прерывания (ISR – Interrupt Service Routine), которая обрабатывает прерывание в соответствии с его типом.

Програмное – подобно аппаратному, но в этом случае оно вызывает один модуль кода для передачи другому.

Различие мужде аппратными и програмными прерываниями лежит в механизме переключения. Переключателем аппаратного прерывания является електрический сигнал от внешнего устройства. В то врема как переключателем програмного прерывания является выполнение команды машинного языка.

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

Аппаратные прерывания являются асинхронными по своей природе, т.е. прерывание может произойти в любой момент времени. Если происходит прерывание, выполняемая в текущий момент программа приостанавливается, пока ЦП активирует ISR. Часто разработчику приложения необходимо самому писать программу обработки прерываний для конкретного типа аппаратного прерывания. В этом случае необходимо также полностью понимать внутреннее состояние ЦП, и есть ли необходимость в сохранении программы ISR чего либо еще в дополнение к регистрам общего назначения.

Доступ к ресурсам, разделяемых с ISR обычно контролируется запретом прерывания приложений для любых команд, обращающихся к ресурсу при записи или чтении. Механизмы синхронизации не могут быть использованы в ISR, поскольку ISR не может находится в состоянии неопределенного ожидания при доступности ресурсов. Когда прерывания запрещены возможность системы получить воздействия извне является минимальным. Важно учитывать что работа секции кода, в которой прерывания запрещены должна быть как можно короче по времени. Ечли процедура обработки прерывания ISR черезчур затянута, внешнее устройство может слишком долго ждать обслуживания, что повлечет за собой сбой СРВ.

В независимости от стиля написания ISR, моментальный снимок (snapshot) состояния компьютера, называемый контекстом должен быть сохранен перед переключением задач так, чтобы быть восстановленым перед возобновлением прерванного процеса.

Переключение контекста

Переключение контекста – процесс сохранения и восстановления необходимой и достаточной информации для задачи реального времени таким образом, чтобы она могла быть возобновлена после прерывания. контекст обычно сохраняется стековой структуре данных. Правило для сохранения контекста простое: сохранить минимальное количество информации необходимое для восстановления любого процесса после его прерывания. Чаще всего такая информация включает: содержимое регистра общего назначения, содержимое програмного счетчика (счетчика комманад - PC), содержимое регистров сопроцессора (если такое имеется), регистр страницы памяти, образы распределения адресов в памяти устройств ввода-вывода, образы зеркала. Обычно, в рамках программ обработки прерываний прерывания запрещены во время критического переключения контекста. Иногда, тем не менее, после того, как необходимый контекст сохранен, прерывания могут быть разрешены для управления последовательностью (пакетом прерываний) или для обнаружения ложных прерываний.

ДОПИСАТЬ

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

Решение всех вопросо для реального времени. Без приоритетывфолфаллдывдлтодывалджфоываодылв цыкл ворпросов как фоновая задача например как фоновая задача. Добавления прирываний для синхранизаций даст полную приоритетную систему. Код управления пририваниями является приоритетно фоновой ситемой без приоритетных задач и кодом управляемым фазами процессов в качестве фоновых задач.Системы с сопрограммами являются просто усложненным фоновым процессом.

Фоновая обработка

Также как и задача с обслуживаниям без прерываний фоновая обработка не должна включать никаких задач критичных по времени. Поскольку фоновый процесс является процессом с самым низким приоритетом практически в 100% случаев. Код всегда должен выполнятся в завершающей фазе обработки. И не должен иметь ни каких ситуаций блокировки во время выполнения. Во время выполнения фоновых задач увеличивается

Лекция 1

Тема: «Введение. Основные концепции встроенных систем и СРВ»

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

Режим реального времени – режим обработки данных, при котором обеспечивается взаимодействие вычислительной системы с внешними по отношению к ней процессами в темпе, соизмеримом со скоростью протекания этих процессов. Следует различать масштаб времени, в котором функционирует модель системы(натуральный или измененный) от режима функционирования самой системы. Модель системы может функционировать в замедленном, натуральном времени и в масштабе реального времени.

Лекция 2

Тема: «Системы реального времени: некоторые определения, примеры и краткая история»

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

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

Например, в ракетной системе наведения выходной сигнал необходимо выдавать с интервалом в несколько миллисекунд, тогда как в управляемой компьютером линии по сборке автомобилей реакция системы может быть даже в пределах 1 секунды. Для иллюстрации других определений термина «система реального времени» дадим еще два определения:

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

В проекте PD&CS 1995г. дается следующее определение: система реального времени (СРВ) – это система, которая требует реакции на внешние воздействия в интервалы времени, предопределенные внешней(по отношению к системе) среды.

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

Специалисты – практики в сфере разработки вычислительных СРВ часто проводят различие между жесткими(хард) и мягкими(софт) СРВ.

Жесткие СРВ те, для которых безусловно требуется, чтобы реакция системы происходила в пределах указанного крайнего срока по времени.

Мягкие СРВ – те, для которых время отклика важно, но система все еще будет функционировать правильно, если иногда эти крайние сроки будут превышены.

Мягкие системы сами по себе могут отличаться от интерактивных, в которых нет явных временных крайних сроков.

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

Многие системы имеют подсистемы реального времени как жесткого так и мягкого типа, например, время отклика(реакции) на некоторые события может иметь мягкий интервал 50 миллисекунд(для оптимально эффективной реакции) и жесткий интервал 200 миллисекунд(чтобы гарантировать отсутствие какого-либо ущерба для персонала или оборудования). Эти определения и примеры иллюстрируют лишь использование термина «мягкий» и не подразумевают единственный вид требования, однако объединяют ряд различных свойств, например, иногда верхний предел временного интервала может быть превышен. Иногда функция может быть выполнена с опозданием, опять-таки с превышением верхнего интервала.

Временное интервальное ограничение, которое иногда может быть превышено, и для которого несущественно опоздание в своевременном отклике(реакции) называется квазиограничением(firm).

В некоторых СРВ для дополнительных квазикомпонентов могут быть установлены вероятностные требования(например, жесткая функция должна производить вывод данных каждые 300 миллисекунд; по крайней мере, 80% времени этот вывод будет производиться квазикомпонентой Х, в других случаях будет использоваться жесткая, но функционально гораздо более простая компонента Y). Главной особенностью вышерассмотренных случаев является роль компьютера в качестве компонента обработки данных для больших инженерных систем, именно по этой причине такие функции компьютера известны как встроенные компьютерные системы(ВКС). Встроенные системы реального времени распространены настолько хорошо, что они нашли применение даже в бытовой технике и игрушках. Некоторые примеры применения СРВ приведены в таблице 2.1.

Рассмотрим инерциальную систему измерения параметров пространственного движения самолета. Спецификация ПО устанавливает, что ПО должно получать импульс акселерометра по осям X, Y и Z с частотой 10 миллисекунд от специального оборудования.

Лекция 3

Тема: «Операционные системы реального времени (ОС РВ)»

Операционная система в цифровой вычислительной системе (ОС в ЦВС) - система программ, предназначенная для обеспечения определенного уровня эффективности ЦВС за счет автоматизированного управления ее работой и предоставляемого пользователям набора услуг.

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

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

Поток - легковесный процесс, который разделяет ресурсы с другими процессами или потоками.

Каждый процесс постоянно находится в рамках некоторого другого процесса и использует ресурсы этого процесса. Потоки, находящиеся в рамках одного и того же процесса разделяют эти «процессные» ресурсы.

ОС РВ должны обеспечивать три основных функции по отношению к задачам:

  1. планирование;

  2. диспетчеризация;

  3. взаимосвязь и синхронизация

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

Рис. 3.1 Роль ядра в операционных системах

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

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

Исполняющая система(супервизор, организующая, управляющая программа) – ядро, которое включает выделенные блоки памяти, сервисы ввода/вывода и другие сложные компоненты ОС.

Большинство ядер коммерческих ОС РВ являются супервизорами.

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

Псевдоядра

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

Циклический опрос

Циклический опрос используется для быстрого доступа к какому-либо одиночному устройству. В системе с циклическим опросом используются одиночные и повторяющиеся команды для тестирования флага, указывающего произошло или нет некоторое событие, если событие не произошло, опрос продолжается. Например, предположим, что необходима система ПО для управления пакетами данных, которые поступают с частотой не более 1 раз/секунду. Флаг с именем устанавливается сетью посредством которой данные записываются в память ЦП с использованием прямого доступа в память. Данные доступны, если = 1. Фрагмент программы на С, реализующей последовательный циклический опрос для управления такой системой:

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

…..

Лекция 4

Тема: «Операционные СРВ. Системы, управляемые прерываниями»

Операция процессора, состоящая в регистрации состояния процессора, предшествовавшего прерыванию и установлению нового состояния, называется прерыванием.

Прерывание – это реакция процессора на некоторые события, которые возникли в процессоре или вне его. Прерывание позволяет обработать возникшее событие специальной программой и вернуться к прерванной программе.

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

Программы обработки прерываний

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

В любой системе существует два вида прерываний:

  1. аппаратное прерывание – сигнал генерируется периферийным устройством и посылается центральному процессору, в свою очередь ЦП выполняет программу обслуживания прерывания(ISR), которая обрабатывает прерывание в соответствии с его типом;

  2. программное прерывание – подобно аппаратному прерыванию, но в этом случае оно вызывает один модуль кода для передачи управления другому.

Различия между аппаратным и программным прерыванием состоит в режиме переключения. Переключателем аппаратного прерывания является электрический сигнал от внешнего устройства. В то время как переключателем программного прерывания является выполнение команды машинного языка.

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

Аппаратные прерывания являются асинхронными по своей природе, т.е. прерывание может произойти в любой момент времени. Если происходит прерывание, то выполняемая в текущий момент программа останавливается(подвешивается) пока ЦП активирует программу обслуживания прерывания(ISR), часто разработчику приложения приходится самому писать программу обработки прерываний для конкретного типа аппаратного прерывания, в этом случае необходимо также понимать внутреннее состояние ЦП и, если есть необходимость сохранения программы обслуживания прерывания(ISR) чего-либо еще в дополнение к регистрам общего назначения.

Доступ к ресурсам, разделяемых с программой обслуживания прерывания(ISR) обычно контролируется запретом прерываний в приложении для любых команд, обращающихся к ресурсу при записи или чтении. Механизмы синхронизации не могут быть использованы в программах обслуживания прерывания(ISR), поскольку они не могут находиться в состоянии неопределенного ожидания при доступности ресурса. Когда прерывания запрещены, возможности системы получить воздействие извне является минимальной. Важно учитывать, что работа секции кода, в которой прерывания запрещены, должна быть как можно короче по времени. Если процедура обработки прерываний в программе обслуживания прерывания(ISR) чересчур затянута, внешнее устройство может слишком долго ждать обслуживания, что повлечет за собой сбой СРВ. Вне зависимости от стиля написания программы обслуживания прерывания(ISR) моментальный снимок(snapshot) состояния компьютера, называемый контекстом должен быть сохранен перед переключением задач так, чтобы быть восстановленным перед возобновлением прерванного процесса.

Переключение контекста

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

Правило для сохранения контекста простое: сохранить минимальное количество информации, необходимой для восстановления любого процесса после его прерывания. Чаще всего такая информация включает: содержимое регистров общего назначения, содержимое программного счетчика (счетчика команд, BC), содержимое регистров сопроцессора (если такой имеется), регистр страницы памяти (при страничной адресации), образы распределения адресов памяти устройств ввода/вывода (образы зеркала). Обычно, в рамках программ обработки прерываний прерывания запрещены во время критического переключения контекста. Иногда, тем не менее, после того, как необходимый контекст сохранен, прерывания могут быть разрешены для управления последовательностью (пакетом прерываний) или для обнаружения ложных прерываний.

Тема: «Ввод-вывод данных на уровне технических средств компьютера»

Одной из основных уровней ОСРВ и встроенных ОС является обслуживание внешних устройств то есть обеспечение эффективности ввода-вывода данных. В СРВ устройство ввода-вывода - это датчики, преобразователи, рулевые механизмы. Устройство вывода – это как правило приводы, переключатели и дисплеи. Ввод-вывод осуществляется одним из трех различных методов: программируемый ввод-вывод, ввод-вывод с использованием выделенной памяти, прямой доступ к памяти (ПДП).

Для СРВ каждый метод имеет свои преимущества и недостатки по производительности, стоимости и простоте реализации.

Программируемый ввод-вывод

Для передачи данных используются специальные команды ЦП. Команда ввода(in) передает данные от устройства ввода-вывода в указанный регистр ЦП. Команда вывода передает данные из регистра ЦП заданному устройству ввода-вывода. Обычно идентификация операционного регистра ЦП встроена в код команды. Как команда ввода так и команда вывода требуют затрат ресурсов ЦП и в первую очередь времени, что влияет на производительность в режиме РВ.

Пусть например компьютерная система используется для управления скоростью двигателя. Выходной порт соединен с двигателем и чтобы установить частоту вращения двигателя целое число со знаком записывается в порт. Архитектура компьютера такова, что когда команда аут выполняется содержимое регистра «1» помещается на шину данных и отправляется на порт ввода-вывода по адресу содержавшемуся в регистре «2».

Прямой доступ к памяти (ПДП/DMA)

Память предоставляется другим устройствам системы без вмешательства ЦП, то есть информация заносится непосредственно в оперативную память внешнего устройства. Если схема ПДП не интегрирована в микросхему ЦП, то необходим контроллер ПДП, поскольку такая схема не требует участия ЦП при передачи данных, собственно передача данных происходит быстро.

Контроллер ПДП прдеотвращает ситуации требуя от каждого устройства «сигал запроса ПДП», который должен быть подтвержден «сигналом подтверждения ПДП» от контроллера. Пока подтверждающий сигнал не послан устройву запроса его соединение с главной шиной находится в тристабильном состоянии. Любое устройство, котрое находится в тристабильном состоянии не может влиять на данные шины памяти. Как только «сигнал подтверждения ПДП» отправлен устройству запроса его проводники шины памяти становятся активными и происходит передача данных, точно также как и обмен данными с ЦП.

Ввод-вывод с использованием выделенной памяти

Обеспечивает удобный механизм передачи данных, который не требует использования специальных команд ЦП для ввода-вывода. Есть определенный адреса памяти отображаемые как виртуальные порты ввода-вывода.

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

Например дисплей состоит из массива 24 строки на 80 столбцов (1920 ячеек). Каждая ячейка экрана связана с определенным адресом в памяти. Для обновления экрана символы из памяти записываются по адресу, связанному с этой ячейкой экрана.

Побитное отображение устройств

Побитовая карта описывает представление ряда устройств, к которым можно получить доступ единственным дискретным сигналом. Биты организованы в слова памяти для удобного доступа либо посредством ПДП, либо по адресы выделенной памяти. Типичный битовый массив для нескольких устройств вывода. Каждый бит связанный с конкретным устройством.