Linux Server Software – Kernel
Dies ist der erste Beitrag einer Reihe über Linux Server Software. Ich werde versuchen, meiner Meinung nach wichtige Software und Bestandteile beim Betrieb eines Webserver auf Linux Basis aufzuzeigen und soweit es mir möglich ist verständlich zu erklären.
Beginnen möchte ich mit dem Linux Kernel, welcher nicht als Option für den Betrieb zu sehen ist, sondern vielmehr die Basis eines Jeden Linux Systems darstellt – oder besser gesagt, das Linux System selbst.
Allgemein kann man sagen, dass der Kernel eine Schnittstelle zwischen der Anwendungssoftware des Betriebssystems und den Systemkomponenten darstellt, auch wenn der Kernel selbst wieder eine Software ist. Dabei nimmt der Kernel verschiedene Aufgaben wahr:
Die Zuteilung der Ressourcen auf dem Prozessor. Also welches Programm wann wie viele Rechenzyklen zugeteilt bekommt. Dies geschieht über festgelegte Prioritäten, welche von dem sogenannten Scheduler nach bestimmten Verfahren den einzelnen Prozessen zugewiesen werden. Dabei achtet der Scheduler darauf, dass die Prozesse “fair” behandelt werden. Fair in dem Sinn, dass jeder Prozess, je nach Wichtigkeit schnell bearbeitet wird, aber auch kein nicht so wichtiger Prozess vernachlässigt oder gar vergessen wird. Den Sinn des Schedulers kann man sich schnell verdeutlichen, wenn man darüber nachdenkt, was geschehen würde wenn die Tastatureingabe immer die geringste Priorität zugewiesen bekommen würde: wenn ein anderer Prozess die CPU komplett ausnützen würde, könnte dieser nicht mehr durch eine Tastatureingabe unterbrochen werden.
Bildlich kann man sich das ganze als eine sich drehende Scheibe vorstellen, welche in mehrere Teile unterteilt ist. Jeder Teil steht für einen Prozess; die Größe des Teilstücks gibt dabei die benötigte Rechenzeit bis zur kompletten Abarbeitung an, die dieser Prozess benötigt. An einer Stelle wird die drehende Scheibe nun “gelesen” und verkleinert das Teilstück somit. Neue Teilstücke (also Prozesse) können dann diesen freien Platz wieder belegen. Dabei wird die Reihenfolge der Neubelegung durch spezielle Scheduling Verfahren geregelt. Wenn die Teilstücke klein genug sind, können sie innerhalb einer “Drehung” abgearbeitet werden; wenn nicht, dann sind sie in der nächsten Runde wieder dran.
Die Speicherverwaltung muss ebenfalls geregelt sein. Welcher Prozess bekommt wie viel Speicher und von welchem Speicher. Wann werden Daten aus dem Speicher gelöscht, wie lange bleiben Daten im Speicher und welche Prozesse dürfen auf gemeinsamen Speicher zugreifen.
Die Verwaltung der Zugriffe auf die Ein- und Ausgabegeräte. Der Kernel muss alle Geräte, welche zu dem Server / PC gehören, erkennen und adressieren können. Nur so ist es möglich, dass eine Ausgabe auf dem Bildschirm überhaupt dargestellt werden kann. Ohne Eingabegeräte wäre es ebenso nicht möglich, interaktive Programme zu bedienen oder Programme überhaupt zu starten und zu benutzen. Prinzipiell stellt der Kernel eine sogenannte I/O Schnittstelle zur Verfügung, welche die Kommunikation der Gerätetreiber, also der Software, mit der Hardware erst ermöglicht.
Bei einem Linux System hat man nun die Möglichkeit, seinen Kernel selbst zu kompilieren. Dies bedeutet, man kann festlegen, für welche Hardware der Kernel Unterstützung mitbringen soll, welche Scheduler benutzt werden sollen, welche Dateisysteme verfügbar sind und ob die verschiedenen Optionen fest im Kernel “eingebaut” sein sollen oder als Module zur Laufzeit nachladbar sind. Der Vorteil besteht nun darin, dass man so einen sehr schlanken Kernel erzeugen kann, welcher auch nur die wirklich benötigten Ressourcen für sich selbst belegt.
Es gibt sehr viele Optionen, welche man einstellen kann und es ist auch nicht unbedingt einfach den ersten “selbstgebauten” Kernel ohne Probleme starten zu können. Aber hier gilt wie überall: Übung macht den Meister!
Wie nun gut zu verstehen sein dürfte, geht ohne den Kernel nicht viel bei einem Betriebssystem – und damit ist nicht nur Linux gemeint, denn jedes Betriebssystem baut im Prinzip auf einem Kernel auf. Allerdings überlässt nicht jedes Betriebssystem dem Benutzer die Möglichkeit, diesen selbst zu kompilieren.
Dies war nun der erste Teil meiner Reihe über Linux Server Software. Bitte beachtet die Links zum Beitrag (weiter unten), welche für am Thema Interessierte einen weiteren Anlaufpunkt bieten.
Links zum Beitrag:
Linux Foundation
Linux 2.6.8.1 CPU Scheduler Paper (PDF)
Virtuelle Speicherverwaltung (PDF)
Linux Gerätetreiber, O´Reilly Freebook (online)
Kernel.org
Diese Erklärung ist ja wirklich verständlich trifft leider nicht auf jede zu, werde das sicher weiterverfolgen.
[...] geht es endlich weiter in der Reihe Linux Server Software. Der Webserver ist die Software, welche zur Auslieferung der Inhalte, also von Homepages, an die [...]