Daemon

Disk and execution monitor. Ein Daemon ist ein Dienst oder Programm unter UNIX oder Linux, das im Hintergrund abläuft. Sie werden durch ein Drittes Programm oder eine Netzwerkanfrage bzw. durch Pipes aktiviert.  Beispiele für Daemons sind: Netzwerkdienste, E-Mail-Server, Datenbankserver, Print-Server, Hardwarekonfigurationsprogramme oder Hardware-Überwachungsprogramme.  Konkrete UNIX-Daemons sind: line printer daemon (lpd): Daemon der auf Druckaufträge wartet und diese abarbeitet, hypertext transfer protocol daemon (httpd): Webserver, common unix printing system daemon (cupsd): Druckerserver uvam.                                                     
Siehe auch:    unix   linux   POSIX   GNU-Projekt   

  Unix

Unix ist ein Betriebssystem, das in den 60er Jahren von den Bell Laboratories (heute: AT&T) entwickelt wurde. Es unterteilt sich in einen Kernel, das Dateisystem und die Shell. Eigenschaften sind: Multiuser-System,  Multitaskingfähigkeit, enge Beziehung zur Programmiersprache C, hohe Stabilität, Speicherschutz, virtueller Speicher, TCP/IP-Netzwerkunterstützung, Multithreading, sehr gute Scriptingfähigkeit, viele Tools (Unix Kommandos) und einige Daemonen. 

Daemon
Ein Daemon (Disk and execution monitor) ist ein Dienst oder Programm, das im Hintergrund abläuft. Sie werden durch ein Drittes Programm oder eine Netzwerkanfrage bzw. durch Pipes aktiviert.  Beispiele für Daemons sind: Netzwerkdienste, E-Mail-Server, Datenbankserver, Print-Server, Hardwarekonfigurationsprogramme oder Hardware-Überwachungsprogramme.

Unix-Geschichte
UNIX-Entwickler der ersten Stunde waren in den frühen 70er Jahren:  Dennis Ritchie, Ken Thompson und Douglas McIlroy. Der Name Unix geht auf das Multics-Projekt zurück (MIT, General Electric, Bell Labs, IBM mit PL/1), welches 1965  auf der Fall Joint Computer Conference angestossen wurde. Das Multics Betriebssystem-Projekt war jedoch zu ehrgeizig in seinen Zielen und scheiterte an den damals verfügbaren Hardware-Ressourcen. Die späteren UNIX Entwickler liessen sich jedoch nicht  entmutigen und wollten ein Mehrbenutzersystem schaffen, welches ein gemeinsames Programmieren und Arbeiten an einem System erlauben sollte. Beispielsweise sollte es möglich sein, dass mehrere User an einer Datei gleichzeitig arbeiten  konnten bzw. diese gemeinsam nutzen konnten. Das sich daraus entwickelnde Betriebssystem wurde u.a. auf einer PDP 11 programmiert und Brian Kernighan (Kanadischer Informatiker, Co-Autor von C) nannte es Unics, da es ein Multics sei, dass lediglich 2 User  unterstütze. Daraus entwickelte sich der Name Unix; die spätere Schreibweise UNIX hing mit der Begeisterung der Entwickler für Kapitälchen zusammen die mit dem Unix Textsatzprogramm Troff möglich waren. 

Unix-Kernel
Der Kernel von Unix verwaltet die Hardware und deren Prozesse sowie das Dateisystem und den Netzwerkprotokollstapel. Systemaufrufe aus Prozessen wie forc oder exec triggern weitere Prozesse und dienen zur Kommunikation  mit dem Dateisystem. Der Systemaufruf Fork erzeugt vom aktuellen Prozess eine Kopie die als Kindprozess des erzeugenden Programms dient. Dieser Kindprozess erhält vom Elternprozess Daten, Maschinencode und Befehlszähler und vom Betriebssystem eine eigene  PID (Process IDentifier = Prozessnummer). Dadurch kann Unix den Kindprozess als eigene Instanz der Anwendung und unabhängig vom Elternprozess ausführen.  Das Dateisystem ist hierarchisch strukturiert - es können an jede Datei je nach Bedarf Unterdateien angehangen werden. Ausgangspunkt ist das Wurzelverzeichnis - die Root. Da alles als Datei abgebildet werden soll, werden  auch Peripheriegeräte (optische Laufwerke, Drucker, Floppy), Festplatten oder verbundene Netzwerkrechner an das Dateisystem angehängt (Kommando: mount).  Auch die Zugriffe auf Hardware-Treiber werden im Dateisystem durch Zugriffe auf dafür vorgesehene Dateien geregelt: durch diese Handhabung sind Zugriffe auf Dateien und Hardwarekomponenten für die Prozessteuerung vereinheitlicht und Anwendungen  können mit einheitlichen Schnittstellen zum Betriebssystem versorgt werden, so dass Systemaufrufe mit open, write oder read allgemein möglich sind.

Unix-Shell
Die Shell dient  als Benutzerschnittstelle bzw. Kommandozeileninterpreter: der User kann Kommandos eintippen, welche dann direkt ausgeführt werden. Unter Unix stehen viele verschiedene Shells mit eigenen Scriptsprachen zur Verfügung. Die Unix-Shell ist  aus Prozessicht nicht privilegiert - im Gegensatz zu vielen Kommandozeileninterpretern anderer Betriebssysteme. Bekannte Unix-Shells sind: Thompson Shell, Bourne Shell, C-Shell (alle Frühphase), Bourne Again Shell, Job Control Shell, Korn Shell,  Almquist Shell, TENEX-C Shell oder Z-Shell u.a. Die Shell ermöglicht dem User über bestimmte Kommandos eine Ein-/Ausgabeumleitung in die angehängten Dateien des Systems, sowie über die Pipes eine Kommunikation zwischen den Prozessen.  Auch grafische Benutzeroberflächen wurden entwickelt wie Solaris oder X-Window. 

Unix-Derivate
Es existieren zahlreiche Unix-Derivate: HP-UX (Hewlett-Packard), AIX (IBM), Solaris (Sun Microsystems), IRIX (Silicon Graphics), DG-UX (Data General) oder SINIX (Siemens).  Es existieren noch weitere UNIX-Ableger die von der AT&T Linie her abstammen: UNIX System V und Tru64 UNIX. Tru64 UNIX ist eine kommerzielle UNIX-Version die auf dem Mach-Mikrokernel basiert und die 64-Bit Alpha Mikroprozessor Architektur  (DEC) unterstützt. Tru64 UNIX wurde als OSF/1 (Open Software Foundation) gestartet und hiess zwischenzeitlich Digital Unix (Dunix).

GNU Hurd
Das von der Open Software Foundation (OSF)  und Richard Stallman im Rahmen des GNU Projektes entwickelte freie Betriebssystem GNU (GNU is not UNIX) basiert ebenfalls auf dem Mach Mikrokernel und den dazugehörigen Diensten (GNU Hurd).  GNU Hurd ist ein zweistufiges, indirektes Akronym: erste Stufe: HIRD of Unix-Replacing Daemons ("Herde Unix ersetzende Daemons"), HIRD bedeutet wiederum:  HURD of Interfaces Representing Depth ("Herde von Tiefe darstellenden Schnittstellen").  GNU soll eine freie und vollwertige Alternative zu UNIX werden. Die BSD-Linie (Berkley Software Distribution) basierte ursprünglich auf dem Original Unix, hat sich inzwischen jedoch verselbständigt.  Linux ist nach Unix-Prinzipien aufgebaut.

   
Siehe auch:    Kernel   vi   Solaris   BSD   Shell   GNU   X-Window-System   Daemon   Mach-Mikrokernel   POSIX