Démon (software)

Z Multimediaexpo.cz

Démon je v informatice označení programu, který je spuštěn dlouhodobě a není v přímém kontaktu s uživatelem (na rozdíl od běžných aplikací). Démon je součástí multitaskingových operačních systémů a obvykle se spouští při startu. Jeho úkolem je vyčkávat v nečinnosti na nějakou událost, tu posléze obsloužit a zajišťovat tak různé úkoly bez nutnosti interakce s uživatelem (obsluha počítačové sítě, tiskové fronty a podobně).

Obsah

Původ označení

Termín byl zaveden programátory Projektu MAC na MIT. Jméno pochází z Maxwellova démona, imaginární postavy slavného myšlenkového experimentu, která neustále pracuje na pozadí a třídí molekuly.[1] Unixové systémy terminologii převzaly. Démoni jsou též charakterističtí pro řeckou mytologii, kde někteří z nich vykonávají práce, kterými se bohové nechtějí zatěžovat. Stejně tak počítačový démon pracuje na pozadí a vykonává práce, se kterými nechce být uživatel zatěžován. BSD a některé příbuzné systémy převzaly démona jako svého maskota, avšak tento maskot je jen roztomilým stereotypním zobrazením křesťanského démona. V pozdější době byl z názvu vytvořen akronym Disk And Execution MONitor – diskový a prováděcí monitor), případně DEvice MONitor – monitor (vstupně-výstupních) zařízení.

Unixové systémy

Démon je typickým programem v unixových systémech, kde zajišťuje různé systémové funkce. Jeho název obvykle končí na písmeno „d“, čímž se naznačuje jeho status démona (httpd, sshd, syslogd, klogd, ntpd, …). Nejdůležitějším démonem je zde démon init, který má číslo procesu 1 (PID). Je spuštěn při startu jako první (s výjimkou kernel threadů), je rodičem všech ostatních procesů v systému a řídí přechod do nastaveného runlevelu. Je zodpovědný za spuštění skriptů při startu systému, adoptuje procesy, které ztratí svého rodiče (stane se jejich novým rodičem) a plní i další úkoly.

Postup vzniku démona

Při programování démona je obvykle využíváno multitaskingu, takže rodičovský démon pouze vyčkává příchodu události, ale neobsluhuje ji sám. Místo toho odštěpí (fork) potomka, který událost obslouží a rodič sám nadále vyčkává příchodu další události. Tento postup zjednodušuje současnou obsluhu více událostí, kdy přenáší odpovědnost za cyklickou obsluhu na operační systém (díky multitaskingu). Dále je vhodné vykonat několik níže uvedených kroků:

  • odpojení od řídícího terminálu (tty)
  • stát se základním rodičem (rodičem démona bude proces číslo 1)
    • přerušit vazbu na svého rodiče pomocí volání funkce fork, kdy rodičovský proces ihned skončí a dále pokračuje jako potomek
    • dojde k tomu, že démon (zde jako potomek) je adoptován procesem číslo 1 (init)
  • stát se vedoucím skupiny
  • nastavit pracovní adresář na kořenový adresář („/“)
  • změna umask na 0
    • zbavení se závislosti na nastavení umask v procesu rodiče
  • uzavření všech otevřených souborů (deskriptorů)
    • včetně standardních proudů 0, 1 a 2 (stdin, stdout, stderr)
    • potřebné soubory budou otevřeny později, umožňuje čistý fork bez vedlejších efektů a bezpečnostních rizik
  • místo standardních proudů (stdin, stdout, stderr) použít logovací subsystém, systémovou konzoli, /dev/null a podobně

Nejznámější démoni

  • sshd – server vzdáleného připojení pomocí šifrované komunikace protokolem SSH
  • httpd – webový server (nejčastěji Apache)
  • ntpd – server pro synchronizaci času (OpenNTPD, NTPd)

Microsoft Windows

Související informace lze nalézt také v článku: Služba Windows.

V prostředí novějších Microsoft Windows (Windows NT, Windows 2000, Windows XP, Windows Vista, Windows 7) je obdobou démona služba Windows. Má separovaný proces, obvykle nekomunikuje s uživatelskými periferiemi (HID, Human Interface Device; monitor, klávesnice a myš), je spouštěna při startu počítače nebo při prvním požadavku. Uživatel s oprávněními administrátora (správce) může obvykle nastavit možnost startu na vyžádání. Některé služby jsou ovšem vyžadovány již pro komunikaci se zařízeními třídy HID – typicky služba Workstation (Pracovní stanice), některé umožňují základní funkcionalitu architektury – např. služba Server, která řídí ostatní procesy. U těchto služeb není možné jejich spouštění zakázat.

DOS

Související informace lze nalézt také v článku: Disk Operating System.

V systému DOS není přímá podpora pro běh více programů zároveň, natož démonů. Přesto v DOSu existují programy, které mohou podobným způsobem pracovat. Označují se jako TSR (anglicky Terminate and Stay Resident, česky ukonči se a zůstaň rezidentní).

Reference

  1. Fernando J. Corbató. Take Our Word for It [online]. 2002-01-23, [cit. 2006-08-20]. Dostupné online.  

Související články