Mehrprozessor - Systeme (SMP) zeichnen sich dadurch aus, daß der Kernel - Scheduler Prozesse Aufgaben auf die verschiedenen CPUs verteilt, welche dann mit Hilfe ihres eigenen Schedulers die Zeitscheiben für die Prozesse aufteilen. Prozesse im Userraum (userspace) kommunizieren in UNIX untereinander auf vielerlei Weise:
Internet Domain Sockets - Netzwerkverbindungen aller Art laufen über diese Sockets, wobei dem Lookback Interface eine besondere Bedeutung zukommt: Wenn Client und Server auf demselben Server ausgeführt werden, kann die Kommunikation über das loopback interface laufen, mit IP 127.0.0.1. So können lokal z.B. Broser und Webserver, Datenbank - Server und Client, X - Windows Server und Client (kdm, gdm, xdm) und der xfs Fontserver über dieses Interface laufen. Dieses Verfahren ist jedoch mit hohen Verlusten verbunden.
Unix Domain Sockets sind Einblendungen im Filesystem, z.B. unter /tmp/ksocket-root/, die von Prozessen erzeugt werden, und als direkte Kommunikationskanäle zwischen Prozessen dienen. So kommunizieren z.B. der X-Windows Server, die KDE Benutzeroberfläche und kdm über /tmp/kde-root/... miteinander, der MySQL Server /var/lib/mysql/mysql.sock mit dem Apache Webserver oder dem MySQL Client, u.s.w. Das Kommando file /tmp/kde-root/* zeigt, das es sich um sockets handelt.
IPC (Inter Process Communication) läuft über Shared Memory - Dies ist Speicher im RAM, welcher entweder vom Prozess selber angefordert/reserviert wird, oder mit den Kommandos ipcs, ipcrm verwaltet werden. Typischerweise kommunizieren Datenbankserver - Prozesse hierüber miteinander. Shared Memory hat einen entscheidenden Vorteil gegenüber Internet Domain/Unix Domain Sockets: Es müssen keine Daten hin - und hergeschaufelt, in Protokolle verpackt und wieder entpackt werden. Ein Prozess liest direkt aus dem RAM heraus, was ein anderer hinein geschrieben hat.
Named Pipes - ähnlich den UNIX Domain Sockets werden diese im Filesystem eingeblendet. Mit dem Kommando mknod /tmp/pipename p wird eine Pseudodatei der größe 0 angelegt. Prozesse können mit fileopen() hineinschreiben, ebenso wie man mit den UNIX Tools dort Dinge hineinschreiben kann, die ein anderer Prozess abholt: cat > /tmp/pipename und auf der anderen Seite, über eine zweite Shell: cat < /tmp/pipename kann man die Daten abholen.
Das /proc/ - Verzeichnis ist ebenfalls eine Einblendung in das Filesystem. Hier werden wichtige, aktuelle Kernel - Parameter eingeblendet, die man auch verändern kann: cat < /proc/sys/fs/file-max zeigt die Zahl der maximal zu öffnenden Dateien an, und mit echo "60000" > /proc/sys/fs/file-max kann man diesen Kernel - Parameter verändern. /proc ist also eine Schnittstelle zur Kernel - Kommunikation. Die Kernel - Parameter werden wie ein Filesystem gemountet, siehe auch /etc/fstab.
| Zurück | Inhaltsangabe | Weiter |
| Preemptible/Reentrance/SMP - Kernel | Nach oben | Buffered I/O |