Daemon (databehandling) - Daemon (computing)

Komponenter i noen Linux- skrivebordsmiljøer som er demoner inkluderer D-Bus , NetworkManager (her kalt unetwork ), PulseAudio ( usound ) og Avahi .

I fleroppgavekjøring datamaskinoperativsystemer , en nissen ( / d jeg m ən / eller / d m ən / ) er et dataprogram som kjører som en bakgrunnsprosess , snarere enn å være under direkte styring av en interaktiv bruker. Tradisjonelt slutter prosessnavnene på en demon med bokstaven d , for å avklare at prosessen faktisk er en demon, og for differensiering mellom en demon og et vanlig dataprogram. For eksempel er syslogd en demon som implementerer systemloggingsanlegg, og sshd er en demon som betjener innkommende SSH -tilkoblinger.

I et Unix -miljø er overordnet prosess for en demon en ofte, men ikke alltid, init -prosessen. En demon blir vanligvis opprettet enten ved at en prosess gaffler en barneprosess og deretter går ut umiddelbart, og dermed får init til å adoptere barneprosessen, eller ved at init -prosessen starter lanseringen av demonen. I tillegg er lansert en nissen ved gaffel og ut vanligvis må utføre andre operasjoner, for eksempel dissosiering av prosessen fra en hvilken som helst kontrollerende terminal (tty). Slike prosedyrer implementeres ofte i forskjellige bekvemmelighetsrutiner, for eksempel daemon (3) i Unix.

Systemer starter ofte demoner ved oppstart som vil svare på nettverksforespørsler, maskinvareaktivitet eller andre programmer ved å utføre en oppgave. Daemoner som cron kan også utføre definerte oppgaver til planlagte tider.

Terminologi

Begrepet ble laget av programmererne ved MIT's Project MAC . I følge Fernando J. Corbató , som jobbet på Project MAC i 1963, var teamet hans det første som brukte begrepet daemon, inspirert av Maxwells demon , en imaginær agent innen fysikk og termodynamikk som hjalp til med å sortere molekyler, og sa: "Vi begynte fantasifullt å bruke ordet daemon for å beskrive bakgrunnsprosesser som jobbet utrettelig for å utføre systemoppgaver ". Unix -systemer arvet denne terminologien. Maxwells demon er i samsvar med gresk mytologis tolkning av en demon som et overnaturlig vesen som arbeider i bakgrunnen. Men BSD og noen av dets derivater har vedtatt en kristen demon som sin maskot i stedet for en gresk daemon .

I generell forstand er daemon en eldre form av ordet "demon", fra gresk δαίμων. I Unix System Administration Handbook sier Evi Nemeth følgende om demoner:

Mange likestiller ordet "demon" med ordet "demon", noe som antyder en slags satanisk forbindelse mellom UNIX og underverdenen . Dette er en grov misforståelse. "Daemon" er faktisk en mye eldre form for "demon"; demoner har ingen spesiell skjevhet mot godt eller ondt, men tjener snarere til å definere en persons karakter eller personlighet. De gamle grekernes oppfatning av en "personlig demon" lignet på det moderne konseptet om en "skytsengel" - eudaemonia er en tilstand av å bli hjulpet eller beskyttet av en vennlig ånd. Som regel ser det ut til at UNIX -systemer er infisert av både demoner og demoner.

En ytterligere karakterisering av den mytologiske symbolikken er at en demon er noe som ikke er synlig, men som alltid er tilstede og fungerer etter sin vilje. I theages , tilskrevet Platon , beskriver Sokrates sin egen personlige demon som noe som det moderne konseptet om moralsk samvittighet: " Gudenes gunst har gitt meg en fantastisk gave, som aldri har forlatt meg siden min barndom. Det er en stemme som, når den gjør seg hørt, avholder meg fra det jeg skal gjøre og aldri oppfordrer meg til. "

I moderne behandling, ordet nissen er uttalt / d jeg m ən / DEE -mən . I sammenheng med dataprogrammer, den opprinnelige uttalen / d ï m ən / har drev til / d m ən / DAY -mən for noen høyttalere.

Alternative termer for daemon er service (brukt i Windows, fra Windows NT og fremover - og senere også i Linux), oppgitt oppstart (IBM z/OS ) og spøkelsesjobb (XDS UTS ).

Etter at begrepet ble vedtatt for datamaskinbruk, ble det rasjonalisert som et backronym for Disk And Execution MONitor.

Demoner som kobler seg til et datanettverk er eksempler på nettverkstjenester .

Implementeringer

Unix-lignende systemer

I en strengt teknisk forstand er en Unix-lignende systemprosess en demon når den overordnede prosessen avsluttes og demonen tildeles init- prosessen (prosessnummer 1) som sin overordnede prosess og har ingen kontrollterminal. Imidlertid, mer generelt, kan en demon være en hvilken som helst bakgrunnsprosess, enten det er et barn av init -prosessen eller ikke.

På et Unix-lignende system innebærer den vanlige metoden for at en prosess skal bli en demon, når prosessen startes fra kommandolinjen eller fra et oppstartsskript, for eksempel et init- script eller et SystemStarter- script ,:

  • Fjern eventuelt unødvendige variabler fra miljøet.
  • Utføre som en bakgrunnsoppgave ved å gafle og gå ut (i den overordnede "halvdelen" av gaffelen). Dette gjør at demonens overordnede (skall- eller oppstartsprosess) kan motta exit -varsel og fortsette sin normale kjøring.
  • Koble fra påkallingsøkten, vanligvis utført ved en enkelt operasjon setsid():
    • Dissosiering fra den kontrollerende tty .
    • Opprette en ny økt og bli sesjonsleder for den økten.
    • Å bli prosessgruppeleder .
  • Hvis demonen vil sikre at den ikke vil skaffe seg en ny kontrollerende enhet selv ved et uhell (som skjer når en sesjonsleder uten en kontrollerende enhet åpner en gratis tty), kan den gaffel og gå ut igjen. Dette betyr at den ikke lenger er en sesjonsleder i den nye sesjonen, og ikke kan skaffe seg en kontrollerende enhet.
  • Angi rotkatalogen ( / ) som den nåværende arbeidskatalogen slik at prosessen ikke beholder noen katalog som kan være på et montert filsystem (slik at den kan demonteres).
  • Endre umask til 0 for å tillate open(), creat()og andre operativsystem samtaler for å gi sine egne tillatelses masker og ikke å avhenge av umask til den som ringer.
  • Omdirigere filbeskrivere 0, 1 og 2 for standardstrømmene ( stdin , stdout og stderr ) til /dev /null eller en loggfil , og lukke alle de andre filbeskrivelsene som er arvet fra den overordnede prosessen.

Hvis prosessen startes av en super-server- demon, for eksempel inetd , launchd eller systemd , vil super-server-demonen utføre disse funksjonene for prosessen, bortsett fra gammeldagse demoner som ikke er konvertert til å kjøre under systemd og spesifisert som Type = gafling og "multi-threaded" datagram-servere under inetd .

MS-DOS

I Microsoft DOS- miljøet ble demon-lignende programmer implementert som TSR-programvare ( terminate and stay resident ).

Windows NT

Microsoft Windows NT -systemer utfører programmer som kalles Windows -tjenester funksjonene til demoner. De kjører som prosesser, samhandler vanligvis ikke med skjermen, tastaturet og musen, og kan bli lansert av operativsystemet ved oppstart. I Windows 2000 og nyere versjoner blir Windows -tjenester konfigurert og manuelt startet og stoppet ved hjelp av kontrollpanelet , et dedikert kontroll-/konfigurasjonsprogram, komponenten Service Controller i Service Control Manager ( sc -kommandoen), kommandoen net start og net stop eller den Powerskript system.

Imidlertid kan ethvert Windows -program utføre rollen som en demon, ikke bare en tjeneste, og noen Windows -demoner har muligheten til å kjøre som en normal prosess.

Klassisk Mac OS og macOS

På det klassiske Mac OS ble valgfrie funksjoner og tjenester levert av filer som ble lastet inn ved oppstartstidspunktet som oppdaterte operativsystemet; disse ble kjent som systemutvidelser og kontrollpaneler . Senere versjoner av klassisk Mac OS forsterket disse med fullverdige ansiktsløse bakgrunnsprogrammer : vanlige applikasjoner som kjørte i bakgrunnen. For brukeren ble disse fremdeles beskrevet som vanlige systemutvidelser.

macOS , som er et Unix -system, bruker demoner. Vær oppmerksom på at macOS bruker begrepet "tjenester" for å betegne programvare som utfører funksjoner som er valgt fra Tjenester -menyen , i stedet for å bruke det begrepet for demoner som Windows gjør.

Se også

Referanser

Eksterne linker