【Computer】 OSが持つAPI

[参考資料] https://ascii.jp/elem/000/000/623/623689/amp/

歴史的経緯がとても詳細にかいてある。

 そうは言っても、アプリケーションがハードウェアを直接操作するのは、MS-DOSの時代には頻繁に行なわれていた。そのためアプリケーションにバグがあったり設定を間違ったりすると、容易くパソコンがフリーズするといったことが珍しくなかった。WindowsのようなモダンなOSが開発されたのは、グラフィックスやサウンドなどのハードウェアを、アプリケーションが管理しなくていいようにするためだった。



OSが管理するリソースか否かの分類が例示してある。

アプリケーションが必要とする一般的な機能は、OSが管理してアプリケーションに機能を提供する。これを「資源(リソース)の管理」という。リソースとは、各種I/OデバイスからCPUの処理時間、HDD上の記憶領域など、「コンピューター自体をプログラムから扱えるもの」として考えたものをいう。

逆に言えば、ハードウェアの一部であってもプログラムから扱えないものは、リソースにはならない。

例えばノートパソコンの画面やキーボードはリソースとして扱えるが、筐体そのものやディスプレーのヒンジなどは、リソースにはならない。  一定のルールに従ったアプリケーションプログラムであれば、OSはメモリーに読み込んで実行させる。アプリケーションが要求するなら、他のプログラムに影響が出ないようにリソースを割り当てるわけだ。



OSがAPIを介して、アプリケーションからジョブを受け取る流れが明快

アプリケーションはOSに仕事を依頼する。その手続きを決めたものが「API」(Application Program Interface)だ。アプリケーションはAPIを使い、OSに仕事を頼むのである。  ここまで読むと、あたかも「アプリケーション」と「OS」という2つの異なる状態があるように読める。だが実際には同じCPUが、あるときはアプリケーションを動かし、あるときはOSを動かしているだけだ。APIには「ABI」(Application Binary Interface)というものが定義されていて、CPUがここを通ることで、アプリケーションからOSに生まれ変わるのである。  「生まれ変わる」と言うのは、ABIを通った瞬間にCPUはアプリケーションのプログラムではなく、OS側のプログラムを実行し始めるからだ。「ピン芸人が店員と客の1人2役のコントを演じる」ようなものである。  ABIは同時に、アプリケーションを構成するプログラムが、どのような形でファイルの中にしまわれているかも定義する。この約束事に従った「1」と「0」からなるファイルだけを、OSはプログラムとして認識して実行する。ということは、ABIはプログラムを「どうやって作るのか」も決めているわけだ。あるOSで動くアプリケーションプログラムを作るには、このルールに従うしかない。