4. プロセス生成

このレッスンでは、Linux システム上で新しいプロセスがどのように開始されるかという基本的な概念を探ります。このメカニズムを理解することは、オペレーティングシステムの内部動作についての洞察を与えてくれます。

fork と exec のモデル

Linux でのプロセス作成の主要なメカニズムは、既存のプロセスがforkシステムコールを使用して自身を複製することを含みます。fork呼び出しは、ほぼ同一の子プロセスを作成します。この新しい子プロセスは独自のプロセス ID(PID)を受け取り、元のプロセスはPPID(親プロセス ID)として識別される親になります。

fork の後、子プロセスは親と同じプログラムの実行を継続するか、より一般的にはexecveシステムコールを使用して新しいプログラムをロードし実行します。execve呼び出しは、プロセスのメモリ空間を新しいプログラムのものに効果的に置き換え、異なるタスクの開始を可能にします。この 2 段階の「fork-exec」モデルは、Linux でプロセスを作成する方法の基礎です。

親子関係の観察

psコマンドを使用して、この親子関係が実際にどのように機能しているかを観察できます。

ps l

lオプションは、実行中のプロセスに関する詳細を示す「ロングフォーマット」ビューを提供します。PPID(親プロセス ID)というラベルの付いた列が表示されます。現在のシェルのプロセス(例:bash)を見てください。ps lコマンドを実行すると、シェルのPIDps lプロセスのPPIDと一致することに気づくでしょう。これは、シェルがpsプロセスを作成するために自身を fork したためです。

init プロセス

すべてのプロセスが別のプロセスの子供であるならば、オリジナルの祖先が存在しなければなりません。それがinitプロセスです。システムが起動すると、カーネルはinitを最初のユーザー空間プロセスとして作成し、PID 1 を割り当てます。initプロセスは、他のすべてのプロセスの究極の親であり、システムを管理するためにルート権限で実行されます。システムがシャットダウンするまで終了することはできず、システムを稼働させ続ける多くのサービスを起動する責任があります。

ログインして学習進捗を保存

サインイン

演習

練習あるのみです!Linux プロセスとその管理に関する理解を深めるための実践的なラボを以下に示します。

  • Linux プロセスの管理と監視 - このラボでは、Linux システム上でプロセスを管理および監視するための必須スキルを学びます。フォアグラウンドプロセスとバックグラウンドプロセスの操作方法、psを使用した検査、topを使用したリソースの監視、reniceを使用した優先度の調整、killを使用した終了方法を探ります。

このラボは、プロセス ID、親プロセス ID、プロセス監視の概念を実際のシナリオで適用し、プロセス管理への自信を築くのに役立ちます。

クイズ

新しいプロセスを作成するシステムコールは何ですか?(単一の小文字の英単語で回答してください。)