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

Заключение

< Лекция 13 || Лекция 14: 12345678910
Аннотация: Подводится итог курса, кратко суммируются полученные знания.
Ключевые слова: ПО, окружение, POSIX, доступ, язык C, файл, разрядность, Unix-среда, системы реального времени, ядро, синтаксис, программирование, место, соответствие реализации, соответствие приложения, операционная система, строгое соответствие, соответствие с использованием расширений, профиль, пользователь, подпрофиль, ресурс, неспецифицированное поведение, приложение, неопределенное поведение, неопределенное поведение , поведение, зависящее от реализации, процесс, терминал, хост, узел сети, время, языково-культурная среда, поток управления, математические интерфейсы, пакетные сервисы, операции, права доступа, символьный специальный файл, блочный специальный файл , канал, символьная ссылка, сокет, каталог, адресное пространство, поток, терминальное устройство, сеть, пользовательское окружение, запись, межпроцессное взаимодействие, информация, имя пользователя, идентификатор пользователя, группа, начальный рабочий каталог, начальная программа, база данных пользователей, база данных, имя группы, идентификатор группы, служебная программа, входное имя, почтовое взаимодействие, идентификатор, номер описателя файла, биты режима, тип файла, владелец файла, режим доступа, права, право на чтение, право на запись, право на выполнение, право на поиск, файловый дескриптор, абсолютное маршрутное имя, создание каталогов, mkfifo, копирование, обход файловой иерархии, элемент, утилита, архивирование, операции ввода/вывода, функции нижнего уровня, буферизованный ввод/вывод, функция, чтение данных, fread, байт, индикатор, rewind, класс, управляющие операции с буферами, очередь, вывод, символ, слияние, список, регулярное выражение, потоковый редактор, AWK, реляционные операции, операция проекции отношения, горизонтальное соединение, обработка каталогов, удовлетворяющих заданному шаблону, basename, маршрутный префикс, целое число, атрибут, опрос, getpid, getppid, сеанс, действующий идентификатор, SETUID, SETGID, маска режима создания, execl, execv, execlp, execvp, статус завершения, локальное межпроцессное взаимодействие, средство межпроцессного взаимодействия, сигнал, маска сигналов, доставка сигнала, специальная встроенная команда, очереди сообщений, семафор, разделяемый сегмент памяти, OPEN, очередь сообщений, набор семафоров, идентификатор средства межпроцессного взаимодействия, ключ, активное средство межпроцессного взаимодействия, идентификатор очереди сообщения, управление очередью сообщений, отправка сообщения, прием сообщения, значение, управляющие, объект, память, очередь ввода, входные данные, INTR, приостановка, разрыв соединения, значение конфигурационного параметра, настройка на конфигурацию целевой системы, мобильное программирование, командный интерпретатор, среда компиляции, константы, протокол, минимально допустимое значение, время выполнения, связывание, освобождение, сетевой интерфейс, октет, адрес, номер порта, бит, адресное семейство, передача данных, датаграмма, тип сокета, локальный адрес, режим с установлением соединения, Write, имя узла, обратное преобразование, пара функций, база данных сетей, поиск, интерфейс, база данных сетевых протоколов, база данных сетевых сервисов, поддержка, значение опции, начало отсчета времени, секунда, показания часов, часы, таймер, интервальный таймер, абсолютный таймер, переполнение, проблема 2038-го года, разность, общесистемные часы, процессорное время, команда, манипулирование часами процессорного времени, приостановка выполнения, таймер реального времени, таймер виртуального времени процесса, таймер профилирования, lc_ctype, форматирование денежных величин, форматирование числовых величин, элемент , переменные окружения, определение, категория, каталог сообщений, дескриптор

Основные идеи курса

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

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

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

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

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

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

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

Основная задача курса - рассмотрение приемов и методов использования стандартизованных служебных программ и функций. Не ставилась цель пересказать стандарт, осветив все тонкости реализации ОС, все возможные коды ошибок и т.п. Главное, на наш взгляд, прочувствовать дух стандарта, научиться мобильным образом применять заложенные в нем возможности.

Предполагается, что читатель владеет языком C ; мы не рассматривали ни синтаксис, ни хрестоматийные библиотечные функции этого языка. По отношению к стандартному командному языку и его интерпретатору аналогичного предположения не делалось. Эта тема изложена довольно подробно, хотя многие практикующие программисты предпочитают пользоваться другими интерпретаторами.

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

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

Основные понятия, рассматриваемые в курсе

Важнейшим является понятие соответствия стандарту POSIX. У него есть две стороны: соответствие реализации (операционной системы) и соответствие приложения.

Реализация ( операционная система ), соответствующая стандарту POSIX, должна поддерживать все обязательные служебные программы, функции, заголовочные файлы с обеспечением специфицированного в стандарте поведения.

Для приложений предусмотрено как строгое соответствие (его главный отличительный признак - ограничение круга используемых возможностей рамками стандарта), так и соответствие с использованием расширений.

Профилем называется набор опций, описывающих необязательные возможности. Соответствие профилю означает соответствие стандарту POSIX и поддержку заданных возможностей. Разумным образом выбранные профили позволяют учитывать потребности представительных классов пользователей и/или приложений.

Допускается существование "подпрофилей", описывающих подмножества стандартных возможностей. Реализация, соответствующая подпрофилю, может функционировать на аппаратных платформах с ограниченными ресурсами и/или обслуживать нужды специфических приложений.

К числу важнейших принадлежат понятия, описывающие поведение реализации в различных ситуациях. Для многих корректных ситуаций поведение может быть неспецифицированным ; это значит, что мобильное приложение не должно полагаться на совпадение поведения разных реализаций. Для некорректных ситуаций возможно неопределенное поведение ; приложение не только не должно полагаться на определенный характер подобного поведения - оно не должно совершать некорректных действий, вызывающих неопределенное поведение.

Еще один близкий термин - "поведение, зависящее от реализации" - дополнительно означает, что поведение реализации необходимо документировать.

Стандарт POSIX в редакции от 2003 года - весьма обширный, многогранный документ. Для настоящего курса были отобраны следующие основные понятия операционных систем:

  • пользователь ;
  • файл ;
  • процесс ;
  • терминал ;
  • хост ;
  • узел сети ;
  • время ;
  • языково-культурная среда.

За пределами рассмотрения оставлены такие важные и сложные темы:

  • средства разработки;
  • средства реального времени;
  • потоки управления ;
  • математические интерфейсы;
  • пакетные сервисы;
  • унаследованные интерфейсы.

В тексте стандарта POSIX можно найти следующие пояснения рассматриваемых в курсе основных понятий вместе со ссылками на атрибуты и операции.

  1. У пользователя есть имя и числовой идентификатор.
  2. Файл - объект, допускающий чтение и/или запись и имеющий такие атрибуты, как права доступа и тип. В число типов входят обычный файл, символьный и блочный специальные, канал, символьная ссылка, сокет и каталог. Реализация может поддерживать и другие типы файлов.
  3. Процесс - адресное пространство вместе с выполняемыми в нем потоками управления и необходимыми для этих потоков системными ресурсами.
  4. Терминал (или терминальное устройство ) - символьный специальный файл, подчиняющийся спецификациям общего терминального интерфейса.
  5. Сеть - совокупность взаимосвязанных хостов .
  6. Языково-культурная среда - часть пользовательского окружения, зависящая от языковых и культурных соглашений.

Основными операциями, применимыми к объектам ОС, являются чтение, запись и выполнение. Механизм прав доступа позволяет избирательно разрешать и запрещать выполнение подобных операций.

В posix-совместимых ОС определены объекты, которые можно назвать вспомогательными; они помогают организовать взаимодействие между основными сущностями. Особенно широк спектр средств межпроцессного взаимодействия.

< Лекция 13 || Лекция 14: 12345678910
Антон Коновалов
Антон Коновалов

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