Daemon (dator) - Daemon (computing)

Komponenter i vissa Linux- skrivbordsmiljöer som är demoner inkluderar D-Bus , NetworkManager (här kallad unetwork ), PulseAudio ( usound ) och Avahi .

I multitasking dator operativsystem , en daemon ( / d Î m ən / eller / d m ən / ) är ett datorprogram som körs som en bakgrundsprocess , snarare än att vara under direkt kontroll av en interaktiv användare. Traditionellt slutar processnamnen på en demon med bokstaven d , för att klargöra att processen i själva verket är en demon, och för differentiering mellan en demon och ett normalt datorprogram. Till exempel är syslogd en daemon som implementerar systemloggningsfunktionen och sshd är en demon som serverar inkommande SSH -anslutningar.

I en Unix -miljö är den överordnade processen för en demon ofta, men inte alltid, init -processen. En demon skapas vanligtvis antingen genom att en process gafflar en barnprocess och sedan omedelbart lämnar, vilket gör att init antar barnprocessen, eller genom att init -processen startar demon direkt. Dessutom lanserade en daemon genom forking och avsluta typiskt måste utföra andra operationer, såsom dissociera processen från någon styrning terminal (tty). Sådana procedurer implementeras ofta i olika bekvämlighetsrutiner som daemon (3) i Unix.

System startar ofta demoner vid starttid som svarar på nätverksförfrågningar, hårdvaruaktivitet eller andra program genom att utföra någon uppgift. Daemoner som cron kan också utföra definierade uppgifter vid schemalagda tider.

Terminologi

Termen myntades av programmerarna vid MIT: s Project MAC . Enligt Fernando J. Corbató , som arbetade på Project MAC 1963, var hans team det första som använde termen daemon, inspirerad av Maxwells demon , en imaginär agent inom fysik och termodynamik som hjälpte till att sortera molekyler och sade: "Vi började fantasifullt att använda ordet daemon för att beskriva bakgrundsprocesser som arbetade outtröttligt för att utföra systemuppgifter ". Unix -system ärvde denna terminologi. Maxwells demon överensstämmer med den grekiska mytologins tolkning av en demon som en övernaturlig varelse som arbetar i bakgrunden. Men BSD och några av dess derivat har antagit en kristen demon som sin maskot i stället för en grekisk demon .

I allmän mening är daemon en äldre form av ordet "demon", från grekiska δαίμων. I Unix System Administration Handbook säger Evi Nemeth följande om demoner:

Många människor likställer ordet "daemon" med ordet "demon", vilket innebär en slags satanisk koppling mellan UNIX och underjorden . Detta är ett grovt missförstånd. "Daemon" är faktiskt en mycket äldre form av "demon"; daemoner har ingen särskild partiskhet mot gott eller ont, utan tjänar snarare till att definiera en persons karaktär eller personlighet. De gamla grekernas koncept om en "personlig demon" liknade det moderna konceptet om en "skyddsängel" - eudaemonia är tillståndet att bli hjälpt eller skyddad av en vänlig ande. Som regel verkar UNIX -system infekterade med både demoner och demoner.

Ytterligare en karakterisering av den mytologiska symboliken är att en demon är något som inte är synligt men som alltid är närvarande och fungerar efter sin vilja. I Theages , tillskrivna Platon , beskriver Sokrates sin egen personliga demon som något liknande det moderna begreppet moraliskt samvete: "Gudarnas gunst har gett mig en underbar gåva, som aldrig har lämnat mig sedan min barndom. Det är en röst som, när den gör sig hörd, avskräcker mig från vad jag ska göra och aldrig uppmanar mig att fortsätta ”.

I modern användning, ordet daemon är uttalad / d jag m ən / DEE -mən . I samband med programvara, den ursprungliga uttal / d jag m ən / har drivit till / d m ən / DAG -mən för vissa högtalare.

Alternativa termer för daemon är service (används i Windows, från Windows NT och framåt - och senare även i Linux), startad uppgift (IBM z/OS ) och spökjobb (XDS UTS ).

Efter att termen antogs för datoranvändning rationaliserades den som en bakronym för Disk And Execution MONitor.

Daemoner som ansluter till ett datornätverk är exempel på nättjänster .

Implementeringar

Unix-liknande system

I en strikt teknisk mening är en Unix-liknande systemprocess en daemon när dess överordnade process avslutas och demonen tilldelas init- processen (processnummer 1) som sin överordnade process och har ingen kontrollterminal. Men mer allmänt kan en demon vara vilken bakgrundsprocess som helst, oavsett om det är ett barn i init -processen eller inte.

På ett Unix-liknande system innebär den vanliga metoden för en process att bli en demon, när processen startas från kommandoraden eller från ett startskript som ett init- skript eller ett SystemStarter- skript:

  • Eventuellt ta bort onödiga variabler från miljön.
  • Kör som en bakgrundsuppgift genom att gaffla och gå ut (i förälderns "halva" gaffeln). Detta gör att daemons förälder (skal eller startprocess) kan ta emot aviseringsavisering och fortsätta sin normala körning.
  • Koppla från anropssessionen, vanligtvis utförd med en enda operation setsid():
    • Ta avstånd från den kontrollerande enheten .
    • Skapa en ny session och bli sessionsledare för den sessionen.
    • Att bli processgruppsledare .
  • Om demon vill försäkra sig om att den inte kommer att förvärva en ny kontrollerande enhet även av misstag (vilket händer när en sessionsledare utan en kontrollerande enhet öppnar en ledig tty) kan den gaffla och avsluta igen. Detta innebär att den inte längre är en sessionsledare i den nya sessionen och inte kan förvärva en kontrollerande enhet.
  • Ange rotkatalogen ( / ) som den aktuella arbetskatalogen så att processen inte behåller någon katalog som kan finnas på ett monterat filsystem (så att den kan avmonteras).
  • Ändra umask till 0 för att tillåta open(), creat()och andra operativsystemsamtal för att tillhandahålla sina egna behörighetsmasker och inte att bero på den som ringer.
  • Omdirigera filbeskrivare 0, 1 och 2 för standardströmmarna ( stdin , stdout och stderr ) till /dev /null eller en loggfil och stänga alla andra filbeskrivare som ärvts från den överordnade processen.

Om processen startas av en super-server- demon, till exempel inetd , launchd eller systemd , kommer super-server-demonen att utföra dessa funktioner för processen, förutom gamla demoner som inte konverteras för att köras under systemd och specificeras som typ = gaffel och "multi-threaded" datagram-servrar under inetd .

MS-DOS

I Microsoft DOS- miljön implementerades demon-liknande program som TSR -program ( terminate and stay resident ).

Windows NT

Microsoft Windows NT -system utför program som kallas Windows -tjänster demonernas funktioner. De körs som processer, interagerar vanligtvis inte med bildskärmen, tangentbordet och musen och kan startas av operativsystemet vid start. I Windows 2000 och senare versioner konfigureras och startas och stoppas Windows -tjänster manuellt med hjälp av kontrollpanelen , ett dedikerat kontroll-/konfigurationsprogram, Service Controller -komponenten i Service Control Manager ( sc -kommandot), kommandona net start och net stop eller den Powerskriptsystemet.

Men alla Windows -program kan utföra rollen som en demon, inte bara en tjänst, och vissa Windows -demoner har möjlighet att köra som en normal process.

Klassiskt Mac OS och macOS

På det klassiska Mac OS tillhandahålls valfria funktioner och tjänster av filer som laddades vid starttiden som korrigerade operativsystemet; dessa var kända som systemförlängningar och kontrollpaneler . Senare versioner av klassiska Mac OS utökade dessa med fullfjädrade ansiktslösa bakgrundsapplikationer : vanliga applikationer som kördes i bakgrunden. För användaren beskrivs dessa fortfarande som vanliga systemtillägg.

macOS , som är ett Unix -system, använder demoner. Observera att macOS använder termen "tjänster" för att beteckna programvara som utför funktioner som väljs från menyn Tjänster , snarare än att använda termen för demoner som Windows gör.

Se även

Referenser

externa länkar