第5章 RHEL for Real Time プロセスおよびスレッド
オペレーティングシステムの RHEL for Real Time の主な要素は、最小の割り込みレイテンシーおよび最小のスレッドスイッチングレイテンシーです。すべてのプログラムはスレッドおよびプロセスを使用しますが、RHEL for Real Time は、標準の Red Hat Enterprise Linux とは異なる方法でそれらを処理します。
リアルタイムで並列処理を使用すると、タスクの実行およびレイテンシーの効率を高めることができます。並列処理とは、CPU のマルチコアインフラストラクチャーを使用して、複数のタスクまたは複数のサブタスクを同時に実行することです。
5.1. プロセス リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムのプロセスは、簡単に言えば、実行中のプログラムです。プロセスという用語は、複数のスレッドを含む可能性のある独立したアドレス空間を指します。あるアドレス空間内で実行中の 1 つ以上のプロセスの概念が開発されると、Linux は別のプロセスでアドレス空間を共有するプロセス構造に移行していました。これは、プロセスデータ構造が小さいと機能します。
UNIX® スタイルのプロセス設定には、次のものが含まれます。
- 仮想メモリーのアドレスマッピング
- 実行コンテキスト (PC、スタック、レジスター)
- 状態およびアカウント情報
リアルタイムでは、各プロセスは、親スレッドと呼ばれることが多い単一のスレッドで始まります。fork() システムコールを使用して、親スレッドから追加のスレッドを作成できます。fork() は、新しいプロセス ID を除いて、親プロセスと同じ新しい子プロセスを作成します。子プロセスは、作成プロセスとは独立して実行します。親プロセスおよび子プロセスは同時に実行できます。fork() と exec() のシステムコールの違いは、fork() が親プロセスのコピーである新しいプロセスを開始し、exec() が現在のプロセスイメージを新しいプロセスイメージに置き換えることです。
リアルタイムでは、fork() システムコールが成功すると、子プロセスのプロセス ID が返され、親プロセスはゼロ以外の値を返します。エラーの場合は、エラー番号を返します。