デーモン、サービス、プロセスの技術的な違いは何ですか?


121

Ubuntuで実行されているデーモン、プロセス、およびサービスの動作の違いは何ですか。


3
これはStackOverflowに適しています。StackOverflowでは既に便利な質問と回答があります
トム・ブロスマン

5
@Tom:いいえ、そのSE投稿はサービスとは何も答えていません。そして、ここでの全体的な答えはより複雑です。
マッドスキャーン14

3
@TomBrossman、リンクした投稿はサービスについて何も語りません。
ペース14

4
StackOverflowはコーディングに関するものです。デーモンは、ここよりも尋ねるには良い場所はありません、Unixのものです
Mr.Robot

1
え?この質問はどのように閉じられますか?
ジェイコブヴライム

回答:


123

デーモン -デーモンは、ディスクおよび実行モニターhttp://www.takeourword.com/TOW146/page4.html)の略ではありませ。これらはバックグラウンドで実行されるプロセスであり、インタラクティブではありません。制御端末はありません。

事前定義された時間に、または特定のイベントに応じて特定のアクションを実行します。* NIXでは、デーモンの名前はdで終わります。

サービス -Windowsでは、デーモンはサービスと呼ばれます

* NIXにserviceという名前のコマンドがある理由を知りたい場合は、initスクリプトを実行するためだけに使用されます(初期化scriptrunlevelの省略形)。

プロセス -プロセスは実行中のプログラムです。特定の時点では、実行中スリープ中、またはゾンビのいずれかです(プロセスは完了していますが、親プロセスが戻り値を取得するのを待っています)。

ソースと詳細情報


2
Linuxのプロセスにはさらにいくつかの状態があります。ここに優れた図を示します。linux
Dietrich Epp

このUbuntuの公式ドキュメンテーションは「サービス」について語っていますが、彼らはWindowsについて語っていないと思います!だから私はデーモンとしてそれを読むべきですか?help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern 14

1
実際、OPはUbuntu内のサービスについて質問していますが、この回答はWindows上のサービスについて説明しています。したがって、明らかにAnonの答えは正しいもの
です。マッズスケーン

た内容に応じて、serverfault.com/questions/129055/...デーモンとサービスが同じではない
Mr.Robot

41
  1. デーモンは、バックグラウンド、非対話型であるプログラム。対話型ユーザーのキーボードとディスプレイから切り離されます。バックグラウンドプログラムを表すデーモンという言葉は、Unix文化に由来します。それは普遍的ではありません。

  2. サービスは、あるプログラム(通常はネットワークを介して)いくつかのプロセス間通信メカニズムを介して他のプログラムからの要求に応答します。サービスは、サーバーが提供するものです。たとえば、NFSポートマッピングサービスは、portmapdデーモンとして実装される別個のportmapサービスとして提供されます。

    サービスはデーモンである必要はありませんが、通常はデーモンです。GUIを使用するユーザーアプリケーションには、たとえばファイル共有アプリケーションなどのサービスを組み込むことができます。別の例は、X Windowサービスです。これは、バックグラウンドではありません。画面、キーボード、およびポインティングデバイスを引き継ぎます。ネットワーク上の他の場所にある可能性のあるアプリケーション(ウィンドウの作成や操作など)からの要求に応答するため、サービスです。ただし、Xサービスはすべてのキーストロークとマウスの動きにも応答します。

  3. プロセスは、リソースの共有セットと一緒に実行される1つ以上のスレッドであり、最も重要なものはアドレス空間とオープンファイル記述子です。プロセスは、これらの実行スレッド用の環境を作成します。これらの環境は、マシン全体を所有しているように見えます。それは仮想マシンです。

    プロセス内では、他のプロセスおよびカーネルのリソースは不可視であり、直接アクセスできません(少なくともユーザー空間コードを実行しているスレッドからは)。たとえば、別のプロセスの開いているファイル、またはそれらのメモリ空間を参照する方法はありません。それはあたかもそれらのものが存在しないかのようです。

    プロセス、およびカーネルと他のプロセスとの関係は、おそらくUnixライクなオペレーティングシステムで最も重要な抽象化を構成します。システムのリソースはプロセスに区分されており、ほぼすべてが1つのプロセスまたは別のプロセス内で発生していると理解されています。


システムのRAMを直接照会して、他のプロセスのメモリを取得できませんでしたか?
ペース14

1
通常、プロセスはシステムのRAMを直接照会することはできません。最新のOSは仮想アドレス空間(en.wikipedia.org/wiki/Virtual_address_space)を使用します。つまり、各プロセスは、OSがアクセス可能なものを正確に制御するメモリの偽のビューとしか対話できません。
akroy

「プロセスは、これらの実行スレッドのための環境を作成します。これらのスレッドは、マシン全体を所有しているように見えます。仮想マシンです。」それを置く非常に素晴らしい方法、そのようにはっきりとそれについて決して考えなかった。しかし、もちろん抽象化は漏れています。同様に、時間を測定できるプロセス(プロセッサを介して実行することもできます)は、マシン上に単独ではないことに気付くことがあります。そしてもちろん、OSは他のプロセスを列挙するメカニズムを提供します。
masterxilo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.