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

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

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

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

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

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

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

Пользователи

ОС

Оболочка пользовательского

интерфейса

Исполняющая система

Поддержка файлов и дисков

Ядро

Межпроцессорное взаимодействие

и синхронизация

Микроядро

Планирование задач

Наноядро

Управление потоками

Технические средства

Рис.3.1.

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

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

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

Псевдоядра

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

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

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

Предположим, что необходима система ПО для управления пакетами данных, которые поступают с частотой не более чем 1 раз в секунду. Флаг “packet here” устанавливается сетью, посредством которой данные записываються в пасять ЦП с исп. прямого доступа к памяти (DMA). Данные доступны если “packet here==1”.

Пример программы на C:

for(;;){

if(packet here){

process data();

packet here=0;

}

}

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

ДОРАБОТКА 28.09.2010

Синхронизированный циклический опрос

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

Такая система исп. для рассмотрения события демонстрирующего дребезг переключателя (ключа). дребезг ключа является эффектом, происходящим из-за невозможности создания такого ключа, механического или электрического, могущего изменять свое состояние мгновенно. Характерная реакция для такого ключа предоставлена на РИС.3.2.

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

Конечно, существуют и ложные события, которые вывели бы из строя любую службу циклического опроса. Например: предположим, что система циклического опроса исп. для обслуживания случайного события, происходящего не чаще чем 1 раз в секунду. Известно, что событие вызывает эффект дребезга переключателя, который исчезает через 20мс. В системе для синхронизации доступны прерывания в фиксированные 10мс интервалы. События вызываются внешним устройством, которое устанавливает размещение области памяти посредством DMA.

Код на Си:

for(;;){

if(flag){

pause(20);

process_event();

flag=0;

}

}

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

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

Циклические опросы по существу впустую тратят процессорное время, особенно если события опроса происходят редко.

Циклические исполняющие системы (супервизоры, организующие и управляющие программы)

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

for(;;){

Process_1();

Process_2();

Process_N();

}

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

for(;;){

Process_1();

Process_2();

Process_3();

Process_3();

}

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

for(;;){

check_for_keypressed();

move_aliens();

check_for_keypressed();

check_for_collision();

check_for_keypressed();

update_screen();

}

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

ДОРАБОТАТЬ ДОМА