5.2. Threads
リアルタイムでは、プロセス内に複数のスレッドが存在する可能性があります。プロセスのすべてのスレッドは、その仮想アドレス空間およびシステムリソースを共有します。スレッドは、以下を含むスケジュール可能なエンティティーです。
- プログラムカウンター (PC)
- レジスターコンテキスト
- スタックポインター
リアルタイムにおける並列処理を作成するための潜在的なメカニズムは次のとおりです。
-
fork()およびexec()関数呼び出しを使用して、新しいプロセスを作成します。fork()呼び出しは、呼び出されたプロセスの完全な複製を作成し、一意のプロセス識別子を持ちます。 -
Posix スレッド (
pthreads) API を使用して、実行中のプロセス内に新しいスレッドを作成します。
リアルタイムスレッドをフォークする前に、コンポーネントの相互作用レベルを評価する必要があります。新しいアドレス空間を作成し、それを新しいプロセスとして実行することは、コンポーネントが互いに独立している場合、または相互作用が少ない場合に役立ちます。コンポーネントがデータを共有したり頻繁に通信したりする必要がある場合は、1 つのアドレス空間内でスレッドを実行する方が効率的です。
リアルタイムでは、fork() システムコールは、成功すると値 0 を返します。エラーの場合は、エラー番号を返します。