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

8. Теоретические основы операционных систем реального времени. Основные понятия и определения.

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

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

- Неактивный (ожидание). Задача создана и инициализирована, однако не готова для выполнения. Т.е. в этом состоянии процесс не имеет права на выполнение.

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

- Выполнение. В этом состоянии выполняются команды процесса.

- Отложенный (заблокированный). Состояние в котором процессы ждут конкретного ресурса и не готовы к выполнению.

- Завершенный. Процесс завершил выполнение, либо прервал себя сам, либо в нем нет больше необходимости.

Аналогичные процессам потоки в любой момент времени могут быть только в одном их приведенных выше состояний.

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

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

8. Операционные системы реального времени (ос рв). Роль ядер и псевдоядер в операционных системах.

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

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

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

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

ОС

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

интерфейса

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

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

Ядро

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

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

Микроядро

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

Наноядро

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

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

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

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

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

Псевдоядра

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

9.

ОС РВ. Циклический опрос. Фрагмент программы реализации на языке Си. Описание функционирования.

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

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

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

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

for(;;){

if(packet here){

process data();

packet here=0;

}

}

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

10, 11.

ОС РВ. Синхронизированный циклический опрос. «Дребезг» ключа и способы его устранения.

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

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

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

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

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

Код на Си:

for(;;){

if(flag){

pause(20);

process_event();

flag=0;

}

}

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

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

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

12.

ОС РВ. Циклические исполняющие системы. Фрагменты их программой реализации, описание функционирования.

Циклические исполняемые системы являются ситемами не управляемыми прерываниями, обеспечивающими иллюзию одновременного выполнения задач в постоянном цикле за счет исп. преимущества относительно быстрой обработки скоростных процессоров. Рассмотрим, например, набор независимо замкнутых процессов от 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 раза чаще чем другие, для того чтобы обеспечить более быструю реакцию на ввод пользователя.

13.

ОС РВ. Код, управляемый переменными состояния.

В коде, управляемом переменными состояния системы, для прекращения обработки функций в сегментах кода использует такие вложенные операторы как if-then, case либо состояния конечного автомата. Разделение процессов позволяет каждому из них перед завершением быть приостановленным без потери важных данных. Это, в свою очередь, способствует многозадачности посредством таких структур, как сопрограммы, которые коротко будут рассмотрены позже. Код, управляемый переменными состояния системы хорошо работает в сочетании с циклическими исполняющими системами,когда процессы являются слишком длинными во времени либо неравномерными по размеру. Наконец, поскольку существуют математические средства для уменьшения количества состояний, программы, основанные на теории конечных автоматов, могут быть формально оптимизированы. Многие теории по конечным автоматам могут быть использовано для разработки системных спецификаций.

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

14.

ОС РВ. Сопрограммы. Фрагмент программы, реализованной на языке Си, описание функционирования.

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

Взаимосвязь между системами достигается посредством глобальных переменных. Любые данные, которые необходимо сохранить между процессами передачи, должны быть помещены в глобальные переменные. Рассмотрим некоторую систему, в которой два процесса выполняются «параллельно» и изолированно. После выполнения phaseal, processa возвращает управление центральному диспетчеру выполняя команду break. Диспетчер инициализирует processb, который выполняет до конца phasebl перед возвратом управления диспетчеру. Затем диспетчер запускает processa, который начинает phase_a2 и так далее. Код на языке Си для processa и processb представлен ниже:

void process_a(void)

{

for (;;)

{

switch(state_a)

{

case 1: phase_a1();

break;

case 2: phase_a2();

break;

case 3: phase_a3();

break;

case 4: phase_a4();

break;

case 5: phase_a5();

break;

}

}

}

void process_b(void)

{

for (;;)

{

switch(state_b)

{

case 1: phase_bl();

break;

case 2: phase_b2();

break;

case 3: phase_b3();

break;

case 4: phase_b4();

break;

case 5: phase_b5 () ;

break;

} } }

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

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

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