リエントラント性の原則
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:57 UTC 版)
「リエントラント」の記事における「リエントラント性の原則」の解説
リエントラントなコードは、静的変数やグローバル変数を保持しない。 リエントラントな関数はグローバルなデータを使えないわけではない。例えばリエントラントな割り込みサービスルーチンは、(例えば、シリアルポートのバッファを読み取るなど)ハードウェアのステータス情報を取得できるが、それはグローバルなデータであると同時に揮発性である。それでも静的変数やグローバルなデータを普通に使うことは勧められず、不可分なリード・モディファイ・ライト命令を使ってそのような変数にアクセスするべきである(そのような不可分命令を実行中は割り込みやシグナルが処理を中断できない)。 リエントラントなコードは自分のコードを書き換えない。 OSによってはプロセスが自身のコードを書きかえることを許している。その理由は様々だが(例えば、BitBltでグラフィックスを高速化するためなど)、呼び出す度にコードが変化している可能性があるなら、リエントラント性との両立は難しい。 しかし、呼び出す度にメモリ上の新たな場所にある機械語コードを実行するなら、コードを書き換えても他の呼び出しには影響せず、両立は不可能ではない。 リエントラントなコードは、リエントラントでないプログラムやサブルーチンを呼び出さない。 ユーザー/オブジェクト/プロセスに複数レベルの優先度があることや、マルチプロセッシングがリエントラントなコードの制御を複雑化させている。リエントラントな設計においては、あらゆるアクセスに絶えず注意することが重要であり、ルーチン内の副作用に注意することが重要である。
※この「リエントラント性の原則」の解説は、「リエントラント」の解説の一部です。
「リエントラント性の原則」を含む「リエントラント」の記事については、「リエントラント」の概要を参照ください。
- リエントラント性の原則のページへのリンク