|
Часть VI
6.2. Стандартизованные профили систем реального времени
Приложения, связанные с управлением процессами, протекающими в реальном времени, так называемые системы или приложения реального времени (realtime applications), могут существенно отличаться друг от друга характеристиками и требованиями.
Для систем реального времени в стандартах POSIX определяется четыре профиля, соответствующие четырем типам систем реального времени различной функциональности, начиная от простых встроенных систем с минимальными возможностями и, кончая многоцелевыми вычислительными системами с расширенными возможностями, которые применяются, например, в контурах управления крупными военными комплексами, сложными технологическими процессами и т.п.
Стандартизованными POSIX-профилями реального времени являются:
- профиль минимальных (встроенных) систем реального времени (Minimal (Embedded) Realtime System Profile) - PSE51;
- профиль систем-контроллеров реального времени (Realtime Controller System Profile) - PSE52;
- профиль выделенных систем реального времени (Dedicated Realtime System Profile) - PSE53;
- профиль многоцелевых систем реального времени (Multi-Purpose Realtime System Profile) - PSE54.
Все указанные выше стандартизованные POSIX-профили реального времени определены в одном документе "P1003.13, Draft Standards for Information technology - Standardized Application Environment Profile - POSIX Realtime Application Support (AEP)", который сокращенно называется "POSIX\RT-AEP" или "POSIX.13". Данный документ был принят в 1998 г. ISO в качестве международного стандартизованного профиля [4].
Познакомимся с этим документом подробнее.
С методологической точки зрения POSIX\RT-AEP представляет значительный интерес. Основные черты и достоинства POSIX\RT-AEP состоят в следующем:
- POSIX\RT-AEP непосредственно адресован и легко доступен разработчикам платформ и приложений реального времени.
- Представленная в POSIX\RT-AEP методология профилирования и базовая функциональная инфраструктура (система стандартов POSIX) представляют собой реальную основу для успешного решения проблемы переносимости, переиспользуемости, сопровождаемости приложений реального времени (что особенно важно для систем с длительным циклом эксплуатации).
- В POSIX\RT-AEP определены типы профилей, охватывающие широкий спектр требований к системам реального времени, что придает данному документу большую степень универсальности.
- Для разработчиков масштабных многоуровневых управляющих систем реального времени (таких, как, например, систем ПВО, ПРО, управления движением авиа судов) документ POSIX\RT-AEP обеспечивает целостную систему совместимых снизу-вверх методических решений построения компонент таких систем на всех уровнях иерархии (начиная от простых встроенных систем и кончая мощными центрами принятия управляющих решений высоко уровня).
- POSIX\RT-AEP специфицирует интерфейсы систем, абстрагируясь от способов их реализации, что поддерживает возможность построения и развитие систем на принципах гетерогенности, т.е. с использованием компонентов, поставляемых различными производителями.
- POSIX\RT-AEP предусматривает реализацию сервисов интерфейсов систем реального времени посредством спецификаций языкового связывания как для языка С, так и для языка Ada.
- POSIX\RT-AEP обеспечивает критерий и методологию измерения степени конформности реальных систем стандартам программных интерфейсов POSIX, при этом в основе данного критерия лежит требование функционального соответствия используемым в профиле средствам базовых стандартов, а также ограничениям и опциям, определяемым в рассматриваемом профиле.
Документ POSIX\RT-AEP по способу организации напоминает многочастевые профили ISO (см. раздел 3, ISO/EIC 10000). Однако в системе POSIX понятие многочастевого профиля не вводится.
Профиль POSIX\RT-AEP начинается с описания общей информации для всех профилей реального времени, включая общие нормативные ссылки.
Список нормативных ссылок (раздел 2) определяет функциональное пространство, из которого и выбираются подмножества функций и опций, соответствующие конкретным профилям. В POSIX\RT-AEP включены следующие стандарты (представленные ниже для лучшей обозримости в сокращенном виде):
Std. C /стандарт языка С/ [5]
Std. Ada /стандарт языка Ada/ [6]
POSIX 1 (POSIX.1) /базовые интерфейсы ОС/ [7]
POSIX 2 /команды shell и утилиты/ [8]
POSIX 4 (POSIX.1b) /расширения реального времени/ [9, 10, 11]
POSIX 4a (POSIX.1c) /расширения нитей для реального времени/ [12]
POSIX 5 /базовые интерфейсы ОС, связывание для языка Ада/ [13]
POSIX 5b /связывание для языка Ада, реальное время/ [14]
POSIX 12 /протоколо-независимые сетевые спецификации/ [15]
В общей части профиля POSIX\RT-AEP (раздел 1) также выполняется некоторая подготовительная работа по структуризации функциональности базовых спецификаций, что необходимо для удобства осуществления процедуры выбора необходимых для конкретных профилей наборов функций и опций. Это вызвано тем, что в качестве нормативных ссылок в профиле POSIX\RT-AEP используются документы, разработанные в первой половине 90-х годов, в которых еще не применялся рассмотренный в предыдущем разделе аппарат символьных констант, позволяющий легко конфигурировать наборы функций, определенных в стандартах POSIX. Из перечисленных выше нормативных базовых спецификаций профиля POSIX\RT-AEP аппарат символьных констант применяется только в спецификациях POSIX 4.
Структуризации функциональности базовых спецификаций выполняется посредством определения так называемых модулей функциональности (Units of Functionality), которые обозначаются одноименными символьными константами. Модули функциональности определяются в табличной форме. Для языка С модули функциональности определяются как наборы функций, для языка Ada модули функциональности строятся из пакетов и наборов используемых в них подпрограмм. Всего определяется семнадцать таких таблиц, первые четыре из которых относятся к интерфейсу, связанному с языком С, а остальные описывают интерфейс в терминах языка Ada. С целью иллюстрации данного метода рассмотрим ниже первые четыре таблицы (см. Таблицы 6.2-6.5).
Таблица 6.2 - Модули функциональности POSIX.1 (1990)
Модуль функциональности (Unit of Functionality) |
Функции модуля функциональности (Included Functions) |
POSIX_SINGLE_PROCESS |
sysconf(), time(), uname() |
POSIX_MULTIPLE_PROCESS |
exit(), execle(), execlp(), execv(), execve(), execvp(), fork (), getenv(), getpid(), getppid(), sleep(), times(), wait(), waitpid() |
POSIX_JOB_CONTROL |
setpgid(), tcgetpgrp(), tcsetpgrp() |
POSIX_SIGNALS |
alarm(), kill(), pause(), sigaction(), sigaddset(), sigdelset(), sigemptyset(), sigfillset(), sigismember(), sigpending(), sigprocmask(), sigsuspend() |
POSIX_USER_GROUPS |
geteuid(), getegid(), getgid(), getgroups(), getlogin(), getpgrp(), getuid(), setgid(), setsid(), setuid() |
POSIX_FILE_SYSTEM |
access(), chdir(), closedir(), creat(), fpathconf(), fstat(), getcwd(), link(), mkdir(), opendir(), pathconf(), readdir(), rename(), rewinddir(), rmdir(), stat(), unlink(), utime() |
POSIX_FILE_ATTRIBUTES |
chmod(), chown(), umask() |
POSIX_FD_MGMT |
dup(), dup2(), fcntl(), lseek() |
POSIX_DEVICE_IO |
open(), close(), read(), ungetc(), write() |
POSIX_DEVICE_SPECIFIC |
cfgetiospeed(), cfgetospeed(), cfsetispeed(), cfsetospeed(), ctermid(), isatty(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(), tcflow(), ttyname() |
POSIX_SYSTEM_DATABASE |
getgrgid(), getgrnam(), getpwnam(), getpwuid() |
POSIX_PIPE |
pipe() |
POSIX_FIFO |
mkfifo() |
POSIX_C_LANG_SUPPORT |
См. таблицу 6.5 |
Таблица 6.3 - Модули функциональности поддержки стандарта языка С (1990)
Модуль функциональности (Unit of Functionality) |
Функции модуля функциональности (Included Functions) |
POSIX_DEVICE_IO |
clearerr(), getc(), getchar(), gets(), fclose(), fdopen(), feof(), ferror(), fflush (), fgetc(), fgets(), fileno(), fopen(), fprintf(), fputc(), fputs(), fread(), freopen(), fscanf(), fwrite(),open(), perror(), printf(), putc(), putchar(), puts(), read(), sprintf(), scanf(), sscanf(), setbuf(), ungetc() |
POSIX_FILE_SYSTEM |
remove(), rename(), tmpfile(), tmpnam() |
POSIX_FD_MGMT |
fseek(), ftell(), rewind() |
POSIX_MULTIPLE_PROCESS |
assert(), exit(), setlocale() |
POSIX_SIGNALS |
abort(), sigsetjmp(), siglongjmp() |
Таблица 6.4 - Модуль функциональности POSIX.1c (1990)
Модуль функциональности (Unit of Functionality) |
Функции модуля функциональности (Included Functions) |
POSIX_USER_GROUPS_R |
getlogin_r() |
POSIX_DEVICE_SPECIFIC |
ttyname() |
POSIX_FILE_LOCKING |
flockfile(), ftrylockfile(), funlockfile(), getc_unlocked(), getchar_unlocked(), putc_unlocked(), putchar_unlocked() |
POSIX_C_LANG_SUPPORT_R |
asctime_r(), ctime_r(), gmtime_r(), localtime_r(), readdir_r(), rand_r(), strtok_r() |
POSIX_SYSTEM_DATABASE_R |
getgrgid_r(), getgrnam_r(), getpwuid_r(), getpwnam_r() |
Таблица 6.5 - Модуль функциональности POSIX_C_LANG_SUPPORT
Модуль функциональности (Unit of Functionality) |
Функции модуля функциональности (Included Functions) |
Character Handling |
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper() |
Mathematics |
acos(), asin(), atan(), atan2(), ceil(), cos(), cosh(), exp(), fabs(), floor(), fmod(), frexp(), idexp(), log(), log10(), modf(), pow(), qsort(), tan(), tanh() |
Non-Local Jumps |
longjmp(), setjmp() |
General Utilities |
abs(), atof(), atoi(), atol(), bsearch(), calloc(), free(), malloc(), qsort(), rand(), realloc(), srand() |
String Handling |
strcat(), strchr(), strcmp(), strcpy(), strcspn(), strlen(), strncat(), strncmp(), strncpy(), strpbkr(), strrchr(), strspn(), strstr(), strtok() |
Date and Time |
asctime(), ctime(), gmtime(), localtime() , gmtime(), mktime(), strftime(), time(), tzset() |
В разделе 3 профиля POSIX\RT-AEP вводятся дополнительные определения, в частности, определения некоторых специальных типов профилей (Generic Application Environment Profile, Generic Profile, Generic Interface Profile, Industry Specific Application Environment Profile, Industry Specific Interface Profile, Interface Profile, Realtime Environment Profile, System Profile). Однако эти определения не применяются в дальнейшем при описании профилей реального времени. Поэтому оставим здесь их без внимания. В разделе 4 определены соглашения и сокращения, используемые в рассматриваемом документе. В разделе 5 рассмотрены критерии конформности реализаций профилям реального времени. В разделах с 6 по 9 собственно и описывается функциональность профилей PSE51, PSE52, PSE53, PSE54. Рассмотрим разделы с 5 по 9 подробнее.
|