Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> Linuxの学習プロセス、スレッドとプログラム

Linuxの学習プロセス、スレッドとプログラム

  

1:プログラムとプロセスの違い

プロセスの出現はもともとUNIXの下で、マルチユーザー、マルチタスクのオペレーティングシステム環境、アプリケーションを表すために使用されていましたメモリ環境における基本実行単位の概念プロセスは、UNIXオペレーティングシステム環境の最も基本的な概念であり、システムリソース割り当ての最小単位です。 UNIXオペレーティングシステムでのユーザー管理とリソース割り当ては、ほとんどすべてアプリケーションプロセスの制御を通じてオペレーティングシステムによって実現されます。

c c ++ javaなどの言語で書かれたソースプログラムが、対応するコンパイラによって実行可能ファイルにコンパイルされると、実行のためにコンピュータプロセッサに送信され、動作状態はプロセスと呼ばれます。このプロセスは、アプリケーションの実行プロセスとしてユーザーに表示され、オペレーティングシステムの観点から見ると、オペレーティングシステムによって割り当てられるメモリ、CPUタイムスライスなどのリソースの基本単位、および実行中のプログラムに提供される実行環境です。プロセスとアプリケーションの違いは、アプリケーションがコンピュータのハードディスクなどの記憶領域に静的ファイルとして格納され、プロセスが動的条件下でオペレーティングシステムによって維持されるシステムリソース管理エンティティであることです。

プロセスの概念とプログラムの概念の最大の違いは次のとおりです。

1:プロセスは動的であり、プログラムは静的です

2:プロセスには一定の寿命があります期間、およびプログラムは指示のコレクションです、それ自体は「スポーツ」の意味を持っていません。プロセスに組み込まれていないプログラムは、独立したオペレーティングシステムとして認識できません。

3:プロセスは1つのプログラムにしか対応できませんが、プログラムは複数のプロセスに対応できます。

2:Linux環境でのプロセス

Linuxのプロセス操作は主にプロセスの生成、プロセスの終了、そしてプロセス間のデータと制御の相互作用、つまりプロセス間通信と同期が行われます。

プロセス生成プロセス:


プロセスを生成する方法はたくさんありますが、基本的なプロセスは一貫しています。

(1)まず、親プロセスの環境設定をコピーします。

(2)カーネル内でプロセス構造を確立します。

(3)メンテナンスを容易にするために、構造をプロセスリストに挿入します。

(4)このプロセスにリソースを割り当てます。

(5)親プロセスのメモリマッピング情報をコピーします。

(6)ファイルディスクリプタとリンクポイントを管理します。

(7)親プロセスに通知します。

プロセスの終了方法:

プロセスを終了する方法は5つあります。

1:main関数から戻ります。

2:exit関数を呼び出します。

3:_exit関数を呼び出します。

4:中止を呼び出します。

5:シグナルで終了しました。

プロセスが終了すると、システムはメモリ、ファイル文字、カーネル構造などのプロセスのすべてのリソースを解放します。

注意:exitと_exitの違いは、exit関数がシステムがexitを呼び出す前にファイルのオープンをチェックし、ファイルバッファの内容をファイルに書き戻すことです。

プロセス間通信:

プロセス間で通信する方法はいくつかあります。パイプ、共有メモリ、メッセージキューが最も一般的な方法です。

1:パイプラインは、UNIXファミリで最も古いプロセス通信の方法で、2つのプロセス間にチャネルを確立するためにカーネルを使用しますファイルの操作と似ていますが、パイプの最後では読み取り専用です。もう一方の端は書くだけです。読み取りと書き込みを使用してプロセス間でデータをやり取りします。

2:共有メモリは、複数のプロセス間で共有されるメモリです。複数のプロセスが取得した共有メモリのアドレスを使用して、メモリ上で直接操作します。

3:メッセージはカーネル内にリンクリストを作成するためのもので、送信者は特定の識別子に従ってデータをカーネルに送信し、カーネルがそれをスケールに入れた後、受信者からの要求を待ちます。受信者が要求を送信した後、カーネルはメッセージをカーネルから削除し、メッセージの識別子に従って受信者に送信します。メッセージは完全な非同期操作です。

プロセス間の同期:

複数のプロセス間で完了タスクを記述する必要があるのは、サービス間に依存関係があることが多く、同期の問題が発生するためです。 Linuxでのプロセス同期モードは主にメッセージとセマフォを含みます。

セマフォは、複数のプロセスまたは共有リソース間の操作を保護するために使用される値の共有表現であり、プロセス同期の主な手段です。

3:プロセスとスレッド

スレッドとプロセスは、次のような違いと関連性を持つ、もう1つの意味のある概念です。

1:自動車に入ることは、オペレーティングシステムです。リソース割り当ての基本単位であるプロセスには、完全な仮想スペースがあります。システムリソースの割り当てが行われると、CPUリソースに加えて、独立したリソースがスレッドに割り当てられず、スレッドが必要とするリソースを共有する必要があります。

2:スレッドはプロセスの一部です表示用のスレッド割り当てがない場合、プロセスはシングルスレッドであると見なすことができ、スレッドがプロセス内で確立されている場合、システムはマルチスレッドであると見なすことができます。

3:マルチスレッドとマルチプロセスは異なりますが、どちらも並列完了関数ですが、メモリや複数のスレッド間の変数などのリソースは、複数のスレッド間で複数のメソッドで共有できます。マルチプロセスは異なり、プロセス間の共有方法は限られています。

4:プロセスにプロセス制御テーブルPCBがあり(これはPCBボードではありません)、システムはPCBを通してプロセスをスケジュールし、スレッドはスレッド制御テーブルTCBを持っています。しかし、TCBによって表される状態はPCBよりはるかに少ないです。

まとめると、上記の関係から、スレッドはプロセスの一部であり、プロセスはプログラムの一部であることがわかります。

スレッドとプログラムの比較、最もわかりやすいプロセスを見てきました。このリンクを参照すると、理解を深めることができます。http://blog.jobbole.com/38696/#jtss-tsina

Copyright © Windowsの知識 All Rights Reserved