APIとABI

APIとABI

OSはアプリケーションソフトウェアを動作させるのが第一の目的である。
このためのインターフェースがAPI(アプリケーションプログラミング・インタフェース)とABI(アプリケーションバイナリ・インタフェース)である。
カーネルはシステムコールによってアプリケーションにサービスを提供する。
さらに基本ライブラリも含めた形でアプリケーションに対してAPI/ABIを提供する。
アプリケーションによってはOS上のミドルウェアやアプリケーションフレームワークなどをAPIとして使用する場合もある。
APIはプログラミングのためのインターフェースであり、プログラムを作成する際の規則を構成する。
例えば、C言語での関数やFORTRAN/Pascalなどのライブラリ呼び出しといったものがそれにあたる。
一方、ABIはコンパイルされたソフトウェアがOSの機能を呼び出す際のインタフェースであり、プロセスが動作する際の規則を構成する。
例えば、UNIX系のOSはAPIがほとんど共通だが、ABIはOSによって異なる。
従って、同じCPUを使ったシステムであっても、ABIが異なれば実行ファイルが異なる。
ABIには、エンディアン、実行ファイルの形式、システムコールの具体的な方法、コールスタックの使い方などが含まれる。

プロセス管理

プロセス管理

コンピュータ上の各動作はバックグラウンドであっても一般のアプリケーションであっても、内部的にはプロセスとして動作する。
DOSのような古いOSは一度に1つのプロセスしか実行できない。
最近のOSは一度に複数のプロセスを動作させることができる(マルチタスク)。
プロセス管理は複数のプロセスを実行するためにOSが行う処理である。
プロセッサを1つだけ持つ一般的なコンピュータでは、マルチタスクは高速にプロセスからプロセスへ切り替えを行うことで実現される。
ユーザーがより多くのプロセスを実行すれば、個々のプロセスに割り当てられる時間は少なくなっていく。
多くのシステムでは、これが音声の途切れやマウスカーソルの奇妙な動作などを引き起こす。
一般的なプロセス管理は、プロセスごとに優先度を与え、それによって配分される時間を決めている。

メモリ管理

パーキンソンの法則によると、「メモリを拡張するとプログラムはそれに伴って拡大する」という。
プログラマーは無限の容量と無限の速度のメモリを理想としている。
コンピュータのメモリは階層構造になっていて、最も高速なレジスタから、キャッシュメモリ、RAM、最も低速なディスク装置がある。
OS内のメモリ管理部はこのようなメモリを管理するもので、利用可能な部分、割り当てと解放、主記憶と二次記憶との間でのスワップなどを制御する。

メモリ管理

▲Page Top