В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13 |
Заключение
Основные идеи курса
Один из общепринятых способов обеспечения мобильности ПО - стандартизация окружения приложений: предоставляемых программных интерфейсов, утилит и т.п. На уровне системных сервисов подобное окружение описывает стандарт POSIX. Стандарт POSIX -2001 включает в себя четыре части:
- основные определения (общие для всех частей термины, концепции и интерфейсы);
- описание прикладного программного c-интерфейса к системным сервисам;
- описание интерфейса к системным сервисам на уровне командного языка и служебных программ;
- детальное разъяснение положений стандарта, обоснование принятых решений.
Стандарт POSIX описывает множество базовых, системных сервисов, необходимых для функционирования прикладных программ. Доступ к ним предоставляется посредством интерфейса, специфицированного для языка C, командного языка и общеупотребительных служебных программ.
Основная цель стандарта POSIX - сделать приложения мобильными на уровне исходного языка по отношению к смене аппаратно-программной платформы. О мобильности выполнимых программ и/или объектных файлов речь не идет.
POSIX нейтрален по отношению к системной архитектуре и разрядности процессора. Это очень важный аспект мобильности приложений.
Стандарт POSIX не ограничен рамками Unix-среды. Существуют и другие операционные системы (например, системы реального времени), предоставляющие необходимые сервисы и тем самым поддерживающие выполнение POSIX -совместимых приложений. Можно утверждать, что следование стандарту POSIX облегчает перенос приложений практически на любую сколько-нибудь распространенную операционную платформу.
В стандарте POSIX проведено разделение на обязательные и дополнительные системные сервисы, причем обязательное ядро сделано по возможности компактным. Для рассмотрения в данном курсе были отобраны в основном обязательные возможности; другие (среди которых выбирались давно устоявшиеся, присутствующие во многих исторически сложившихся реализациях) привлекались только тогда, когда явно не хватало функциональности для создания приложений.
Основная задача курса - рассмотрение приемов и методов использования стандартизованных служебных программ и функций. Не ставилась цель пересказать стандарт, осветив все тонкости реализации ОС, все возможные коды ошибок и т.п. Главное, на наш взгляд, прочувствовать дух стандарта, научиться мобильным образом применять заложенные в нем возможности.
Предполагается, что читатель владеет языком C ; мы не рассматривали ни синтаксис, ни хрестоматийные библиотечные функции этого языка. По отношению к стандартному командному языку и его интерпретатору аналогичного предположения не делалось. Эта тема изложена довольно подробно, хотя многие практикующие программисты предпочитают пользоваться другими интерпретаторами.
Мы не противопоставляли программирование на уровне командного языка и языка С. И то, и другое, порознь или совместно, может служить адекватным инструментом реализации приложений. Соответственно, рассматриваемые интерфейсы группировались по их предметной направленности, а не по языку реализации.
Значительное место в курсе и по объему, и по роли отведено примерам программ. Многие положения стандарта (связанные, скажем, с обработкой ошибочных ситуаций) излагаются не в основном тексте, а в этих примерах. По возможности они компилировались и выполнялись на нескольких аппаратно-программных платформах, в той или иной степени претендующих на соответствие стандарту POSIX. Тем не менее, недосмотры, конечно, возможны. Мы будем признательны за все замечания и предложения, относящиеся как к курсу в целом, так и к отдельным примерам программ.
Основные понятия, рассматриваемые в курсе
Важнейшим является понятие соответствия стандарту POSIX. У него есть две стороны: соответствие реализации (операционной системы) и соответствие приложения.
Реализация ( операционная система ), соответствующая стандарту POSIX, должна поддерживать все обязательные служебные программы, функции, заголовочные файлы с обеспечением специфицированного в стандарте поведения.
Для приложений предусмотрено как строгое соответствие (его главный отличительный признак - ограничение круга используемых возможностей рамками стандарта), так и соответствие с использованием расширений.
Профилем называется набор опций, описывающих необязательные возможности. Соответствие профилю означает соответствие стандарту POSIX и поддержку заданных возможностей. Разумным образом выбранные профили позволяют учитывать потребности представительных классов пользователей и/или приложений.
Допускается существование "подпрофилей", описывающих подмножества стандартных возможностей. Реализация, соответствующая подпрофилю, может функционировать на аппаратных платформах с ограниченными ресурсами и/или обслуживать нужды специфических приложений.
К числу важнейших принадлежат понятия, описывающие поведение реализации в различных ситуациях. Для многих корректных ситуаций поведение может быть неспецифицированным ; это значит, что мобильное приложение не должно полагаться на совпадение поведения разных реализаций. Для некорректных ситуаций возможно неопределенное поведение ; приложение не только не должно полагаться на определенный характер подобного поведения - оно не должно совершать некорректных действий, вызывающих неопределенное поведение.
Еще один близкий термин - "поведение, зависящее от реализации" - дополнительно означает, что поведение реализации необходимо документировать.
Стандарт POSIX в редакции от 2003 года - весьма обширный, многогранный документ. Для настоящего курса были отобраны следующие основные понятия операционных систем:
За пределами рассмотрения оставлены такие важные и сложные темы:
- средства разработки;
- средства реального времени;
- потоки управления ;
- математические интерфейсы;
- пакетные сервисы;
- унаследованные интерфейсы.
В тексте стандарта POSIX можно найти следующие пояснения рассматриваемых в курсе основных понятий вместе со ссылками на атрибуты и операции.
- У пользователя есть имя и числовой идентификатор.
- Файл - объект, допускающий чтение и/или запись и имеющий такие атрибуты, как права доступа и тип. В число типов входят обычный файл, символьный и блочный специальные, канал, символьная ссылка, сокет и каталог. Реализация может поддерживать и другие типы файлов.
- Процесс - адресное пространство вместе с выполняемыми в нем потоками управления и необходимыми для этих потоков системными ресурсами.
- Терминал (или терминальное устройство ) - символьный специальный файл, подчиняющийся спецификациям общего терминального интерфейса.
- Сеть - совокупность взаимосвязанных хостов .
- Языково-культурная среда - часть пользовательского окружения, зависящая от языковых и культурных соглашений.
Основными операциями, применимыми к объектам ОС, являются чтение, запись и выполнение. Механизм прав доступа позволяет избирательно разрешать и запрещать выполнение подобных операций.
В posix-совместимых ОС определены объекты, которые можно назвать вспомогательными; они помогают организовать взаимодействие между основными сущностями. Особенно широк спектр средств межпроцессного взаимодействия.