POSIX、この頭文字を聞いたり、さまざまなオンラインフォーラムや記事で読んだりしたことがあるのは間違いないでしょう。プログラマーやシステム開発者が最も気にしているようです。謎めいた響きがあり、このテーマに関する良い情報はたくさんありますが、ディスカッション・フォーラムによっては、POSIXとは何かについて詳しく説明しないものもあり、悩むこともあります。では、POSIXとはいったい何なのでしょうか?
POSIX
POSIXは主にAT&TのSystem V UNIXとBSD UNIXの機能に関するものです。
POSIXは、システム・インターフェース、コマンドとユーティリティ、ネットワーク・ファイル・アクセスなどをカバーしています。
なぜPOSIXがあるの?
結論:携帯性。
60年以上前、プログラマーがソフトウェアを複数のシステムで動作させようと思ったら、コードを完全に書き直さなければなりませんでした。しかし1960年代半ばになると、POSIXではなくメインフレームの世界で、ポータビリティが機能するようになりました。
IBMはSystem/360ファミリーのメインフレームコンピュータを発表しました。異なるモデルはそれぞれ独自の仕様を持っていましたが、ハードウェアによって同じオペレーティング・システム、OS/360を使用することができました。
オペレーティング・システムが異なるモデルで実行できるだけでなく、アプリケーションも異なるモデルで実行できます。これにより、コストが削減されただけでなく、「コンピューター・システム」、つまり製品ラインを越えて連携できるシステムが構築されたのです。今日ではネットワークやシステムで当たり前のことですが、当時は大きな前進でした!
同じ頃、UNIXが登場したとき、UNIXは異なるメーカーのマシンでも動作することを約束しました。しかし、UNIXがさまざまな流派を生み出すようになると、これらのUNIXの亜種間でコードを移植することが難しくなり、UNIXの移植性の約束は失墜していきました。
この移植性の問題に対処するため、1980年代にPOSIX標準が策定されました。この標準は、当時の2大UNIXであったAT&TのSystem V UNIXとBSD UNIXに基づいて定義されました。POSIXは、アプリケーションがオペレーティングシステムとどのようにインターフェイスするかにのみ関係しています。プログラマ用語で、インターフェースとは、あるプログラムのコードが別のプログラムと通信するための方法のことです。同様に、プログラムAはプログラムBに特定のタイプの情報を提供することを期待します。同様に、プログラムAはプログラムBが特定のタイプのデータで応答することを期待します。
例えば、catコマンドでファイルを読みたかったら、コマンドラインに次のように入力します:
cat myfile.txt
プログラマーの専門用語は抜きにして、簡単に言うと、catコマンドはオペレーティング・システムを呼び出してファイルを取得し、catがそれを読めるようにします。アプリケーションとオペレーティング・システムの間には多くの相互作用があります。この相互作用がどのように機能するかがPOSIXの関心事です。この相互作用がUNIXの亜種間で同じであれば、オペレーティング・システムやメーカー、ハードウェアに関係なく、移植性を取り戻すことができます。
その具体的な方法については、規格に定められています。
コンプライアンスは任意
ヘルプを見るには、XXXX -helpと入力してください。POSIXはダブルダッシュを要求しておらず、シングルダッシュを要求していました。二重ダッシュはGNUから来たものですが、Linuxを害することはありませんし、Linuxにちょっとした個性を加えます。また、Linuxは、特にシステムコールインターフェイスに関しては、ほとんどPOSIX互換です。このため、Linux、Sys V UNIX、BSD UNIX上でX、GNOME、KDEアプリケーションを実行することができます。ls、cat、grep、find、awkなどの様々なコマンドは、異なる亜種でも同じように動作します。
原則として、コンプライアンスは自発的なステップです。コードが準拠していれば、別のシステムに移行するのも簡単で、コードを書き直す必要もほとんどありません。コードが別のシステムで動くと、その用途は広がります。他のシステムを使っている人は、そのプログラムを使うことで利益を得ることができます。駆け出しのプログラマにとっては、POSIXに準拠したプログラムの書き方を学ぶことがキャリアに役立ちます。Linuxの世界でのコンプライアンスに興味がある人には、 Linux 基本標準多くの良い情報があります。
でも、僕はプログラマーでもシステム設計者でもないし......。
コンピュータを使って仕事をする人の多くは、プログラマーやオペレーティング・システムの設計者ではありません。彼らは病院の事務員であり、手紙やタスクリストを書いたり、メモを口述筆記したりする秘書です。また、数字から表を作ったり、データを収集・整理したり、オンラインショップを運営したり、本や記事を書いたりする人もいます。ほとんどすべての仕事において、コンピュータが近くにあるはずです。
POSIXは、ユーザーが知っているかどうかにかかわらず、これらのユーザーにも影響を与えます。ユーザーはこの標準に準拠する必要はありませんが、自分のコンピュータが動作することを望んでいます。オペレーティング・システムやプログラムがPOSIX標準に準拠すれば、相互運用性の利点が得られます。あるシステムから別のシステムへ移行しても、そのマシンが他のマシンと同じように動作することを合理的に期待できるようになります。データへのアクセスや変更も可能です。
たくさんのメリットがあります。私はそれが好きです。
では、"X "とは?
POSIXの "X "が何を意味するのか、私はまだ述べていません。POSIXの "X "が何を意味するのか、リチャード・ストールマンが素晴らしい記事で説明しています。彼の言葉を借りれば、それは次のようなものです:
IEEEは仕様を完成させましたが、簡潔な名前がありません。正確な表現は覚えていませんが、タイトルは "Portable Operating System Interface "でした。委員会は略語として "IEEEIX "を付けました。私は、これは良い選択だとは思いません。発音しにくいし、"Ayeee!"という恐ろしい叫び声に聞こえますから。「Unix」。
GNUはUnixではありませんし、Unixに取って代わることを意図しているので、GNUを「Unixシステム」と呼んでほしくありません。そこで、人々が実際に使うかもしれない簡潔な名前を考えました。特にひらめくこともなく、とても間抜けな方法で名前をつけました。ポータブル・オペレーティング・システム "の頭文字に "ix "を加えました。
はんけつをくだす
POSIX標準によって、開発者は多くのオペレーティング・システム上でほとんど同じコードを使ってアプリケーションやツール、プラットフォームを作ることができます。POSIX標準に従ってコードを書くことは必須ではありませんが、他のシステムにコードを移植する際には大いに役立ちます。
基本的に、POSIXはオペレーティング・システムの設計者やソフトウェア開発者向けのものですが、システムのユーザーであることは、気づくか気づかないかにかかわらず、POSIXの影響を受けています。POSIXは、あるUNIXやLinuxシステムで作業したものを、別のシステムに持っていっても支障なく作業できるようにする標準です。ユーザーとしては、使いやすさやシステム間でのデータの再利用など、多くの利点があります。





