実行 (コンピュータ)

ソフトウェア工学において、コンピュータで実行 (じっこう、 / run)するとは、コンピュータまたは仮想マシンがプログラムの命令を実行すること。プログラムの各命令は、特定の問題を解決するために実行される、特定のアクションについての説明である。命令が記述するアクションが実行中のマシンによって実行されると、実行された命令のセマンティクスに従って、特定の効果が生成される。

コンピュータ用のプログラムは、人間の介入なしにバッチ処理で実行することも、ユーザーがインタプリタの対話型セッションでコマンドを入力することもできる。この場合、「コマンド」は単にプログラム命令であり、その実行は連鎖している。

 実行時環境 
実行が行われる環境は非常に重要である。オペレーティングシステムやミドルウェア等を仲介しないベアメタル環境でプログラムが動作することはほとんどない。プログラムには通常、実行時に使用可能なリソースに関する暗黙的および明示的な仮定 (動作の前提条件) がある。ほとんどのプログラムは、オペレーティングシステムとコンピュータ自体が提供しない重要なサービスを提供するランタイムライブラリのサポート環境で実行される。たとえば、このサポート環境は通常、プログラムがコンピュータ周辺機器を直接操作しなくても良いように、代わりに、より一般的で抽象的なサービスを提供する。

 手順 

実行する前に、まずプログラムを作成する必要がある。これは通常、ソースコードを書くことで行われ、コンパイル時にコンパイルされ（リンク時に静的にリンクされ）、実行ファイルにリンクされる。次に、この実行ファイルが、オペレーティングシステムによって呼び出される。オペレーティングシステムは、プログラムをメモリにロードし（ロード時）、動的リンクを行う、制御をプログラムのエントリーポイントに移動して実行を開始する。これらの手順は、オペレーティングシステムのアプリケーションバイナリインターフェイスによって異なる。この時点で実行が開始され、プログラムは実行時の段階に入る。その後、プログラムは、正常終了またはクラッシュのいずれかで終了するまで実行される。

 インタプリタ 

プログラムを実行するシステムは、プログラムのインタプリタと呼ばれる。大まかに言えば、インタプリタは実行時にプログラムの命令を解釈して指示どおりに実行する。これは、プログラムをある言語から別の言語に変換するコンパイラとは対照的である。コンパイラは、ソースを人間が読める高レベルの言語から、CPUが直接実行できる高速な低レベルの言語（ネイティブな機械語など）に変換する。プログラムは1回コンパイルするだけで、以後、何度でも低レベル言語で実行できる。これは、ソース言語を実行時に解釈するインタプリタと比較して、コンパイラに大きなメリットがある。その代わり、コンパイラの場合は開発にかかる時間が長くなる。場合によっては、変更されたファイルのみの再コンパイルで済む場合もある。その後、実行ファイルを再リンクする必要がある。変更の内容によっては、実行ファイルを最初から再構築する必要がある。コンピューターとコンパイラーが高速になるにつれて、これはそれほど課題ではなくなった。また、ユーザーにとっては開発にかかる時間よりも最終製品の実行速度が重要である。

コンパイラは通常、すぐには実行できない抽象的な結果を生成する。多くの場合、オペレーティングシステムは、プログラムの実行が開始される直前に、コンパイラのオブジェクトコードを最終的な実行可能形式に変換する。

 関連項目 
 実行ファイル
 ランタイムシステム
 ランタイム (プログラムライフサイクルフェーズ)
 プログラムカウンタ

Category:コンピュータ用語