Что такое POSIX?

Я вижу, что POSIX упоминается часто и везде, и я предположил, что это базовый стандарт UNIX .. пока я не заметил следующую выдержку на странице Википедии: Открытая группа

  

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

Если официальное определение UNIX-системы является расширением POSIX, то что же такое POSIX? ,,, Это, безусловно, кажется пробным камнем в мире UNIX, но я не знаю, как он вписывается в общую картину.

121 голос | спросил Peter.O 25 PMpMon, 25 Apr 2011 21:41:39 +040041Monday 2011, 21:41:39

4 ответа


112

POSIX впервые был стандартом в 1988 году задолго до спецификации Single UNIX. Это была одна из попыток объединить все различные UNIX-вилки и UNIX-подобные системы. POSIX является стандартом IEEE, но поскольку IEEE не владеет товарным знаком UNIX®, стандарт не UNIX®, хотя он основан на существующем UNIX API в то время. Первый стандарт POSIX.1 официально известен как IEEE std 1003.1-1988. [ 1 ] IEEE взимает значительную плату за получение копия стандарта.

В 1997 году Open Group выпустила Single Unix Specification (SUSv2) на основе работы стандарта IOSE стандарта POSIX. SUSv3 был выпущен в 2001 году из совместной рабочей группы между IEEE и Open Group, известной как Austin Group. SUSv3 также известен как POSIX: 2001 [ 2 ]. Теперь есть POSIX: 2004 и POSIX: 2008, который является ядром SUSv4. Что касается UNIX®, UNIX® - это то, что говорит текущий владелец зарегистрированный . С 1994 года это The Open Group.

Novell приобрела системный бизнес UNIX® от AT & T /USL, в котором родился UNIX®. В 1994 году они продали право на товарный знак UNIX® на X /Open [ 3 ], теперь известный как The Open Group. Затем они продали исходный код UNIX® для SCO как UNIXWARE®. [ 3 ]. UNIX® сам разворачивался [ 4 ] [ 5 ] частично благодаря модели лицензирования AT & T. Приобретение UNIX® предоставило вам полный источник операционной системы и полную цепочку инструментов для ее создания. Модификации источника могут быть распространены и использованы любым, кому принадлежит лицензия UNIX® от AT & T. Лицензионный сбор был в тысячах.

BSD был проектом в Беркли, который добавил ряд усовершенствований в операционную систему UNIX®. Код BSD был выпущен по гораздо более либеральной лицензии, чем источник AT & T, и не требовал лицензионного сбора или даже требования к распределению с источником, в отличие от GPL, который использует проект GNU и Linux. Это привело к тому, что значительная часть кода BSD была включена в различные коммерческие вилки UNIX. Около 4.3BSD они почти заменили любую потребность в исходном исходном коде AT & T UNIX®. FreeBSD /NetBSD /OpenBSD - это все вилки 4.3BSD, которые являются полной операционной системой и не имеют исходного исходного AT & T-исходного кода. Они также не имеют права на товарный знак UNIX®, но большая часть их кода используется коммерческими операционными системами UNIX. API-интерфейс Socket, используемый в UNIX, был разработан на BSD, а код быстрой файловой системы Unix был заимствован и использовался в различных операционных системах UNIX, таких как Solaris, с их собственными улучшениями.

Linux был разработан в 1991 году, но был разработан с нуля, в отличие от BSD, и использует существующий проект GNU, который представляет собой чистое использование большей части пользовательского пространства UNIX. Он реализует большую часть POSIX для совместимости и является UNIX-подобным в дизайне, но у него нет тесного соединения с AT & T или UNIX®, которые имеют BSD.

ответил penguin359 26 AMpTue, 26 Apr 2011 01:27:39 +040027Tuesday 2011, 01:27:39
46

Самое главное POSIX 7 определяет

  1. API-интерфейс API

    Значительно расширяет ANSI C с такими вещами, как:

    • больше операций с файлами: mkdir, dirname, symlink, readlink, link (hardlinks), poll, sync
    • процесс и потоки: fork, execl, pipe, семафоры sem_*, разделяемая память ( shm _ *), shm_*, параметры планирования (kill, nice), sched_
    • сеть
    • регулярные выражения
    • расширенное управление памятью: sleep, mmap, mlock, mprotect

    Эти API также определяют базовые системные концепции, от которых они зависят, например. madvise требует концепцию процесса.

    Существует множество системных вызовов Linux для реализации конкретной функции API POSIX C и обеспечения совместимости с Linux. fork, sys_write, ...

    Основная реализация настольных компьютеров Linux: glibc, которая во многих случаях просто предоставляет неглубокую оболочку системным вызовам.

  2. Утилиты CLI

    Например: sys_read, cd, ls, ...

    Многие утилиты представляют собой прямые передние концы оболочки для соответствующей функции C API, например. echo.

    Основная реализация настольных компьютеров Linux: GNU Coreutils для небольших, отдельные проекты GNU для больших: mkdir, sed, grep, ... Некоторые утилиты CLI реализованы Bash как встроенные компоненты .

  3. Язык оболочки

    Например, awk

    Основная реализация настольных компьютеров Linux: GNU Bash.

  4. переменные среды

    Например: a=b; echo "$a", HOME.

  5. Статус выхода из программы

    ANSI C сообщает PATH или 0 для успеха, EXIT_SUCCESS для отказа и оставляет реализацию, описанную ниже.

    POSIX добавляет:

  6. Регулярное выражение

    Существует два типа: BRE (Basic) и ERE (Extended). Basic устарел и поддерживается только для того, чтобы не нарушать API.

    Эти функции реализованы с помощью функций C API и используются во всех утилитах CLI, например. 128 + SIGNAL_ID принимает BRE по умолчанию и ERE с grep.

    Например: -E

    Основная реализация Linux: glibc реализует функции в regex.h , какие программы echo 'a.1' | grep -E 'a.[[:digit:]]' может использоваться как сервер.

  7. Строка каталога

    Например: grep, /dev/null

    Linux FHS значительно расширяет POSIX.

  8. Имена файлов

    • /tmp - разделитель путей
    • / не может использоваться
    • NUL является ., cwd parent
    • переносные имена файлов
      • используйте максимум 12 символов и 256 для полного пути.
      • может содержать только: ..

    См. также: https://stackoverflow.com/questions/18550253/what- это-POSIX-соответствия, для файловой системы

  9. Соглашения API API командной строки

    Не обязательно, используется POSIX, но почти нигде больше, особенно в GNU. Но это правда, это слишком ограничительно, например. только однобуквенные флаги (например, a-zA-Z0-9._-), без двойных дефисных длинных версий (например, -a).

    Несколько широко используемых соглашений:

    • --all означает stdin, где ожидается файл
    • - завершает флаги, например. --, чтобы указать каталог с именем ls -- -l

    См. также: https: //stackoverflow. ком /вопросы /8957222 /являются-там-стандартов для-Linux-командной строки, переключателей и аргументы

Кто соответствует POSIX?

Многие системы тесно связаны с POSIX, но немногие фактически сертифицированы Open Group, которая поддерживает стандарт. Известные сертифицированные включают:

Большинство дистрибутивов Linux очень совместимы, но не сертифицированы, потому что они не хотят платить проверку соответствия.

См. страницу .

Окно

Windows реализовала POSIX в некоторых своих профессиональных дистрибутивах.

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

Поддержка была устарела в Windows 8:

В 2016 году новый официальный Linux-подобный API под названием «Подсистема Windows для Linux» былобъявил. Он включает в себя системные вызовы Linux, запуск ELF, части файловой системы -l, Bash, GCC, (TODO, вероятно, glibc?), /proc и многое другое: https://channel9.msdn.com/Events/Build/2016/P488 , чтобы я верьте, что это позволит Windows запускать много, если не все, POSIX. Однако он ориентирован на разработчиков /развертывание вместо конечных пользователей. В частности, не было планов разрешить доступ к графическому интерфейсу Windows.

Исторический обзор официальной совместимости Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin - хорошо известный сторонний проект GPL, который «обеспечивает существенные функциональные возможности POSIX API» для Windows, но требует, чтобы вы «перестроили приложение из источника, если хотите, чтобы он работал в Windows». MSYS2 - связанный проект, который, кажется, добавляет больше функций поверх Cygwin.

Android

Android имеет собственную библиотеку C (Bionic), которая не поддерживает полностью POSIX с Android O: https : //stackoverflow.com/questions/27604455/is-android-posix-compatible

Уровень бонуса

Стандартная база Linux расширяет POSIX.

Используйте индексы non-frames, они более читабельны и доступны для поиска: http: //pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Получите полную версию страниц HTML для grepping: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939

ответил Ciro Santilli 新疆改造中心 六四事件 法轮功 8 AM00000010000005531 2015, 01:12:55
15

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

Идея состоит в том, что программа, написанная для одной ОС, совместимой с POSIX, будет проще переносить в другую ОС, совместимую с POSIX, чем переносить между OS, не совместимыми с POSIX. Вот почему гораздо проще переносить приложение, скажем, с FreeBSD в Linux, чем переносить его из FreeBSD в Windows (хотя Windows якобы поддерживает подмножество POSIX.)

ответил Andrew Lambert 25 PMpMon, 25 Apr 2011 22:03:42 +040003Monday 2011, 22:03:42
14

POSIX - это подмножество UNIX, которое предназначено для охвата различных Unix-подобных сред для других операционных систем; это первоначально включало такие среды, как Eunice для VMS, личность POSIX Windows NT и домен /сервер Apollo. Вы можете подумать об этом как о стандартном API-интерфейсе совместимости для подмножества служб операционной системы, поведение которых является общим для Unix и non-Unix. Подробнее см. http://standards.ieee.org/develop/wg/POSIX.html .

ответил geekosaur 25 PMpMon, 25 Apr 2011 21:59:58 +040059Monday 2011, 21:59:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132