Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРВ(1) ФИНАЛ Правильный!!!!!!.doc
Скачиваний:
29
Добавлен:
09.11.2019
Размер:
844.8 Кб
Скачать
  1. Ядро операционной системы реального времени.

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

В ядре реального времени DSP/BIOS реализована единая сквозная система динамического и

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

традиционным распределением памяти командным файлом.

Во-первых – все статическое распределение памяти сведено в единую систему. Это дает как

возможность удобного графического конфигурирования, так и легкость оценки занимаемого объема.

Причем, поскольку в той же утилите конфигурации сведены и все настройки параметров средств

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

канала, и оценивается необходимый для них объем.

При использовании централизованного распределения памяти в программе указываются логические

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

результата производится при помощи утилиты конфигурации, которая имеет и информацию о

стандартных картах памяти поддерживаемого типа ЦСП и введенную разработчиком информацию о дополнительной памяти. Такой подход минимизирует ошибки распределения и позволяет легко переносить приложение на другую аппаратную платформу. Еще одним, достаточно радикальным, нововведением DSP/BIOS II является система динамического распределения памяти, которая практически является элементом полноценной операционной системы реального времени. Наличие такой системы позволяет существенно улучшить “КПД” использования памяти под временные буфера, особенно в системах со сложной обработкой и большим объемом ОЗУ12.

Основные службы ядра ос.

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

Рис.9 Устройство ядра ОСРВ

Единая модель аппаратно-независимого ввода-вывода.

Базовым процессом практически во всех ЦОС приложениях является работа данных – получение

данных, произведение какой-либо обработки и вывод результатов. Характерной особенностью

является то, что как правило работа идет с непрерывными потоками данных. Потоки данных

разделяются на блоки, а не на отдельные единичные данные. Таким образом, приложение получает

непрерывный поток блоков данных, обрабатывает их и выдает результат также как правило в виде

непрерывного потока блоков данных. Еще одной особенностью является то, что направление потока

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

Возможно наличие множества потоков, идущих с разными скоростями в разных направлениях

блоки данных которых надо обрабатывать асинхронно. Количество кадров данных в потоке также

может быть различно и обычно больше одного, то есть пока ЦСП обрабатывает один кадр данных

конечное устройство заполняет следующий. Как и в других случаях, потоки в DSP/BIOS делятся на два класса: базовые, менее функциональные, но требующие минимальных дополнительных затрат - каналы (pipe)и более универсальные потоки (stream), имеющие большую функциональность, но и требующие большего объема кода для обработки. Оба механизма используют механизм передачи через обмен указателями буферов, что позволяет передавать потоки без какого либо копирования данных. С учетом того, что заполнение буферов производится устройством через каналы ПДП, можно сказать, что в передачи данных модели DSP/BIOS сведены к минимуму не только операции копирования, но и все операции, которые нагружают вычислительное ядро ЦСП.

3.Механизмы синхронизации и взаимодействия процессов.

Рассмотрим три механизма организации взаимного исключения для синхронизации доступа к разделяемым ресурсам:

  • Семафоры Дейкстры

  • Мониторы Хоара

  • Обмен сообщениями

и обсудим достоинства, недостатки и области применения этих подходов.

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

  • Down ( S ) (или P ( S ))‏

  • Up ( S ) (или V ( S ))‏

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

Чтобы прояснить смысл использования семафоров для синхронизации, можно привести простую аналогию из повседневной жизни. Представим себе супермаркет, посетители которого, прежде чем войти в торговый зал, должны обязательно взять себе инвентарную тележку. В момент открытия магазина на входе имеется N свободных тележек – это начальное значение семафора. Каждый посетитель забирает одну из тележек (уменьшая тем самым количество оставшихся на 1) и проходит в торговый зал – это аналог операции down. При выходе посетитель возвращает тележку на место, увеличивая количество тележек на 1 – это аналог операции up. Теперь представим себе, что очередной посетитель обнаруживает, что свободных тележек нет – он вынужден блокироваться на входе в ожидании появления тележки. Когда один из посетителей, находящихся в торговом зале, покидает его, посетитель, ожидающий тележку, разблокируется, забирает тележку и проходит в зал. Таким образом, наш семафор в виде тележек позволяет находиться в торговом зале (аналоге критической секции) не более чем N посетителям одновременно. Положив N = 1, получим реализацию взаимного исключения. Семафор, начальное (и максимальное) значение которого равно 1, называется двоичным семафором (так как имеет только 2 состояния: 0 и 1). Использование двоичного семафора для организации взаимного исключения. Семафоры представляют собой мощное средство синхронизации, однако программирование с использованием семафоров является достаточно тяжелой задачей, причем незаметная на первый взгляд логическая ошибка может привести к образованию тупиковых ситуаций или нарушению условий синхронизации.

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

Идея монитора была впервые сформулирована в 1974 г. Хоаром. В отличие от других средств, монитор представляет собой языковую конструкцию, т.е. некоторое средство, предоставляемое языком программирования и поддерживаемое компиляторомМонитор представляет собой совокупность процедур и структур данных, объединенных в программный модуль специального типа.

Постулируются три основных свойства монитора:

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

  2. Процесс «входит» в монитор путем вызова одной из его процедур

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

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