Archiv für die Kategorie ‘Linux’
Kernel-Design, oder: Torvalds vs Tanenbaum
In diesem Artikel soll es also um das Kernel-Design eines Betriebssystems gehen… doch was ist das eigentlich, ein Kernel?
Nun, man könnte den Kernel einfach mit „Betriebssystemkern“ übersetzen: er steuert die grundlegendsten Sachen, die für ein Betriebssystem nötig sind; dazu gehören zum Beispiel Zugriffe auf die Festplatte, Speicherverwaltung, Scheduling oder Gerätetreiber.
Und genau an dem letzten Punkt „Treiber“ scheiden sich die Geister: sollen sie nun mit in den Kernel oder lieber extern bleiben?
Auch zwei Prominente der IT-Welt stritten sich darum: Linus Torvalds, der Begründer von Linux, und Andrew Tanenbaum, der unter anderem für das Betriebssystem Minix verantwortlich ist.
In Linux sind die Treiber mit im Kernel drin; ein solcher Kernel- heißt monolithischer Kernel. Im Gegensatz dazu ist der Minix-Kernel ein Microkernel: hier sind die Treiber extern: der Kernel wird so kleiner und auf diesem Wege auch sehr viel stabiler.
Diese Stabilität ist auch die größte Stärke des Microkernels. Im Gegensatz dazu kann der monolithische Kernel mit Schnelligkeit punkten: durch das Alles-drin-haben sind die Zugriffe auf Treiber wesentlich schneller, allerdings gibt es hier auch mehr, was den Kernel zum Absturz bringen kann als beim Microkernel.
Letztendlich muss jeder selbst entscheiden was wichtiger ist; jedes Design hat also seine ganz eigenen Vorzüge.
OpenSuse: Systemzeit übers Internet stellen
Ist es nötig die Systemzeit neu zu stellen (zum Beispiel durch Sommer-/Winterzeit) gibt es unter OpenSuse einen sehr komfortablen Weg. Wir bedienen uns hierbei dem unter Linux wahrscheinlich meistebenutzten Protokoll „NTP„. OpenSuse hat alle benötigten Werkzeuge schon mit an Board, sodass wir direkt Yast | Netzwerkdienste | NTP-Konfiguration aufrufen können.
Hier wählen wir „Jetzt und beim Booten“ um einen Server eingeben zu können. Als Adresse des Servers empfehle ich ptbtime1.ptb.de oder ptbtime2.ptb.de. Die Physikalisch-Technische Bundenanstalt betreibt neben diesen Servern mehrere Atomuhren und ist für die gesetzliche Zeit in Deutschland verantwortlich.
Noch ein Klick auf Beenden, und das wars!
Komodo Edit unter Linux installieren
Leider ist die Auswahl an hochwertigen Editoren unter Windows größer als unter Linux. Es gibt allerdings einen Editor von Activestate, der unter beiden Betriebssystem verfügbar ist: Komodo Edit. Dieser Editor ist eine abgespeckte aber dafür kostenlose Version von Komodo IDE.
Unter Windows gibt es -wie bei den meisten Programmen- einen Wizard, der Schritt für Schritt alle Fragen und Einstellungen abharkt. Für Linux ist es ein klein wenig komplizierter. Um Rechten-Probleme und damit die gefahr eine Datei nicht ausführen zu können, aus dem weg zu gehen, befolgen Sie die Anleitung bitte Schritt für Schritt (verwenden Sie also zum Beispiel für das Entapcken auch die Konsole und nicht etwa Ark).
- Zunächst laden Sie sich das Archiv der aktuellen Version herunter (das geht über den Link „Komodo Edit“ von oben).
- Als nächstes öffnen Sie die Shell und tippen dort „su“ und dann das root-Passwort ein, um sich als root anzumelden.
- Nun gehen Sie mit „cd [Ordner]“ in den Ordner, in dem das Archiv liegt. Tippen Sie „tar -xvzf Komodo-Edit-<Version>-<Plattform>.tar.gz“ um alle Datein zu entpacken.
- Wechelsn Sie mit „cd Komodo-Edit-<Version>-<Plattform>.tar.gz“ in den automatisch erstellen Ordner.
- Tippen „./install.sh“.
- Nun können Sie den Installationspfad festlegen. Ich empfehle „/opt/Komodo-Edit-<Version>“.
- Nach einem Enter wird Komodo installiert.
- Sie können Komodo Edit nun per Shell oder [Alt]+[F2] aufrufen. Nach einem Neustart, erscheint außerdem im Startmenü unter „Neue Anwendungen“ und „Entwicklung | Weitere Programme“ eine Verknüpfung.
Systemcalls mit C unter Linux
So… das Thema dieses Eintrags sind also „Systemcalls mit C unter Linux“… doch was sind jetzt eigentlich „Systemcalls“ oder auch kurz „Syscalls“?
Ich will mich hier kurz fassen: Syscalls bieten eine Möglichkeit, aus einem Benutzerprogramm (oder eben aus einem C-Programm heraus) Funktionen des Kernels zu benutzen; normalerweise hat man ja auf diese wichtigen, geschützten Funktionen (berechtigterweise) keinen Zugriff.
Kommen wir jetzt allerdings zum Thema Linux: was gibt es jetzt dort also für Syscalls? Die Antwort steht in der Datei /usr/src/linux-2.6.22.5-31/include/asm-i386/unistd.h. Dort sind alle Syscalls aufgeführt
(Ordnernamen können abweichen)
Doch ohne Besipiele wäre dieser Eintrag doch recht öde, von daher hier mal ein kleines Beispielprogramm:
#include <unistd.h>
int main( void )
{
write( 0, "Hallo, Welt!\n", 13 );
return 0;
}
Der hier benutzte Syscall ist write; dieser Syscall trägt die Nummer 4 (ja, jeder Syscall hat auch eine Nummer, diese steht ebenfalls in unistd.h). Was macht dieser Syscall nun? Schlichte Antwort: er gibt die Zeichenkette, die als zweiter Parameter übergeben wird, einfach aus. Wo diese Zeichenkette jetzt ausgegeben werden soll, legt der erste Parameter fest; 0 steht einfach für die Standardausgabe – den Bildschirm. Die 13 gibt einfach die Anzahl der zu schreibenden Zeichen an
(Würden wir zum Beispiel anstatt 13 die Zahl 11 angeben, wäre die Ausgabe: Hallo, Welt)
Zugegeben: dieses Programm war nicht gerade spektakulär, aber es gibt ja auch noch andere Syscalls – einfach mal ausprobieren!