タスクとプロセスの違いは何ですか?

タスクとプロセスの違いは何ですか?

「作業」と「プロセス」の違いは何ですか?

答え1

プロセスは、独自のアドレス空間を持つ実行中のプログラムです。

タスクはシェルで使用される概念です。インタラクティブで始まるすべての分離されていないプログラム(つまり、デーモンではない)はアクションです。インタラクティブプログラムを実行している場合は、をCtrlZ押して一時停止できます。その後、フォアグラウンド(有効fg)またはバックグラウンド(有効)からbg再起動できます。

プログラムが停止中またはバックグラウンドで実行されている間に他のプログラムを起動できます。これにより、2 つのジョブが実行されます。以下のように「&」を追加して、バックグラウンドで実行されているプログラムを起動することもできますprogram &。プログラムがバックグラウンドジョブになります。実行中のすべてのジョブを一覧表示するには、を使用できますjobs

役職の詳細については、次をご覧ください。このセクションのBashのマニュアルページの内容。

答え2

UNIXには、「プロセス」、「プロセスグループ」、および「セッション」という別々の概念があります。

ログイン時に取得する各シェルは、独自の新しいセッションとプロセスグループのリーダーになり、端末の制御プロセスグループを独自に設定します。

シェルは、現在のセッションで開始する各「ジョブ」のプロセスグループを作成し、開始する各プロセスを適切なプロセスグループに配置します。たとえば、ls | head2つのプロセスで構成されるパイプラインがある場合、シェルはそれを単一のタスクとして処理し、1つの新しいプロセスグループに属します。

プロセスは、実行スレッドとアドレス空間やファイル記述子テーブルなどの他のコンテキストの集まりです。プロセスは別のプロセスを開始できます。他の操作を行わない限り、これらの新しいプロセスは親プロセスと同じプロセスグループに属します。各プロセスには、親プロセスと同じ方法で開始される「制御端末」があります。

シェルには「フォアグラウンド」アクションと「バックグラウンド」アクションという概念があります。フォアグラウンドジョブは端末を制御できるプロセスグループであり、バックグラウンドジョブは端末を制御できないプロセスグループです。

各端末にはフォアグラウンドプロセスグループがあります。ジョブがフォアグラウンドにインポートされると、シェルはそれを端末のフォアグラウンドプロセスグループに設定します。タスクがバックグラウンドに配置されると、シェルは端末のフォアグラウンドプロセスグループを他のプロセスグループまたはそれ自体に設定します。

プロセスがフォアグラウンド・プロセス・グループにある場合、制御端末を読み書きすることができます。それ以外の場合は、それぞれ端末の読み書き試行を受信し、信号を送信しますSIGTTINSIGTTOUデフォルトでは、これらの信号はプロセスを一時停止しますが、ほとんどのシェルはSIGTTOUバックグラウンド操作が中断せずに端末に書き込むことができるように信号をマスクします。

答え3

タスクとプロセスは互いに関連していますが、概念は異なります。

  • プロセスは、現在システムで実行されているプログラムのインスタンスです。独自のメモリスペース、ファイル記述子、および一意のプロセスID(PID)があります。

  • ジョブは、ユーザーが実行したい作業単位で、1つ以上のプロセスで構成でき、ジョブ制御コマンドを使用して管理できます。ジョブには独自のJID(ジョブID)もあります。

答え4

上記の定義は非常に技術的ですが、オペレータは日常的な説明をさらに望むかもしれません。仕事は予定された過程だと思います。一般的なプロセスを扱うときは必ずしもスケジューリングという概念があるわけではありませんが、「作業」という単語を使用するときは常にスケジューリングされるかループのように繰り返されるという意味でワーカーと同じです。

関連情報