デーモン(コンピューティング)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
デーモンである一部のLinux デスクトップ環境のコンポーネントには、 D-BusNetworkManager(ここではunetworkと呼ばれます)、PulseAudiousound)、およびAvahiが含まれます。

マルチタスクコンピュータオペレーティングシステムデーモン/ ˈdiːmən /または/ ˈdeɪmən / [ 1]対話型ユーザーの直接制御下ではなく、バックグラウンドプロセスとして実行されるコンピュータプログラムです従来、デーモンのプロセス名は、プロセスが実際にはデーモンであることを明確にし、デーモンと通常のコンピュータプログラムを区別するために、文字dで終わります。たとえば、syslogdはシステムロギング機能を実装するデーモンであり、sshdは着信SSH接続を提供するデーモンです。

Unix環境では、デーモンのプロセスは、常にではありませんが、多くの場合、initプロセスです。デーモンは通常、子プロセスをフォークしてすぐに終了するプロセスによって作成され、initに子プロセスを採用させるか、initプロセスがデーモンを直接起動します。さらに、フォークして終了することによって起動されるデーモンは、通常、プロセスを制御端末(tty)から分離するなど、他の操作を実行する必要があります。このような手順は、Unix のdaemon(3)などのさまざまな便利なルーチンで実装されることがよくあります。

多くの場合、システムは起動時にデーモンを起動し、ネットワーク要求、ハードウェアアクティビティ、またはその他のプログラムに何らかのタスクを実行して応答します。cronなどのデーモンも、スケジュールされた時間に定義されたタスクを実行する場合があります。

用語

この用語は、MITのProjectMACのプログラマーによって造られました。1963年にProjectMACに取り組んだFernandoJ.Corbatóによると、彼のチームは、分子の分類に役立つ物理学と熱力学の架空のエージェントであるマクスウェルの悪魔に触発されたデーモンという用語を最初に使用しました。デーモンという言葉を使用して、システムの雑用を実行するためにたゆまぬ努力をしたバックグラウンドプロセスを説明します。」[2] Unixシステムはこの用語を継承しました。マクスウェルの悪魔は、ギリシャ神話がデーモンをバックグラウンドで働いている超自然的なものとして解釈していることと一致しています。

一般的な意味で、デーモンはギリシャ語のδαίμωνに由来する「悪魔」という言葉の古い形式です。Unixシステム管理ハンドブック EviNemethは、デーモンについて次のように述べています。[3]

多くの人が「デーモン」という言葉を「悪魔」という言葉と同一視しており、UNIXと冥界との間 のある種の悪魔的なつながりを暗示しています。これはひどい誤解です。「デーモン」は実際にははるかに古い形式の「デーモン」です。デーモンは善悪に特に偏見を持っていませんが、むしろ人の性格や性格を定義するのに役立ちます。古代ギリシャ人「個人的なデーモン」の概念は、現代の「守護天使」の概念に似ていました。幸福は、親切な精神によって助けられたり保護されたりする状態です。原則として、UNIXシステムにはデーモンとデーモンの両方が蔓延しているようです。

神話の象徴性のさらなる特徴は、デーモンはまだ見えていないものであり、常に存在し、その意志を働かせているということです。プラトンに起因するテアゲスは、ソクラテスは彼自身の個人的なデーモンを道徳的良心の現代的な概念のようなものであると説明しています。それが聞こえたとき、私がやろうとしていることから私を思いとどまらせ、決して私を促さない声」。[要出典]

現代の使用法では、デーモンという単語は/ ˈdiːmən / DEE - mən発音されますコンピュータソフトウェアのコンテキストでは、元の発音/ ˈdiːmən /、一部のスピーカーでは/ ˈdeɪmən / DAY - mənドリフトます。[1]

デーモンの代替用語は、サービス(Windows、Windows NT以降、および後でLinuxでも使用)、開始タスク(IBM z / OS)、[4]、およびゴーストジョブ(XDS UTS)です。

この用語がコンピューターで使用されるようになった後、Disk AndExecutionMONitorのバックロニムとして合理化されました。[5]

コンピュータネットワークに接続するデーモンは、ネットワークサービスの例です。

実装

Unixライクなシステム

厳密に技術的な意味では、Unixライクなシステムプロセスは、その親プロセスが終了し、デーモンにその親プロセスとしてinitプロセス(プロセス番号1)が割り当てられ、制御端末がない場合のデーモンです。ただし、より一般的には、デーモンは、initプロセスの子であるかどうかに関係なく、任意のバックグラウンドプロセスである可能性があります。

Unixライクなシステムでは、プロセスがコマンドラインから、またはinitスクリプトやSystemStarterスクリプトなどのスタートアップスクリプトから開始されたときに、プロセスがデーモンになるための一般的な方法には、次のものが含まれます。

  • オプションで、環境から不要な変数を削除します。
  • フォークして終了することにより、バックグラウンドタスクとして実行します(フォークの親の「半分」で)。これにより、デーモンの親(シェルまたは起動プロセス)が終了通知を受信し、通常の実行を続行できます。
  • 呼び出しセッションからの切り離し。通常は1回の操作で実行されますsetsid()
    • 制御ttyからの分離。
    • 新しいセッションを作成し、そのセッションのセッションリーダーになります。
    • プロセスグループのリーダーになる。
  • デーモンが誤って新しい制御ttyを取得しないようにしたい場合(制御ttyのないセッションリーダーが空きttyを開いたときに発生します)、デーモンはフォークして再び終了する場合があります。これは、新しいセッションのセッションリーダーではなくなり、制御ttyを取得できないことを意味します。
  • ルートディレクトリ/)を現在の作業ディレクトリとして設定し、プロセスがマウントされたファイルシステム上にある可能性のあるディレクトリを使用しないようにします(マウント解除できるようにします)。
  • umaskを0に変更してopen()、、、creat()およびその他のオペレーティングシステムコールが独自のパーミッションマスクを提供できるようにし、呼び出し元のumaskに依存しないようにします。
  • 標準ストリームstdinstdout、およびstderr)のファイル記述子0、1、および2を/ dev / nullまたはログファイルにリダイレクトし、親プロセスから継承された他のすべてのファイル記述子を閉じます。

プロセスがinetdlaunchdsystemdなどのスーパーサーバーデーモンによって開始された場合、スーパーサーバーデーモンはプロセスに対してこれらの機能を実行します[6] [7] [8]古いスタイルのデーモンを除き、systemdで実行するように変換され、 Type =forking [8]およびinetdで「マルチスレッド」データグラムサーバーとして指定されます[6]

MS-DOS

Microsoft DOS環境では、デーモンのようなプログラムは、terminate and stay resident(TSR)ソフトウェアとして実装されていました。

WindowsNT

Microsoft Windows NTシステムでは、 Windowsサービスと呼ばれるプログラムがデーモンの機能を実行します。これらはプロセスとして実行され、通常はモニター、キーボード、およびマウスと相互作用せず、起動時にオペレーティングシステムによって起動される場合があります。Windows 2000以降のバージョンでは、Windowsサービスは、コントロールパネル、専用の制御/構成プログラム、サービスコントロールマネージャーのサービスコントローラーコンポーネント(scコマンド)、netstartおよびnetstopコマンドを使用して構成され、手動で開始および停止されます。 PowerShellスクリプトシステム

ただし、サービスだけでなく、どのWindowsアプリケーションでもデーモンの役割を実行できます。また、一部のWindowsデーモンには、通常のプロセスとして実行するオプションがあります。

クラシックMacOSおよびmacOS

従来のMacOSでは、オプションの機能とサービスは、オペレーティングシステムにパッチを適用した起動時にロードされたファイルによって提供されていました。これらは、システム拡張機能およびコントロールパネルとして知られていました。従来のMacOSの新しいバージョンは、本格的なフェイスレスバックグラウンドアプリケーション(バックグラウンドで実行される通常のアプリケーション)でこれらを拡張しました。ユーザーには、これらは依然として通常のシステム拡張として説明されていました。

UnixシステムであるmacOSはデーモンを使用します。macOSは、Windowsのようにデーモンにこの用語を使用するのではなく、 「サービス」メニューから選択した機能を実行するソフトウェアを指定するために「サービス」という用語を使用することに注意してください。

も参照してください

参照

  1. ^ a b エリック・S・レイモンド「デーモン」ジャーゴンファイル2008年10月22日取得
  2. ^ 「デーモンという言葉の起源」
  3. ^ 「BSDデーモン」Freebsd.org 2008年11月15日取得
  4. ^ 「IBMナレッジセンター-z/OSの用語と略語の用語集」IBM
  5. ^ 「デーモンの定義」www.linfo.org
  6. ^ a b inetd(8)  –FreeBSD システムマネージャマニュアル
  7. ^ launchd.plist(5)  – ダーウィンmacOSファイルフォーマットマニュアル
  8. ^ ab " systemd.service "freedesktop.org 2012年8月25日取得

外部リンク