Вредоносное ПО (malware) - это назойливые или опасные программы,...
![Лучшие утилиты для удаления вирусов и вредоносных программ](https://i2.wp.com/webhelper.info/images/danger.jpg)
В курсе рассматривается стандарт на мобильный интерфейс операционной системы (POSIX), а также приемы и методы программирования приложений на основе данного стандарта, поясняемые многочисленными примерами. Затрагиваются вопросы программирования многопроцессных систем, взаимодействия приложений в рамках распределенных конфигураций. Обеспечение мобильности (переносимости, портабельности) программного обеспечения (ПО) - задача исключительной важности и сложности; в наше время это обстоятельство едва ли нуждается в пространных обоснованиях Один из общепринятых способов повышения мобильности ПО - стандартизация окружения приложений: предоставляемых программных интерфейсов, утилит и т.п. На уровне системных сервисов подобное окружение описывает стандарт POSIX (Portable Operating System Interface - мобильный интерфейс операционной системы); название предложил известный специалист, основатель Фонда свободного программного обеспечения Ричард Столмэн.
В курсе рассматривается наиболее современная его версия в редакции 2003 г., которую можно назвать "стандартом втройне", а именно: стандартом IEEE Std 1003.1, Техническим стандартом Open Group и, что для нас важнее всего, международным стандартом ISO/IEC 9945. Основная задача настоящего курса состоит в осмыслении приемов и методов использования стандартизованных служебных программ и функций. Не ставилась цель пересказать стандарт, осветив все тонкости реализации ОС, все возможные коды ошибок и т.п. Главное, на наш взгляд, -прочувствовать дух стандарта, научиться мобильным образом применять заложенные в нем возможности. В предположении, что читатель владеет языком С, мы не рассматривали ни его синтаксис, ни хрестоматийные библиотечные функции. Что же касается стандартного командного языка и его интерпретатора, то эта тема изложена довольно подробно, хотя многие практикующие программисты предпочитают пользоваться другими интерпретаторами. Значительное место - и по объему, и по роли - отведено примерам программ. Многие положения стандарта (связанные, скажем, с обработкой ошибочных ситуаций) излагаются не в основном тексте, а в соответствующих примерах Последние по возможности компилировались и выполнялись на нескольких аппаратно-программных платформах, в той или иной степени претендующих на соответствие стандарту POSIX. Тем не менее, недосмотры, конечно, возможны. Мы будем признательны за все замечания и предложения, относящиеся как к курсу в целом, так и к отдельным примерам программ.
История создания и текущий статус стандарта POSIX.
Обеспечение мобильности (переносимости, портабельности) программного обеспечения (ПО) - задача исключительной важности и сложности; в наше время это обстоятельство едва ли нуждается в пространных обоснованиях. Один из общепринятых способов повышения мобильности ПО - стандартизация окружения приложений: предоставляемых программных интерфейсов, утилит и т.п. На уровне системных сервисов подобное окружение описывает стандарт POSIX (Portable Operating System Interface - мобильный интерфейс операционной системы); название предложено известным специалистом, основателем Фонда свободного программного обеспечения Ричардом Столмэном.
Титульная страница.
Выходные данные.
Лекция 1. Основные понятия и идеи стандарта POSIX.
Лекция 2. Язык shell.
Лекция 3. Утилиты и функции, обслуживающие понятие "пользователь".
Лекция 4. Организация файловой системы.
Лекция 5. Файловый ввод/вывод.
Лекция 6. Средства обработки структурированных данных.
Лекция 7. Процессы.
Лекция 8. Средства межпроцессного взаимодействия.
Лекция 9. Общий терминальный интерфейс.
Лекция 10. Опрос характеристик хостов и их использование в приложениях.
Лекция 11. Сетевые средства.
Лекция 12. Время и работа с ним.
Лекция 13. Языково-культурная среда.
Лекция 14. Заключение.
Список литературы.
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Программирование в стандарте POSIX, часть 1, Галатенко В.А., 2016 - fileskachat.com, быстрое и бесплатное скачивание.
$ getconf _POSIX_VERSION 199506 $ getconf POSIX2_C_DEV 1 $ getconf _XOPEN_REALTIME 1 $ getconf _POSIX_TRACE undefined Листинг 1.1. Результат применения утилиты getconf к одной из версий ОС Linux.
Это значит, что поддерживается устаревшая версия стандарта POSIX, среди прочих присутствуют средства разработки и возможности реального времени; средства трассировки отсутствуют. В документации на ОС должны быть отражены вопросы соответствия стандарту POSIX, описаны поддерживаемые дополнительные и нестандартные возможности. Для приложений понятие соответствия стандарту POSIX богаче нюансами. Предусмотрено строгое соответствие , главный отличительный признак которого - ограничение круга используемых возможностей рамками стандарта. Рассматривается и соответствие с применением расширений; в этом случае документация на приложение должна содержать описание требуемых нестандартных возможностей. Желательно, чтобы используемые расширения POSIX-возможностей описывались международными и/или национальными стандартами. (Отметим, что для реализации понятие строгого POSIX-соответствия бессмысленно хотя бы по той причине, что не бывает операционных систем без средств администрирования, а они не описываются данным стандартом.) Профилем будем называть набор опций, описывающих необязательные возможности. Соответствие профилю означает соответствие стандарту POSIX и поддержку заданных возможностей. Разумным образом выбранные профили позволяют учитывать потребности представительных классов пользователей и/или приложений. Допускается существование "подпрофилей ", описывающих подмножества стандартных возможностей. Реализация, соответствующая подпрофилю, может функционировать на аппаратных платформах с ограниченными ресурсами и/или обслуживать нужды специфических приложений. К числу важнейших принадлежат понятия, описывающие поведение реализации в различных ситуациях. Для многих корректных ситуаций поведение бывает неспецифицированным, а значит, мобильное приложение не должно полагаться на совпадение поведения разных реализаций. Для некорректных ситуаций поведение может быть неопределенным; приложению не только не следует полагаться на определенный характер подобного поведения - оно не должно совершать некорректных действий, вызывающих неопределенное поведение . Еще один близкий термин, "поведение, зависящее от реализации ", дополнительно означает, что поведение реализации необходимо документировать. Стандарт POSIX - это существующий много лет, развивающийся организм, в котором с каждой новой редакцией что-то появляется, а что-то утрачивается. Устаревшими называются возможности, которые еще поддерживаются различными реализациями, но в будущем они, вероятно, отомрут. Новые приложения не должны их использовать; для каждой из них стандартом предусмотрена адекватная по функциональности современная замена. Более ограниченный смысл придан термину "унаследованный ": он описывает устаревшие необязательные возможности, которых, разумеется, следует избегать в новых приложениях.
#if defined(_REENTRANT) || (_POSIX_C_SOURCE - 0 >= 199506L) #define LIBXML_THREAD_ENABLED#endif Листинг 1.2. Пример использования макроса проверки возможностей _POSIX_C_SOURCE.
Стандартом POSIX предусмотрены некоторые меры для решения важной и трудной проблемы (вызванной в первую очередь необъектным характером языка C), заключающейся в отсутствии пересечений по именам между приложением и операционной системой. Префиксы posix_
, POSIX_
и _POSIX_
зарезервированы для нужд стандарта.
С подчеркивания, за которым следует еще одно подчеркивание или заглавная латинская буква, могут начинаться только системные (но не прикладные) имена. Для включаемых файлов описаны префиксы
используемых в них имен. Например, для операций управления файлами, фигурирующих в
Большие различия в спецификациях ОСРВ и огромное количество существующих микроконтроллеров выдвигают на передний план проблему стандартизации в области систем реального времени.
Наиболее ранним и распространенным стандартом ОСРВ является стандарт POSIX (IEEE Portable Operating System Interface for Computer Environments, IEEE 1003.1). Первоначальный вариант стандарта POSIX появился в 1990 г. и был предназначен для UNIX-систем, первые версии которых появились в 70-х годах прошлого века. Спецификации POSIX определяют стандартный механизм взаимодействия прикладной программы и операционной системы и в настоящее время включают набор более чем из 30 стандартов. Для ОСРВ наиболее важны семь из них (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21, 1003.2h), но широкую поддержку в коммерческих ОС получили только три первых.
Несмотря на явно устаревшие положения стандарта POSIX и большую востребованность обновлений стандартизации для ОСРВ, заметного продвижения в этом направлении не наблюдается.
Стандарт POSIX был создан как стандартный интерфейс сервисов операционных систем. Этот стандарт дает возможность создавать переносимые приложения. Впоследствии этот стандарт был расширен особенностями режима реального времени.
Спецификации POSIX задают стандартный механизм взаимодействия приложения и ОС. Необходимо отметить, что стандарт POSIX тесно связан с ОС Unix, тем не менее, разработчики многих ОСРВ стараются выдержать соответствие этому стандарту.
Соответствие стандарту POSIX для ОС и аппаратной платформы должно быть сертифицировано с помощью прогона на них тестовых наборов. Однако, если ОС не является Unix-подобной, выдержать это требование становится непростой задачей. Тестовые наборы существуют только для POSIX 1003.1a. Поскольку структура POSIX является совокупностью необязательных возможностей, поставщики ОС могут реализовать только часть стандартного интерфейса, и при этом говорить о POSIX-комплиантности своей системы.
Несмотря на то, что стандарт POSIX вырос из Unix"а, он затрагивает основополагающие абстракции операционных систем, а расширения реального времени применимы ко всем ОСРВ.
Стандарт POSIX в редакции 2003-го года - весьма обширный, многогранный документ, где подробно рассматриваются следующие категории системных компонентов:
средства разработки;
сетевые средства;
средства реального времени;
потоки управления;
математические интерфейсы;
пакетные сервисы;
заголовочные файлы;
унаследованные интерфейсы.
Именно такой (на верхнем уровне, далеко не полный) репертуар должна предоставлять операционная система для работы приложения.
Важнейшим является понятие соответствия стандарту POSIX. Мы уже отмечали, что всякий интерфейс располагает двумя сторонами: вызывающей и вызываемой. Две стороны есть и у POSIX-соответствия: соответствие реализации (операционной системы) и приложения.
Реализация (операционная система), соответствующая стандарту POSIX, должна поддерживать все обязательные служебные программы, функции, заголовочные файлы с обеспечением специфицированного в стандарте поведения. Константа _POSIX_VERSION имеет значение 200112L.
ОС может предоставлять возможности, помеченные в стандарте в качестве дополнительных, а также содержать нестандартные функции. Если утверждается, что поддерживается некоторое расширение, это должно производиться непротиворечивым образом, для всех необходимых частей и так, как описано в стандарте.
В
заголовочном файле
Для минимизации размеров ОС и приложений стандартом POSIX предусмотрена весьма мелкая гранулярность необязательных возможностей (всего их сорок). С другой стороны, проведено объединение взаимосвязанных необязательных возможностей в группы, что во многих случаях избавляет от анализа большого числа опций. Группы эти таковы:
шифрование;
средства реального времени;
продвинутые средства реального времени;
потоки реального времени;
продвинутые потоки реального времени;
трассировка;
унаследованные возможности.
Например, в группу "средства реального времени" (_XOPEN_REALTIME) входят возможности четырнадцати видов, в том числе планирование на основе приоритетов, асинхронный ввод/вывод, семафоры, таймеры и т.п.
Версия ОС Linux, на которой готовился текст данного курса, выдавала следующие значения некоторых конфигурационных констант (см. листинг 1.1).
$ getconf _POSIX_VERSION
$ getconf POSIX2_C_DEV
$ getconf _XOPEN_REALTIME
$ getconf _POSIX_TRACE
Листинг 1.1. Результат применения утилиты getconf к одной из версий ОС Linux. (html , txt )
Это значит, что поддерживается устаревшая версия стандарта POSIX, среди прочих присутствуют средства разработки и возможности реального времени; средства трассировки отсутствуют.
В документации на ОС должны быть отражены вопросы соответствия стандарту POSIX, описаны поддерживаемые дополнительные и нестандартные возможности.
Для приложений понятие соответствия стандарту POSIX богаче нюансами. Предусмотрено строгое соответствие, главный отличительный признак которого - ограничение круга используемых возможностей рамками стандарта. Рассматривается и соответствие с применением расширений; в этом случае документация на приложение должна содержать описание требуемых нестандартных возможностей. Желательно, чтобы используемые расширения POSIX-возможностей описывались международными и/или национальными стандартами.
(Отметим, что для реализации понятие строгого POSIX-соответствия бессмысленно хотя бы по той причине, что не бывает операционных систем без средств администрирования, а они не описываются данным стандартом.)
Профилем будем называть набор опций, описывающих необязательные возможности. Соответствие профилю означает соответствие стандарту POSIX и поддержку заданных возможностей. Разумным образом выбранные профили позволяют учитывать потребности представительных классов пользователей и/или приложений.
Допускается существование "подпрофилей", описывающих подмножества стандартных возможностей. Реализация, соответствующая подпрофилю, может функционировать на аппаратных платформах с ограниченными ресурсами и/или обслуживать нужды специфических приложений.
К числу важнейших принадлежат понятия, описывающие поведение реализации в различных ситуациях. Для многих корректных ситуаций поведение бывает неспецифицированным, а значит, мобильное приложение не должно полагаться на совпадение поведения разных реализаций. Для некорректных ситуаций поведение может быть неопределенным; приложению не только не следует полагаться на определенный характер подобного поведения - оно не должно совершать некорректных действий, вызывающих неопределенное поведение.
Еще один близкий термин, "поведение, зависящее от реализации", дополнительно означает, что поведение реализации необходимо документировать.
Стандарт POSIX - это существующий много лет, развивающийся организм, в котором с каждой новой редакцией что-то появляется, а что-то утрачивается. Устаревшими называются возможности, которые еще поддерживаются различными реализациями, но в будущем они, вероятно, отомрут. Новые приложения не должны их использовать; для каждой из них стандартом предусмотрена адекватная по функциональности современная замена.
Более ограниченный смысл придан термину "унаследованный": он описывает устаревшие необязательные возможности, которых, разумеется, следует избегать в новых приложениях.
POSIX (portable operating system interface) – стандарт, описывающий интерфейс между операционной системой и прикладной программой. Цель создания этого стандарта – обеспечение совместимости unix-like операционных систем, а также переносимости программ на уровне исходного кода. Однако, стандарт POSIX может использоваться не только unix системами. Название POSIX было предложено Ричардом Столлманом. Произносится как «позикс» — интерфейс переносимых операционных систем Unix.
Немного истории
Первый вариант стандарта POSIX был IEEE Std 1003. Он был выпущен в 1988 году и определял интерфейс между языком программирования Си и оболочкой ядра unix-like систем.
В 1990 году была выпущена новая версия IEEE Std 1003.2. По сравнению с первым вариантом в новом документе были внесены незначительные изменения.
В 1992 году был выпущен двухтомный стандарт IEEE Std 1003.2. В документе описывался интерпретатор команд и более сотни утилит.
Следующая версия, вышедшая в 1993 году, стала небольшим дополнением к предыдущим версиям: появилась информация о синхронизации файлов, семафорах, настройках времени, таймера, очереди сообщений, асинхронном вводе-выводе.
В 1995 году вышел очередной стандарт, посвященный потокам, а документ версии 1996 года был своеобразным дополнением предыдущих версий.
Стандарт POSIX 1999 года описывал дополнительные расширения реального времени.
В 2001 году вышел стандарт, объединяющий в себе все предыдущие версии. Было принято решение использовать его как основу для принятия стандартов в будущем.
Сегодня используется версия POSIX.1, утвержденная в 2008 году.
Основные идеи стандарта POSIX
Согласно задокументированных положениям, для корректного взаимодействия с приложениями ОС должна иметь такие компоненты:
Признаки операционных систем, соответствующих стандартам POSIX
К сертифицированным согласно POSIX стандарту операционным системам относятся: IBM AIX, UnixWare, Solaris, IRIX, QNX, LynxOS, Mac OS X. Полностью совместимые с одной из версий POSIX-стандарта являются такие ОС как Minix, различные ответвления BSD, OpenSolaris, VxWorks, OpenWMS. Что касается дистрибутивов Linux, то большинство из них соответствует стандарте LSB (Linux Standart Base), который в свою очередь опирается на POSIX.