バックグラウンドプロセスとは、ユーザーの介入なしに舞台裏(つまりバックグラウンド)で実行されるコンピュータプロセスです。 [1]これらのプロセスの一般的なタスクには、ログ記録、システム監視、スケジュール設定、 [2]ユーザー通知などがあります。 [3]
Windowsシステムでは、バックグラウンド プロセスは、ユーザー インターフェイスを作成しないコンピュータ プログラムか、Windows サービスのいずれかです。前者は、他のプログラムと同じように、たとえば [スタート] メニューから起動されます。一方、Windows サービスは、サービス コントロール マネージャーによって起動されます。Windows Vista以降では、別のセッションで実行されます。[引用が必要]
UnixまたはUnix ライクなシステムでは、バックグラウンド プロセスまたはジョブは、プロセス グループID が端末グループ ID (TGID) と異なるものとしてさらに識別されます。(プロセスの TGID は、端末を開いたプロセス グループ リーダーのプロセス ID であり、通常はログイン シェルです。TGID はプロセス グループの制御端末を識別します。) このタイプのプロセスは、親端末からキーボード信号を受信することができず、通常はその端末に出力を送信しません。[4]このより技術的な定義では、プロセスがユーザー介入を受信できるかどうかを区別しません。バックグラウンド プロセスは通常、リソースをほとんど必要としない目的で使用されますが、任意のプロセスをバックグラウンドで実行することができ、そのようなプロセスは上記の例外を除いて他のプロセスと同様に動作します。[1]
Windows サービス
Windows NTファミリーのオペレーティングシステムでは、Windowsサービスは専用のバックグラウンドプロセスです。[5] Windowsサービスは、Windowsサービスの管理を担当するコンポーネントであるサービスコントロールマネージャーのインターフェイスルールとプロトコルに準拠する必要があります。[6]
Windows サービスは、オペレーティング システムの起動時に開始し、Windows が稼働している間はバックグラウンドで実行するように構成できます。また、手動で開始したり、イベントによって開始したりすることもできます。Windows NT オペレーティング システムには、、およびの3 つのユーザー アカウントのコンテキストで実行される多数のサービスが含まれています。これらの Windows コンポーネントは、多くの場合、Windows サービスのホスト プロセス: svchost.exeに関連付けられています。Windows サービスは専用のユーザー アカウントのコンテキストで動作するため、ユーザーがログオンしていないときでも動作できます。
SystemNetwork ServiceLocal Service
Windows Vistaより前では、「対話型サービス」としてインストールされたサービスは、Windowsデスクトップと対話し、グラフィカル ユーザー インターフェイスを表示できました。しかし、Windows Vista では、Windows サービス強化の結果、対話型サービスは非推奨となり、正常に動作しなくなりました。[7] [8]
Windows サービスを管理する主な手段は次の 3 つです。
- Microsoft 管理コンソールのサービス スナップイン
sc.exe- Windows PowerShell
デーモン
デーモンは、バックグラウンドで継続的に実行され、イベントが発生するか条件が満たされるのを待つように設計されたバックグラウンドプロセスの一種です。[9]デーモン機能 で起動されると、デーモンは親端末から切り離されます。[10]
Unix のバックグラウンドジョブ
Unix のコマンドラインから、"&" 演算子を使用してバックグラウンド プロセスを起動できます。bgコマンドは、一時停止されたジョブを再開し ( SIGCONTを送信)、バックグラウンドで実行します。fg コマンドを使用すると、標準入力が親端末に再接続され、フォアグラウンドになります。jobs コマンドは、現在の端末に関連付けられているすべてのプロセスを一覧表示し、バックグラウンド プロセスをフォアグラウンドにするために使用できます。[4] [11]
明示的なログアウトまたはネットワークの切断によってログイン セッションが終了すると、デフォルトで、バックグラウンド プロセスを含むすべてのプロセスが終了し、孤立プロセスになるのを防ぎます。具体的には、ユーザーが起動シェル プロセスを終了すると、シャットダウンの一環として、そのプロセスのすべてのジョブにハングアップ信号 ( SIGHUP )が送信され、対応するプロセス グループ内のすべてのプロセスが終了します。プロセスの実行を継続するには、セッションを終了しないか、プロセスを終了せずにセッションを終了することができます。端末マルチプレクサを使用すると、セッションを実行したまま仮想端末を切り離して、プロセスをセッションの子プロセスとして実行したままにすることができます。ユーザーは後でセッションに再接続できます。または、nohupコマンド (プロセスに SIGHUP を無視するように指示する) でプロセスを開始するか、後でジョブ ID を指定して実行することで、終了を防ぐことができます。これにより、ジョブがジョブ リストから完全に削除されるか、単に SIGHUP が送信されなくなります。後者の場合、セッションが終了すると、子プロセスは SIGHUP が送信されないか無視されるため終了されず、孤立プロセスになります。その後、子プロセスはinitプロセスに引き継がれ (カーネルは init プロセスを親として設定します)、セッションなしで実行を継続します。このプロセスはデーモンと呼ばれます。
disown
例
Unix上で実行されているこの例では、sleepユーティリティがバックグラウンドで起動されています。その後、psツールがフォアグラウンドで実行され、以下のテキストを出力しました。どちらもシェルから起動されました。[12]
PID TT STAT TIME コマンド
54659 10 S 0 :00.06 su ( zsh ) 54703 10 IN 0 :00.00 - sleep 1000 54852 10 R+ 0 :00.00 - ps -U botty -axd
スマートフォン
スマートフォンやPDAのオペレーティングシステムの最近のバージョンには、バックグラウンドプロセスを開始する機能が含まれているものが多くあります。ハードウェアの制限により、モバイルオペレーティングシステム上のバックグラウンドプロセスは、特定のタスクや消費レベルに制限されることがよくあります。Androidでは、バックグラウンドプロセスのCPU使用率は5〜10%に制限される場合があります。[13] AppleのiOS上のアプリケーションは、バックグラウンドで実行されている間、機能のサブセットに制限されます。[3] iOSとAndroidの両方で、バックグラウンドプロセスがメモリを大量に使用している場合、システムによって強制終了されることがあります。[3] [13]
参照
参考文献
- ^ ab 「オペレーティングシステムとは? プロセス」。Linuxチュートリアル。2020年8月15日時点のオリジナルよりアーカイブ。2010年11月14日閲覧。
- ^ Michele Cyran (1993 年 12 月)。Oracle Database Concepts, 10g Release 1。Oracle Corporation。B10743-01。2013 年 3 月 2 日時点のオリジナルよりアーカイブ。2010年11 月 12 日閲覧。
- ^ abc Jesus Diaz (2010年4月8日). 「新しいiPhone OS 4.0でのマルチタスクの仕組み」Gizmodo. 2010年11月2日時点のオリジナルよりアーカイブ。 2010年11月14日閲覧。
- ^ ab GNU Bash リファレンスマニュアル、第 4.1 版、ジョブ制御の基礎。Free Software Foundation, Inc. 2009 年 12 月 23 日。2010 年 12 月 3 日時点のオリジナルよりアーカイブ。2010年11 月 10 日に閲覧。
- ^ 「サービスの概要」。Microsoft TechNet。Microsoft。2013年3月 29 日閲覧。
- ^ 「サービス」。Microsoft Developer Network。Microsoft。2013年3 月 29 日閲覧。
- ^ 「Windows Vista 用の新しい Elevation PowerToys」。TechNet Magazine。Microsoft。2008年 6 月。2013年6 月 21 日閲覧。サービス CmdAsSystem は対話型として構成されていますが、そのサポートは廃止される予定です。サービスは正常に
機能しない可能性があります。問題は、このスクリプトが対話型サービスを作成して開始しようとすることです。対話型サービスは、Windows Vista のセッション 0 分離により正常に機能しません。
- ^ 「Windows のサービス」。MSDN。Microsoft。2010年 10 月 18 日。2013年6月 21 日閲覧。
- ^ Eric S. Raymond (2004 年 10 月 1 日). The Jargon File、バージョン 4.4.8、「デーモン」。2010 年 11 月 3 日時点のオリジナルよりアーカイブ。2010年11 月 10 日閲覧。
- ^ raf (2010年6月12日). Linux ユーザーズマニュアル、「デーモン」。 2010年10月21日時点のオリジナルよりアーカイブ。 2010年11月10日閲覧。
- ^ Åke Nordlund (2007年2月7日). 「Unix/Linuxのバックグラウンドプロセス」。2012年2月13日時点のオリジナルよりアーカイブ。2010年11月10日閲覧。
- ^ 「POSIX "ps"」。IEEE Std 1003.1、2004年版。
- ^ ab Matt Buchanan (2010-04-29). 「Giz Explains: How Multitasking Works on a Phone」Gizmodo. 2010年10月17日時点のオリジナルよりアーカイブ。 2010年11月14日閲覧。
