Опубликован: 15.06.2004 | Доступ: свободный | Студентов: 2557 / 712 | Оценка: 4.35 / 3.96 | Длительность: 27:47:00
ISBN: 978-5-9556-0011-6
Лекция 1:

Основные понятия и идеи стандарта POSIX

Лекция 1: 1234 || Лекция 2 >
Аннотация: Излагаются основные сведения о стандарте POSIX, описываются его статус и структура. Выделяются наиболее важные понятия и идеи.
Ключевые слова: ПО, мобильность ПО, утилита, системный сервис, окружение, стандарт, POSIX, portable, operating system, interface, интерфейс, IEEE, open group, ISO, IBM, прикладной программный интерфейс, командный язык, служебная программа, доступ, очередь, мобильность на уровне исходного языка, Unix-среда, ОС реального времени, системный вызов, библиотечная функция, администрирование, суперпользователь, международный стандарт, тип данных, ядро, обратная совместимость, средства разработки, сетевые средства, средства реального времени, потоки управления, математические интерфейсы, пакетные сервисы, заголовочные файлы, операционная система, соответствие стандарту POSIX, соответствие реализации, поведение, значение, константы, время компиляции, приложение, гранулярность, объединение, группа, шифрование, трассировка, вывод, конфигурационные константы, строгое соответствие, профиль, подпрофиль, неопределенное поведение, поведение, зависящее от реализации, устаревший, унаследованный, пользователь, файл, процесс, терминал, хост, узел сети, время, языково-культурная среда, операции, имя, права доступа, блочный специальный файл, символьный специальный файл, пользовательское окружение, механизмы, иерархия, командный интерпретатор, язык shell, запись, соответствующие привилегии, межпроцессное взаимодействие, locale, стандартный ввод, стандартный вывод, стандартный протокол, нструменталь, целевая платформа, среда компиляции приложений, прототип функции, символическая константа, макрос, макрос проверки возможностей, включаемый файл, префикс имени, средство межпроцессного взаимодействия, порождение процесса, завершение процесса, смена программы процесса, сигнал, группирование процессов, управление заданиями, приоритет процесса, очередь сообщений, разделяемая память, семафор, управление памятью, блокировка фрагментов файлов, атомарность, асинхронный ввод/вывод, множества, внешнее устройство, shell, конвейер, фильтр, фоновый режим, интерфейс командной строки, минимум, графика, целый, неспецифицированное поведение

История создания и текущий статус стандарта POSIX

Обеспечение мобильности (переносимости, портабельности) программного обеспечения (ПО) - задача исключительной важности и сложности; в наше время это обстоятельство едва ли нуждается в пространных обоснованиях. Один из общепринятых способов повышения мобильности ПО - стандартизация окружения приложений: предоставляемых программных интерфейсов, утилит и т.п. На уровне системных сервисов подобное окружение описывает стандарт   POSIX (Portable Operating System Interface - мобильный интерфейс операционной системы); название предложено известным специалистом, основателем Фонда свободного программного обеспечения Ричардом Столмэном.

Мы будем рассматривать наиболее современную из доступных версий стандарта POSIX, в редакции 2003 г., которую можно назвать "стандартом втройне", а именно: стандартом IEEE Std 1003.1, Техническим стандартом Open Group и (см. [ 6 ] ), что для нас важнее всего, международным стандартом ISO/IEC 9945 (см. [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] ).

История создания этой версии такова. В начале 1998 г. представители трех организаций - Комитета по стандартам мобильных приложений Института инженеров по электротехнике и электронике, Open Group и рабочей группы 15 подкомитета 22 совместного технического комитета 1 (JTC1/SC22/WG15) Международной организации по стандартизации - начали консультации по вопросу слияния и развития курируемых ими стандартов интерфейсов к системным сервисам: IEEE Std 1003.1, IEEE Std 1003.2, Базовых спецификаций от Open Group, ISO/IEC 9945-1, ISO/IEC 9945-2. В сентябре того же года в городе Остин, штат Техас, в офисе корпорации IBM состоялось организационное заседание группы, сформированной для достижения поставленной цели (см. http://www.opengroup.org/austin).

Основополагающим документом для пересмотренного стандарта, первый проект которого был представлен в июле 1999 года, стали Базовые спецификации от Open Group, поскольку они включали положения стандартов IEEE и ISO/IEC. В 2001 году, по завершении подготовительной работы, стандарт содержал следующие четыре части:

  1. основные определения (термины, концепции и интерфейсы, общие для всех частей);
  2. описание прикладного программного C-интерфейса к системным сервисам;
  3. описание интерфейса к системным сервисам на уровне командного языка и служебных программ ;
  4. детальное разъяснение положений стандарта, обоснование принятых решений.

Далее в ISO, IEEE и Open Group с большей или меньшей скоростью (в 2001-2002 гг.) прошло формальное утверждение нового стандарта POSIX. Тем временем накапливались относительно мелкие исправления, учтенные в редакции 2003-го года.

С развитием стандарта расширялась и трактовка термина "POSIX". Первоначально он относился к документу IEEE Std 1003.1-1988, описывавшему прикладной программный интерфейс ОС класса Unix. После стандартизации интерфейса на уровне командного языка и служебных программ более правильно понимать под словом "POSIX" стандарт в целом, обозначая перечисленные выше части 2 и 3 через POSIX.1 и POSIX.2 в соответствии с нумерацией документов IEEE и ISO/IEC.

Основные идеи стандарта POSIX

Стандарт POSIX описывает множество базовых, системных сервисов, необходимых для функционирования прикладных программ. Доступ к ним предоставляется посредством интерфейса, специфицированного для языка C, командного языка и общеупотребительных служебных программ.

У каждого интерфейса есть две стороны: вызывающая и вызываемая. Стандарт POSIX ориентирован в первую очередь на вызывающую. Его цель - сделать приложения мобильными на уровне исходного языка. Это значит, в частности, что при переносе C-программ на другую операционную платформу потребуется перекомпиляция. О мобильности выполнимых программ и/или объектных файлов речь не идет.

Стандарт POSIX отнюдь не ограничен рамками Unix-среды. Существуют операционные системы (ОС) "независимого происхождения" (например, системы реального времени ), предоставляющие необходимые сервисы и тем самым поддерживающие выполнение POSIX-совместимых приложений. Можно утверждать, что следование стандарту POSIX облегчает перенос приложений практически на любую сколько-нибудь распространенную операционную платформу. Дополнительные усилия по повышению мобильности, прилагаемые на этапе разработки, безусловно, окупятся.

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

POSIX нейтрален по отношению к системной архитектуре и разрядности процессора. Это очень важный аспект мобильности приложений.

Ориентация на международный стандарт языка C определила не только стиль описания функций, но и, до некоторой степени, направление развития спецификаций POSIX в плане синхронизации обоих стандартов. Как известно в утвержденной в 1999 г. редакции спецификаций языка C (см. [ 5 ] ) узаконен комплексный тип данных, что вызвало соответствующее пополнение POSIX-функций.

В стандарте POSIX проведено разделение на обязательные и дополнительные функции, причем обязательное ядро сделано по возможности компактным. Разумеется, особое внимание уделяется способам реализации стандартизуемых функций как в "классической" Unix-среде, так и на других операционных платформах, в сетевых и распределенных конфигурациях.

Разработчики новой версии стандарта POSIX очень бережно отнеслись и к его предыстории, и к предыстории Unix-систем, и, главное, к приложениям, удовлетворявшим более ранним версиям стандарта. Существующие интерфейсы старались сохранять; в процессе развития соблюдался принцип обратной совместимости ; новые интерфейсы добавлялись так, чтобы они не конфликтовали со старыми. Полностью избежать внесения изменений в приложения не удалось по вполне понятным причинам: потребовалось устранить противоречия между разными исходными спецификациями, а также отказаться от поддержки "традиционного" варианта языка C и перейти на его международный стандарт.

Лекция 1: 1234 || Лекция 2 >
Антон Коновалов
Антон Коновалов

В настоящее время актуальный стандарт - это POSIX 2008 и его дополнение POSIX 1003.13
Планируется ли актуализация материалов данного очень полезного курса?