以下は、バックグラウンドプロセスの一般的な定義です。
「バックグラウンドプロセスは、ユーザー入力なしで実行されるプログラムです。ユーザーがフォアグラウンドプロセスと対話すると、マルチタスクオペレーティングシステム(Linuxなど)で複数のバックグラウンドプロセスが実行される可能性があります。同じ目的で使用されます。ユーザーの入力はまったく必要ありません。ユーザーが現在のフォアグラウンドで実行されているプログラムで、他のプロセスは一時的にバックグラウンドにあるので、他のプロセスはアクティブになるまでスリープしてスワップスペースを占めています。で作成します。
この定義が与えられた場合、apache2のようなプロセスは端末のユーザー入力と対話しないので、バックグラウンドプロセスにはなりませんか?システムで実行されているほとんどのプロセスは端末でユーザー入力を処理しないため、ほとんどのプロセスバックグラウンドプロセスを考慮しませんか?奇妙なことに、私は個人的にapache2をバックグラウンドプロセスとして考えていません。これは、ユーザーがhttpリクエスト(ただの端末ではない)を介してapache2と対話するためです。
答え1
「デーモン」には、一般的な定義と正確なUNIX固有の定義という2つの一般的な定義があります。
広く言うと、コンソールに座っているユーザーと対話しないすべてのプロセスを「バックグラウンドプロセス」と呼ぶことができます。この意味で、Apacheはバックグラウンドプロセスです。
Unixの用語では、「バックグラウンドプロセス」は正確な定義を持っています。 ㅏバックステージコース端末で開始されたが現在端末との対話が禁止されているプロセスです。 (プロセスグループを考慮しないことで単純化しています。)通常、シェルでバックグラウンドジョブを開始してバックグラウンドプロセスを取得します。
$ myprogram &
[1] 12345
$
または、プログラムを起動して一時停止し、バックグラウンドで実行を続けます。
$ myprogram
^Z
[1]+ Stopped myprogram
$ bg
[1]+ myprogram &
$
なしのプログラムを起動すると、&
フォアグラウンドで実行されます。フォアグラウンドには1つのプロセスしかありません。特定の端末で一度。 (またはより一般的には、フォアグラウンドプロセスが一部のサブプロセスを開始する場合は単一のプロセスグループです。)シェル組み込みコマンドは、フォアグラウンドのプロセスをbg
変更fg
します。プロセスがバックグラウンドにあるときに端末に読み書きする場合SIGTTINまたはSIGTTOUT信号で停止。
ApacheはHTTPを介してユーザーと対話するため、バックグラウンドプロセスではないという直感を発見しました。 Apacheはユーザーと対話しません。つまり、リモートWebブラウザ(ユーザーと対話)または自動化クライアント(ユーザーと対話しない)と対話します。対話型プロセスと対話するすべてのプロセスを対話型プロセスと見なすと、すべてのプロセスは対話型であるため、役に立たない概念になります。
引用した定義は、バックグラウンドプロセスをアイドルプロセスと統合します。バックグラウンドプロセスがフォアグラウンドプロセスよりも多くの時間をスリープモードに切り替えたり交換したりする理由はありません。たとえば、バックグラウンドプロセスはいくつかの重い計算を実行できます。逆に、ユーザーがコンソールを離れて他のアクティブプロセスがある場合は、フォアグラウンドプロセスを置き換えることができます。
答え2
フォアグラウンドプロセスにはユーザー対話は必要ありません。あなたはできます
cp very_large_file destination
コピーが完了するまで端末はブロックされ、ユーザー操作なしでフォアグラウンドプロセスとして処理されます。ここで重要なのは、プロセスが彫刻終了するまで別のプロセスを実行します。
フォアグラウンドプロセスをバックグラウンドプロセスに切り替えるには2つの方法があります。
&1- コマンドラインの末尾にアンパサンド( )を追加します。
cp very_large_file destination &
2- フォアグラウンドプロセスを停止し、バックグラウンドに置きます。
cp very_large_file destination
CTRL+Z
bg
これはapache2
間違いなくバックグラウンドプロセスと見なされます。はい、http要求を介して対話できますが、これらの要求を待っているポート80(デフォルト)のみを受信します。ユーザーが要求するまでシステムをブロックしません。
ほとんどのプロセスがバックグラウンドプロセスと見なされるのに問題を提起するのはなぜですか?これは、「マルチタスクオペレーティングシステム」では実際に正常な現象です。