コンピュータサイエンス

プロセスとスレッドについて学ぼう

プログラム プロセスを理解するためには、プログラムとは何かを知っておく必要があります。 プログラムとは、進行手順や順序を明示した文書であり、コンピューターではハードディスク内に保存されています。 プロセス プロセスは実行中のプログラムのことで、ディスクからメモリにロードされてCPUの割り当てを受けることができます。 プロセスはプログラムの実行に必要なデータやメモリなどの資源、そしてスレッドで構成されています。 プロセスが割り当てられるOSリソースの例 CPU時間 CPU時間はプロセスが実際にCPUを使用する時間を意味します。CPU時間は大きくユーザーCPU時間とカーネルCPU時間に分けられます。 ユーザーCPU時間: ユーザーモードで実行される時間 カーネルCPU時間: カーネルモードで実行される時間 カーネル: オペレーティングシステムの核心部分で、ハードウェアとアプリケーションをつなぐ役割を果たす。 メモリ Code: プログラムコードが保存される領域 実行されるコードそのものを指します。ここでコードとは、プログラマーが書いたコードではなく、コンパイラーが機械語に翻訳したコードを意味します。 Data: グローバル変数が保存される領域 グローバル変数はプログラム全体で使用される変数を意味します。グローバル変数はプログラムのデータ領域に保存されます。 Stack: ローカル変数が保存される領域 ローカル変数は関数内で宣言され、関数が呼び出されたときに生成され、関数が終了すると消滅する変数を意味します。ローカル変数はスタック領域に保存されます。 Heap: 動的割り当て変数が保存される領域 ユーザーが直接管理できる変数を意味します。動的割り当て変数はヒープ領域に保存されます。 ファイルおよびI/Oデバイス プロセスは実行中に必要なデータをメモリにロードし、実行結果をメモリからファイルやI/Oデバイスに書き込むことがあります。 プロセス間のメモリ共有 プロセスはそれぞれ独立したメモリ領域を割り当てられ使用します。そのため、プロセスは他のプロセスのメモリに直接アクセスすることはできません。 したがって、プロセス間では適切な通信方法を使用する必要があります。 プロセス間の通信方法 パイプ パイプは、一方のプロセスが他のプロセスからデータを受け取ることを可能にします。パイプは一方向の通信のみ可能です。 メッセージキュー メッセージキューは、データをメッセージ単位でやり取りできるようにします。メッセージキューは双方向の通信が可能です。 共有メモリ 共有メモリは、2つのプロセスが共にアクセス可能なメモリを使用する方法です。共有メモリは2つのプロセスが同時にアクセスできるため、同期の問題が発生することがあります。 ソケット ソケットはネットワークを通じてデータのやり取りを可能にします。ソケットは双方向の通信が可能です。 シグナル シグナルはプロセスにどのイベントが発生したかを通知します。プロセスはシグナルを受け取るとそのイベントを処理します。 ファイル ファイルはハードディスクに保存されたデータを読み書きできるようにします。ファイルは双方向の通信が可能です。 プロセスの状態 プロセスは状態が変わりながら実行されます。プロセスは次のような状態を持ちます。

もっと読む →

2024年1月4日