POSIXとは何ですか?

POSIXとは何ですか?

POSIXがあちこちで言及されているのを見続け、Wikipediaのページで次の抜粋を見つけるまで、常にこれをデフォルトのUNIX標準と考えていました。グループを開く

Open Groupは、最も有名なUNIX商標認証機関であり、シングルUNIX仕様技術規格POSIX標準を拡張し、UNIXシステムの公式定義です。

UNIXシステムの公式定義がPOSIXの拡張である場合、POSIXは正確に何ですか? 、、、UNIX世界の試金石のようですが、全体の絵にどのように当てはまるかわかりません。

答え1

POSIX は Single UNIX 仕様より先に 1988 年に初めて標準となりました。これは、様々なUNIX分岐とUNIX様システムの両方を統合する試みの1つでした。 POSIXはIEEE標準ですが、IEEEはUNIX®の商標を所有していないため、当時の既存のUNIX APIに基づいていても、標準はUNIX®ではありません。最初の標準POSIX.1の公式名称はIEEE std 1003.1-1988です。 [1] IEEEは、この規格のコピーを取得するためにかなりの費用を請求します。

Open Groupは、IEEEのPOSIX標準作業に基づいて、1997年に単一のUNIX仕様(SUSv2)を発表しました。 SUSv3は、IEEEとThe Open Group(Austin Groupと呼ばれる)間のコラボレーショングループで2001年にリリースされました。 POSIX:2001[ともいうSUSv32]。これで、SUSv4のコアであるPOSIX:2004とPOSIX:2008があります。 UNIX®が何であるかについて言えば、UNIX®は現在登記商標権者はそうだと言います。 1994年からオープングループ。

Novellは、UNIX®の誕生地であるAT&T/USLからUNIX®システム事業部を買収しました。 1994年に彼らはUNIX®の商標権をX/Openに売却しました。サム]は現在The Open Groupとして知られています。その後、UNIX®ソースコードをSCOにUNIXWARE®として販売しました。 [サム] UNIX®自体は何度もフォークされました。4][5その理由の1つは、AT&Tのライセンスモデルによるものです。 UNIX®を購入すると、オペレーティングシステムの完全なソースコードとそれを構築するための完全なツールチェーンが提供されます。ソースコードの修正は、AT&TのUNIX®ライセンスに従って、誰でも配布して使用できます。ライセンス料は数千です。

BSDは、UNIX®オペレーティングシステムに多くの機能強化を追加するBerkeleyプロジェクトです。 BSDコードは、GNUプロジェクトやLinuxで使用されているGPLとは異なり、AT&Tソースコードよりも自由なライセンスに基づいてリリースされるため、ライセンス料が不要であるか、ソースコードと共に配布されます。これにより、BSDコードの大部分がさまざまな商用UNIXディストリビューションに含まれます。約4.3BSDでは、もともとAT&T UNIX®ソースコードのすべての要件をほぼ置き換えました。 FreeBSD/NetBSD/OpenBSDはすべて4.3BSDの分岐であり、オリジナルのAT&Tソースコードを持たない完全なオペレーティングシステムです。さらに、UNIX® 商標の権利はありませんが、そのコードの大部分は商用 UNIX オペレーティング・システムで使用されます。 UNIXで使用されているSocket APIはBSDで開発されており、Unix Fast Filesystemコードは独自の機能強化により、さまざまなUNIXオペレーティングシステム(Solarisなど)で借用され使用されています。

Linuxは1991年に開発されましたが、BSDとは異なり、最初からほとんどのUNIXユーザースペースをクリーンルームとして実装した既存のGNUプロジェクトを使用して開発されました。これはほとんどのPOSIX互換性を実装し、UNIXと設計は似ていますが、BSDほどAT&TまたはUNIX®と密接に接続されていません。

答え2

最も重要なことPOSIX 7定義

  1. アプリケーションプログラミングインターフェース

    非常に拡張ANSI C同じもの:

    • 追加ファイル操作:、、、、、mkdir(ハードリンク)、dirnamesymlinkreadlinklinkpoll()、、、、statsyncnftw()
    • プロセスとスレッド:fork、、、execlwait, pipe, 信号sem_*、共有メモリ(shm_*)、、スケジューリングkillパラメータ(nice、、sched_*sleep、、、、mkfifosetpgid()
    • ネットワーキング:socket()
    • メモリ管理:mmap、、、、、、mlockmprotectmadvisebrk()
    • ユーティリティ:正規表現(reg*

    forkさらに、これらのAPIは、プロセスの概念など、APIが依存する基本的なシステム概念を識別します。

    たくさんLinuxシステムコールsys_write特定のPOSIX C API機能を実装し、それをLinuxと互換性があるようにするために存在します。たとえば、sys_read...しかし、これらのシステムコールの多くはLinux関連の拡張も持っています。

    主なLinuxデスクトップの実装:glibc。多くの場合、システムコール用の浅いラッパーのみが提供されます。

  2. CLIユーティリティ

    たとえばcd、、、、、ls...echo

    多くのユーティリティはmkdir

    主なLinuxデスクトップの実装:小規模なGNU Coreutils、大規模な個別のGNUプロジェクト:sed、、、、...一部のCLIユーティリティはBashに実装されています。grepawk内蔵で

  3. シェル言語

    例えば、a=b; echo "$a"

    主なLinuxデスクトップの実装:GNUグータ

  4. 環境変数

    たとえば: HOMEPATH

    PATH 検索意味の指定、含むPATHスラッシュが検索をブロックする方法

  5. プログラム終了ステータス

    ANSI Cは、成功0の場合は「または」、失敗の場合は「または」を意味し、残りの実装を定義します。EXIT_SUCCESSEXIT_FAILURE

    POSIXが追加されました:

    また見なさい:$?シェルスクリプトでは(ドル疑問符)はどういう意味ですか?

  6. 正規表現

    BRE(基本)とERE(拡張)の2種類があります。 Basic は廃止され、API を中断しないように維持されます。

    これはC API関数として実装されており、grepデフォルトでBREを許可するなど、CLIユーティリティ全体で使用されます-E

    たとえば、echo 'a.1' | grep -E 'a.[[:digit:]]'

    Linuxの主な実装:glibcは次の機能を実装しています。正規表現.hgrepバックエンドとして使用できるプログラム

  7. ディレクトリ構造

    たとえば/dev/null/tmp

    LinuxFHSPOSIXを大幅に拡張します。

  8. ファイル名

    • /パス区切り記号
    • NULサービスの中断
    • .はいcwd..両親
    • ポータブルファイル名
      • フルパスには最大14文字、256文字を使用してください。
      • 以下のみを含めることができます。a-zA-Z0-9._-

    また見なさい:https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem

  9. コマンドラインユーティリティAPIルール

    必須ではなく、POSIXで使用されますが、他の場所、特にGNUではほとんど使用されません。ただし、実際には単一文字のロゴ(例-a:)のみがあり、ダブルハイフンで構成されている長いバージョン(例--all:)がないため、制限が厳しくなります。

    広く使用されているいくつかの規則:

    • -必要なファイルの stdin を示します。
    • --終了フラグ(たとえば、次のls -- -lディレクトリを一覧表示)-l

    また見なさい:https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments

  10. 「POSIX ACL」(アクセス制御リスト)、例えばバックエンドとして使用されます。setfacl

    これ引くしかし、これは次のようなさまざまなオペレーティングシステムで実装されています。Linuxでsetxattr

POSIXに従う人は誰ですか?

多くのシステムがPOSIXに厳密に準拠していますが、実際には標準を維持するOpen Groupの認定を受けたシステムはほとんどありません。注目すべき認証は次のとおりです。

ほとんどのLinuxディストリビューションはコンプライアンスが非常に優れていますが、コンプライアンス確認の費用を支払いたくないため、認証されていません。インスパーK-UXそしてHuaweiオイラーOS以下は2つの認証されたケースです。

認証されたシステムの公式リストは、以下で確認できます。https://www.opengroup.org/openbrand/register/そしてまだそこにいるウィキページ

Windows

Windowsは、一部のプロのディストリビューションにPOSIXを実装しています。

これはオプションの機能であるため、プログラマーはほとんどのエンドユーザーアプリケーションでこの機能に頼ることはできません。

Windows 8 ではサポートされなくなりました。

2016年には、「Linux用Windowsサブシステム」という新しい公式のLinux様APIが発表されました。これには、Linuxシステムコール、ELF操作、/procファイルシステムの一部、Bash、GCC(TODO多分glibc?)apt-getなどが含まれます。https://channel9.msdn.com/Events/Build/2016/P488したがって、私はWindowsがすべてではなくてもほとんどのPOSIXを実行できると信じています。ただし、エンドユーザーではなく開発者/配布に焦点を当てています。特に、Windows GUIへのアクセスを許可する予定はありません。

公式のMicrosoft POSIX互換性の歴史的概要:http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

シビンWindows用の「広範なPOSIX API機能を提供する」が、「Windowsでアプリケーションを実行するにはソースからアプリケーションを再構築する」必要があるよく知られているGPLサードパーティのプロジェクトです。システム2Cygwinの上にさらに機能を追加すると思われる関連プロジェクトです。

機械的人造人間

Androidには、Android OからPOSIXを完全にサポートしていない独自のCライブラリ(Bionic)があります。https://stackoverflow.com/questions/27604455/is-android-posix- Compatible

ボーナスレベル

これLinux標準ライブラリPOSIXがさらに拡張されました。

フレームではなくインデックスを使用すると、読みやすく検索が容易になります。http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

grep用のHTMLページの完全に圧縮されたバージョンを取得します。 https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939

答え3

POSIXは移植可能なオペレーティングシステム標準です。これは、互換性のあるオペレーティングシステムがソフトウェアに提供する必要がある特定のユーティリティ、API、およびサービス(ソケット、ファイルI / O、スレッドなど)、およびプログラムでこれらの機能を呼び出す方法に関する規則を説明します。

これは、1つのPOSIX互換オペレーティングシステム用に書かれたプログラムが、POSIX非互換オペレーティングシステムの間から他のPOSIX互換オペレーティングシステムに移植することができるという考えです。これがFreeBSDからLinuxにアプリケーションを移植することが、FreeBSDからWindowsにアプリケーションを移植するよりもはるかに簡単な理由です(Windowsが表面上のPOSIXのサブセットをサポートしていても)。

答え4

POSIXは、他のオペレーティングシステムのためのさまざまなUnixのような環境をカバーするためのUNIXのサブセットです。これには、最初はVMS用Eunice、Windows NTのPOSIX属性、Apollo Domain / OSなどの環境が含まれていました。 Unix と Unix 以外の動作が同じオペレーティング システム サービスのサブセットの標準移植性 API と考えることができます。バラよりhttp://standards.ieee.org/develop/wg/POSIX.htmlより多くの情報を知りたいです。

関連情報