プログラミング言語は、文法/構文と実行モデルで構成される。実行モデルは、言語の要素の動作を指定する。実行モデルにより、そのプログラミング言語で書かれたプログラムの振る舞いを理解できる。たとえば、プログラマーがコードを「読んでいる」とき、頭の中でコードの各行が何をするかを考え、心の中の動作をシミュレートする。プログラマーが行っているこの作業は、実行モデルをコードに適用することである。
実行モデルの詳細.
実行モデルは、分割できない作業単位とは何か、それらの作業単位が実行される順序の制約は何かなどをカバーする。たとえば、加算操作は多くの言語で分割できない作業単位であり、順次言語では、このような作業単位は次々に実行されるように制約される。
静的な選択は、ほとんどの場合コンパイラ内で実装されます。この場合、作業の順序は、命令が実行可能バイナリに配置される順序で表される。動的な選択は、言語のランタイムシステム内に実装される。ランタイムシステムは、コンパイラによって挿入された命令によって呼び出されるライブラリにすることも、次に実行する作業を動的に選択する分岐命令を挿入するなどして、ランタイムシステムを実行可能ファイルに直接埋め込むこともできる。
アセンブリ言語実行モデルとマイクロアーキテクチャによる実装.
並列実行モデル.
現代では、並列プログラミングはますます重要なトピックになっています。並列実行モデルは、複数のタイムラインを伴うため、複雑になる傾向があります。並列実行モデルには、必然的に同期構造の動作が含まれます。同期構造には、別のタイムラインのアクティビティと比較して、あるタイムラインのアクティビティ間の順序を確立する効果があります。
これで、「ロックの所有権を取得する」と「ロックの所有権を放棄する」同期構造の並列実行モデルと言えます。実行モデルは次のとおりです。
以上です。