The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]


 
ANSI (American National Standards Insttitute)
В конце 1989 года Американский национальный институт стандартов (ANSI) утвердил стандарт языка программирования Си (X3.159-1989). Стандарт был принят для улучшения переносимости, написанных на языке Си программ, между различными типами ОС. Таким образом, в стандарт, кроме синтаксиса и семантики языка Си, вошли рекомендации по содержанию стандартной библиотеки. О наличии поддержки стандарта ANSI C говорит предопределенное символьное имя _STDC_.
 
BSD4.x (Berkeley Unix)
Формальный стандарт, основанный на отличиях имеющихся в BSD UNIX. Например, наличие
символических ссылок, функции select, особенности обработки сигналов и набором функций по работе с сокетами. Поддерживается большинство возможностей описанных в стандартах ANSI, POSIX.1 и POSIX.2. Определяется с помощью предопределенного символьного имени _BSD_SOURCE.
 
GLIBC (GNU C library)
Формальный стандарт, описывает возможности библиотеки GNU LIBC. Поддерживаются стандарты ANSI C, POSIX.1, BSD, SVID. Определяется с помощью предопределенных символьных имен _GNU_SOURCE и __GNUC__. Если сборка программы производится под ОС "семейства" UNIX, определены символические имена unix и __unix__, дополнительно при компиляции под ОС LINUX определяются имена linux и __linux__, под FreeBSD - __FreeBSD__.
 
IEEE (Institute of Electrical and Electronics Engineers) 
POSIX (Portable Operating System Interface)
В связи с образованием двух различных направлений развития ОС UNIX - System V и BSD, потребовалось определить некоторый общий для этих направлений интерфейс, который являлся бы по сути объединением средств System V и BSD. В 1985 году, на базе существующих инициативных групп по стандартизации ,  были созданы рабочие группы POSIX (неоценимый вклад внес Richard Stallman). В 1988 году был разработан стандарт POSIX 1003.1-1988 (два года спустя был принят как стандарт IEEE 1003.1-1990, ISO/IEC 9945:1:1990), определяющий минимальные требования к программному интерфейсу (API), необходимому в ОС. Позднее были разработаны дополнение к стандарту POSIX.1, это POSIX.1b ( интерфейс ОС реального времени) и POSIX.1c ( интерфейс "нитей" (Threads) ).
Программный интерфейс не делает различия между библиотечными функциями и системными вызовами, определяя таким образом только независящий от конкретной реализации ОС интерфейс.
В настоящее время функционируют следующие направления деятельности рабочих групп POSIX:

      P1003.1    System Interfaces (API)
      P1003.1b   Realtime System Interfaces (API)
      P1003.1c   Threads System Interfaces (API)
      P1003.1i   Realtime System Interfaces (API)
      P1003.2    Shell and Utilities
      P1003.3    Test Methods
      P1003.4    Realtime
      P1003.5    Ada Bindings
      P1003.6    Security
      P1003.7    System Administration
      P1003.8    Transparent File Access
      P1003.9    Fortran Bindings
      P1003.10   Supercomputing Profile
      P1003.11   Transaction Processing Profile
      P1003.12   Protocol-Independent Network Specification
      P1003.13   Realtime Profile
      P1003.14   Multiprocessing Profile
      P1003.15   Batch System
      P1003.16   C-Language Bindings
      P1003.17   Directory/Name Services
      P1003.18   POSIX Platform Profile
      P1201.1    Human-Computer Interfaces
      P1201.2    User Interface Drivability
      P1224      X.400 Electronic Mail Services API
      P1237      RPC
      P1238.0    FTAM API (OSI Application Layer API (ASCE))
      P1238.1    OSI Networking API

Для определения соответствия  своей программы  стандарту POSIX.1 в программе должны быть определены символические имена  _POSIX_SOURCE или _POSIX_C_SOURCE. Проверить поддержку системой стандартов POSIX, можно с помощью макроимени_POSIX_VERSION.

Следует заметить,  что в стандартах не определены такие популярные функции как getopt_long(), snprintf(), asprintf(), vscanf(), getdelim(), getline(), memmem(), r_alloc(), strsignal(),  etc., поэтому, для обеспечения переносимости приложений, нужно избегать использования таких функций, либо предусмотреть наличие кода-заменителя в вашей программе ( для этого можно воспользоваться системой autoconfigure и взять код-заменитель из ближайшей GPL программы).
 
SVID (The System V Interface Description)
Стандарт описывающий внешние интерфейсы и соответствие ОС System V.  Поддерживается большинство возможностей описанных в стандартах ANSI, POSIX.1 и POSIX.2. Определяется с помощью предопределенного символьного имени _SVID_SOURCE.
 
UNIX-95, UNIX-98
Самые современные из имеющихся стандартов (родились из X/Open XPG). Содержат требования, которым должна соответствовать современная UNIX система, стандарт определяет три типа UNIX систем, возлагая на них разный уровень требований, - система базовой конфигурации (~1400 функций), рабочая станция (~3000 функций) и сервер (UNIX 98 Base, UNIX 98 Workstation, UNIX 98 Server). Требования, в свою очередь, разбиваются на формальные (1003.1, 1003.1c threads, 1003.1b Realtime, ISO C Amendment1) и индустриальные (Aspen Threads, 64bit API, Large File Summit, Dynamic Linking, Y2K).
В расширение стандарта для рабочих станций вошла поддержка GUI, в расширение для сервера - поддержка  JavaTM Virtual Machine support, TCP/IP, SNMP, Hypertext Protocol Transfer Services, Domain Name Service, Terminal & File Services, Mail Services Client Booting Services, Time Services and Directory Services. Более подробно со стандартом UNIX-98 можно ознакомится на сервере www.unix-systems.org.
 
X/Open
 В 1984 году была создана организация X/Open, целью открытия этой организации являлось создание общего набора интерфейсов для обеспечения минимизации усилий по переносу приложений между различными UNIX системами.  Были разработаны ряд руководств, под названием XPG (X/Open Portability Guide), которые сперва (до версии 3 включительно) охватывали POSIX.1/.2, ANSI C и стандарт на X Window System, затем  добавили поддержку особенностей BSD и System V (SVID), в итоге была выпущена спецификация XPG4. Спецификации XPG образуют систему CAE (X/Open Common Application Environment ) в  которой собраны и систематизированы основные стандарты и рекомендации по построению открытых систем. Например, приложения, которые соответствуют CAE, обязательно соответствуют стандартам POSIX.1 и ANSI C, но не наоборот. В 1996 году, после объединения X/Open и OSF, был создан консорциум The Open Group, стандарт XGP4 получил название UNIX 95.
 
 
Пройдемся по стандартам....
UNIX System Interface Tables - содержит список всех команд и системных вызовов определенных в стандартах и спецификациях: UNIX-98, UNIX 95, ISO POSIX-1 (IEEE 1003.1),ISO POSIX-2 (IEEE 1003.2), ISO C, SVID3 и 4.3BSD. 
Команды от A до Z
Системные вызовы: [A-C][D-F][G-I][J-L][M][N-O][P][Q-R][S][T][U-V][W-Y]
Так же доступны PDF и Postscript версии документа.
Сводка всех функций поддерживаемых в стандарте UNIX-98, приводится сравнение с другими стандартами. (система базовой конфигурации , рабочая станция  , сервер и Internet сервер)
Стандарты X/Open
Тесты для проверки совместимости вашей системы с существующими стандартами.
Полный список системных вызовов, c последующей ссылкой на подробное описание, в соответствии со стандартом. 
Полный список заголовочных файлов (Headers), c последующей ссылкой на подробное описание, в соответствии со стандартом. 
Полный список сетевых системных вызовов (Networking Services), c последующей ссылкой на подробное описание,  в соответствии со стандартом.
Сводка  функций библиотеки GLIBC и отношение этих функций к вышеописанным стандартам.(кратко) Существует полное руководство по работе с библиотекой GLIBC. 

 
Кто занимается созданием стандартов.....
Комитет по созданию стандартов для ОС LINUX.
The Open Group.
IEEE.
ANSI
Standards Document Library/DISA Center for Standards
 
Дополнительные руководства
UNIX-programming.faq c-language.faq gcc.faq
glibc-2.faq gcc.howto G++ FAQ & C++ FAQ
Unix-socket-faq Project Management FAQ Configuration Management FAQ
Рекомендую, для получения общего понятия об открытых системах и их базовых стандартах, прочитать статью Сергея Кузнецова "Открытые системы, процессы стандартизации и профили стандартов".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру
 21.09.98