Автор работы: Пользователь скрыл имя, 11 Января 2012 в 11:36, реферат
ОС РВ предназначена для разработки программного обеспечения для систем (программно-аппаратных комплексов), работающих в режиме жесткого реального времени.
Разработка ОС РВ базируется на следующих принципах:
• соответствие международным стандартам,
• мобильность,
• масштабируемость (конфигурируемость),
• использование концепции микроядра,
• использование объектно-ориентированного подхода,
• кросс-разработка.
Изменять характеристики аппаратных часов, например, изменять их разрешение (программировать часы), можно в процессе инициализации системы, если это позволяет аппаратура.
Таймеры
Программные
таймеры позволяют
Установка и запуск таймера производится функцией timer_settime(). Эта функция определяет время первого срабатывания таймера, а также период срабатывания (если требуется периодическое срабатывание таймера).
Если для оповещения о срабатывании таймера используется сигнал, то при повторном срабатывании таймера сигнал не будет послан, если предыдущий сигнал не был обработан. С помощью функции timer_getoverrun() можно получить количество срабатываний таймера, произошедших между моментом генерирования сигнала (постановки в очередь) и моментом доставки или приема.
Дополнительные возможности
Функции nanosleep() и sleep() позволяют приостановить текущий поток управления, либо на указанный интервал времени, либо до поступления сигнала.
Функция nanosleep()является более точной, чем функция sleep(). Функция sleep() позволяет указывать время только с точностью до секунды, тогда как nanosleep() работает с точностью, которая обеспечивается разрешающей способностью часов.
Как известно, земной шар разделен на часовые пояса, в каждом из которых действует свое поясное время. Местное время (время, используемое в данной местности) может отличаться от поясного. На летний период во многих государствах, как правило, часы переводятся на 1 ч вперед (т. н. летнее время).
Если
компьютер взаимодействует с
другими компьютерами, которые находятся
в других часовых поясах и используют
другое местное время, то вместо местного
времени удобно использовать общее
для разных часовых поясов время.
В качестве такого времени используется
всемирное или мировое время -
среднее солнечное время
Местное (локальное) время описывается разницей с UTC. Эта разница может меняться в зависимости от времени года в связи с переходом на летнее время.
Для системных часов (CLOCK_REALTIME) следует использовать всемирное время (UTC). Это позволит не переустанавливать системные часы при переходе на летнее время и обратно, при смене часовых поясов, а также позволит избежать трудностей при взаимодействии с компьютерами, находящимися в других часовых поясах. ОС содержит набор функций, позволяющих преобразовывать местное время в мировое (UTC) и обратно.
Операции ввода/вывода
Базовые
операции ввода/вывода, а также асинхронный
ввод/вывод реализованы в
Потоки ввода/вывода и форматированный ввод/вывод реализован в соответствии со стандартом С.
Устройства и файлы
Устройства и файлы являются основными понятиями системы ввода/вывода. Устройства делятся на физические (например, последовательный и параллельный порт, диск) и логические (например, программные каналы, сокеты).
Для ввода (чтения) информации из устройства и вывода ее в устройство используется понятие файла. Одним устройствам (например, последовательному порту) соответствует один файл, другим (например, диску) - несколько файлов. Файлы, соответствующие устройствам первого типа, называются специальными файлами.
Устройства
с прямым доступом (диски, флэш-память,
оперативная память) могут содержать
несколько файлов, каждый из которых
рассматривается как
Программный канал представляет собой логическое устройство, предназначенное для передачи данных между потоками управления. Данные, записанные в программный канал, считываются оттуда в порядке поступления (First-In-First-Out, первым записан - первым прочитан). Существует 2 типа программных каналов: именованные и неименованные. Первым соответствуют файлы типа FIFO, вторым - файлы типа PIPE.
Базовые операции ввода и вывода
Для выполнения базовых операций предназначены следующие функции:
close() | закрытие файла, | |
creat() | создание файла, | |
dup(), dup2() | дублирование дескриптора файла, | |
fcntl(), ioctl() | управление файлом, | |
lseek() | позиционирование файла, | |
open() | открытие файла, | |
read() | чтение файла, | |
write() | запись в файл. |
Перед использованием файла его необходимо открыть. При открытии файла создается описание файла и дескриптор файла, который ссылается на описание файла. Дескриптор файла используется в качестве аргумента другими функциями ввода/вывода при обращении к данному файлу. Для открытия файла предназначена функция open().
Описатель файла содержит также текущую позицию (точку) в файле, которая измеряется в байтах относительно начала файла. Она указывает, к какой части файла будет относиться следующая операция read() или write().
После
открытия текущая позиция
Непредусмотренная стандартом POSIX функция ioctl() позволяет использовать особенности аппаратуры.
Асинхронные операции ввода и вывода
Для выполнения
асинхронных операций ввода/вывода
предназначены следующие
aio_read() | асинхронное чтение; | |
aio_write() | асинхронная запись; | |
lio_listio() | запуск операций асинхронного ввода/вывода по списку. | |
aio_suspend() | ожидание завершения операции асинхронного ввода/вывода; | |
aio_error() | опрос кода ошибки асинхронной операции ввода/вывода; | |
aio_return() | опрос кода возврата асинхронной операции ввода/вывода; | |
aio_cancel() | отмена запроса на асинхронный ввод/вывод; | |
aio_fsync() | асинхронная операция синхронизации файла (обеспечение целостности файла или данных); |
Функций read() или write() приостанавливают выполнение потока управления до завершения операции. Асинхронные операции ввода/вывода (aio_read(), aio_write(), lio_listio()) позволяют продолжить выполнение потока управления "параллельно" с операцией ввода/вывода.
Заявки на ввод/вывод обслуживаются в соответствии с ее приоритетом. Этот приоритет не может быть выше, чем приоритет потока подавшего заявку (но может быть меньше его).
Заявка на ввод/вывод может содержать способ уведомления о завершении операции ввода/вывода (например, послать сигнал или выполнить указанную функцию).
Целостность файлов и данных
С целью
повышения эффективности в
Для решения этой проблемы прикладная программа может либо потребовать обеспечения целостности данных или файла при выполнении каждой операции ввода/вывода, либо время от времени вызывать одну из функций: fsync(), fdatasync() или aio_fsync(), которые обеспечиваю целостность данных или файла.
Операция записи обеспечивает целостность данных по завершению операции, если операция завершается лишь тогда, когда выводимые данные перемещаются из буфера на устройство (вместе с управляющей информацией о данном файле, необходимой для последующего чтения этих данных). Информация о файле, которая не требуется для чтения, может быть выведена на устройство позже (например, дата и время последнего изменения файла).
Операция записи обеспечивает целостность файла по завершению операции, если операция завершается лишь тогда, когда выводимые данные перемещаются из буфера на устройство, и, кроме того, на устройство выводится вся управляющая информация о файле, связанная с выводимыми данными.
Операция чтения обеспечивает целостность данных (файла) по завершению операции, если до выполнения этой операции будут выполнены с обеспечением целостности данных (файла) все ранее принятые к исполнению операции записи, которые влияют на читаемые данные.
Файловые системы
Дерево каталогов
Каталоги позволяют структурировать совокупность файлов, доступ к которым обеспечивается операционной системой. Каталог представляет собой список файлов и/или других каталогов. Иначе говоря, каталог может содержать как файлы, так и каталоги.
Каждый каталог, кроме корневого, содержится в каком-то другом каталоге. Таким образом, файлы и каталоги образуют древовидную структуру, корнем которой является корневой каталог. Находящиеся в одном каталоге файлы и каталоги имеют уникальные имена. Длина имени файла или каталога ограничена {NAME_MAX} символами.
Находящиеся в разных каталогах файлы и каталоги могут иметь одинаковые имена. В силу этого для идентификации файлов и каталогов используются полные или маршрутные (pathname) имена.
Маршрутное имя представляет собой последовательность имен каталогов или файлов, разделенных символом "/". Все имена кроме последнего должны быть именами каталогов. Маршрутное имя файла должно заканчиваться именем этого файла, маршрутное имя каталога - именем этого каталога. Если последним идет имя каталога, то после него может быть один или несколько символов "/" (несколько символов "/" эквивалентно одному символу "/").
Типы файловых систем
Операционная система может обеспечивать доступ к одной или нескольким файловым системам. Каждая файловая система содержит файлы и каталоги, образующие древовидную структуру. Корневая файловая система присутствует всегда. Доступ к другим файловым системам обеспечивается при условии их установки (монтирования).
Корневая файловая система содержит корневой каталог, а также каталог /dev, который содержит все специальные файлы. При монтировании корневой каталог файловой системы помещается в корневой каталог корневой файловой системы (иначе говоря, точка монтирования всегда находится в корневом каталоге).
При конфигурировании
операционной системы можно указать
файловые системы, которые нужно
установить. Эти файловые системы
будут установлены при
Файловые системы делятся на локальные и удаленные. Локальные файловые системы обеспечивают доступ к файлам, находящимся на данном компьютере. Удаленные файловые системы обеспечивают доступ к файлам, находящимся на другом компьютере (плате).