Allgemein - Linux

Linux vs Windows: von DOS bis zum Hybrid-Kernel

2 PCs

Wer heute vor seinem Rechner sitzt, vergisst leicht, dass die modernen Betriebssysteme Windows und Linux auf völlig unterschiedlichen Fundamenten stehen. Während das eine als grafischer Aufsatz für ein rudimentäres Disk-Betriebssystem begann, entstand das andere als „Hobby-Projekt“ eines Studenten. In diesem Beitrag werfe ich einen Blick auf die technische Geschichte, die Architektur und die fundamentalen Unterschiede in der Handhabung von Dateien und Ressourcen.

Die Windows-Linie: Von DOS zu „Chicago“ und NT

Die Reise von Windows begann 1985 mit Windows 1.0, das als grafische Benutzeroberfläche (GUI) vollständig auf MS-DOS basierte und dieses für alle Systemzugriffe nutzte.1 Da DOS zunehmend an seine Grenzen stieß, entwickelten IBM und Microsoft ursprünglich gemeinsam OS/2 (Operating System/2) als multitaskingfähigen Nachfolger.

Microsoft beendete diese Kooperation jedoch 1991, um die gewonnenen Erkenntnisse in die eigene Windows NT-Serie (New Technology) fließen zu lassen, die 1993 als echtes 32-Bit-System für professionelle Anwender erschien. Im Gegensatz zur DOS-Linie wurde NT von Grund auf als echtes 32-Bit-System mit einem Schichtenmodell entwickelt, das direkten Hardwarezugriff durch Programme strikt untersagte.

Ein entscheidender Wendepunkt für den Massenmarkt war das Projekt „Chicago“, das 1995 als Windows 95 auf den Markt kam. Chicago war ein technologischer Hybrid: Es brachte ein eigenes, angepasstes DOS mit und führte einen 32-Bit-Systemkern ein, blieb aber eine Mischung aus 16- und 32-Bit-Code, um die Abwärtskompatibilität zu wahren. Erst mit Windows XP im Jahr 2001 wurden die instabile Consumer-Linie (9x) und die robuste NT-Profi-Linie endgültig in einer gemeinsamen Produktlinie auf NT-Basis vereint.

Die Linux-Linie: Die Geburtsstunde eines Monolithen

Während Microsoft versuchte, DOS und NT zu verschmelzen, postete ein finnischer Informatikstudent namens Linus Torvalds im August 1991 eine bescheidene Nachricht: Er arbeite an einem freien Betriebssystem, „just a hobby“.

Linux wurde von Anfang an als monolitischer Kernel konzipiert. Torvalds setzte früh auf die GPL-Lizenz, was eine weltweite Zusammenarbeit ermöglichte. Im Gegensatz zu Windows, das sich von der PC-Hardware nach oben entwickelte, stammte Linux (über die Unix-Philosophie) aus der Welt der Großrechner und musste für die PC-Hardware eher „heruntergebrochen“ werden.

Kernel-Architektur: Hybrid vs. Monolith

Der fundamentale technische Unterschied liegt im Design des Kerns:

  • Hybrid-Kernel (Windows NT): Das Design von NT ist stark von Mikrokernel-Konzepten (wie dem Mach-Kernel) beeinflusst. Die Idee ist eine modulare Struktur, bei der der eigentliche „Microkernel“ nur Kernfunktionen wie Thread-Scheduling und Interrupt-Handling übernimmt. Um jedoch die Performance-Einbußen klassischer Mikrokernel (durch ständige Kontextwechsel zwischen User- und Kernel-Modus) zu vermeiden, laufen bei NT fast alle Betriebssystemdienste (Executive) dennoch im privilegierten Kernel-Modus. Ein markantes Merkmal sind die „Environment Subsystems“ (wie Win32 oder früher POSIX), die es erlauben, verschiedene Betriebssystem-Persönlichkeiten auf demselben Kern laufen zu lassen. 2
  • Monolithischer Kernel (Linux): Bei Linux läuft das gesamte Betriebssystem – einschließlich Treibern, Dateisystemen und Netzwerkstack – im Kernel-Space. Dies ist theoretisch effizienter, da die interne Kommunikation schneller ist. Linux ist jedoch modular: Treiber können als Loadable Kernel Modules (LKM) zur Laufzeit geladen und entladen werden, ohne das System neu zu starten. 3

Dateisysteme und ein praktisches Problem: Das „Locking“

In der täglichen Arbeit zeigt sich ein massiver Unterschied darin, wie die Systeme mit geöffneten Dateien umgehen:

  • Windows (NTFS): Windows nutzt das NTFS-Dateisystem, das tief mit dem Security Reference Monitor (SRM) verzahnt ist. Wenn ein Prozess eine Datei zum Schreiben öffnet, setzt Windows in der Regel einen Lock (Sperre). Dies führt oft zu der bekannten Fehlermeldung „Datei kann nicht gelöscht/verschoben werden, da sie von einem anderen Programm verwendet wird“. Der Zugriff über Handles ist hier strikt reglementiert.
  • Linux (ext4, Btrfs, etc.): Linux folgt der Philosophie „Everything is a file“. Ein Dateiname ist hier lediglich ein Verweis (Hardlink) auf einen Inode, der die eigentlichen Daten auf der Festplatte beschreibt. Dateisperren sind unter Linux standardmäßig nur „advisory“ (beratend), das heißt, Prozesse können sie ignorieren. In der Praxis bedeutet das: Ich kann eine Datei, die gerade von einem Programm geschrieben wird, in einem anderen Terminal problemlos umbenennen, verschieben oder sogar löschen. Da der Kernel die Inode-Referenz zählt, bleiben die Daten für den schreibenden Prozess so lange erhalten, bis er die Datei schließt, selbst wenn der Dateiname im Verzeichnis bereits gelöscht wurde.

Sicherheit und Nutzerverwaltung

Beide Systeme haben grundlegend verschiedene Ansätze, wer was darf:

  • Windows (NTFS & SRM): Windows nutzt das NTFS-Dateisystem, das tief mit dem Security Reference Monitor (SRM) im Kernel verzahnt ist. Sicherheit wird über Access Control Lists (ACLs) durchgesetzt, die eine Security Identifier (SID) (Nutzer oder Gruppe) mit Rechten verknüpfen. Ein modernes Feature ist die Mandatory Integrity Control (MIC), die Prozessen Integritätsstufen zuweist, um sie voneinander zu isolieren.
  • Linux (Unix-Modell & LSM): Linux folgt dem Prinzip „Everything is a file“. Das klassische Modell nutzt 9-Bit-Berechtigungen (Read, Write, Execute für Besitzer, Gruppe, Andere). Der Root-Nutzer (PID 1) hat traditionell uneingeschränkte Macht. Zur weiteren Absicherung nutzt Linux das Linux Security Modules (LSM) Framework, in dem Module wie SELinux oder AppArmor Regeln erzwingen, die selbst Root nicht ohne Weiteres umgehen kann.

Speicherverwaltung: RAM, Swap und Pagefil

Beide Systeme nutzen virtuellen Speicher und Paging, um mehr RAM zu simulieren, als physisch vorhanden ist.

  • Windows: Der Memory Manager verschiebt inaktive Speicherseiten in die Datei pagefile.sys. Windows verwaltet Speicher zudem in Sessions, um Prozesse verschiedener Benutzer voneinander zu isolieren.
  • Linux: Linux nutzt einen Swap-Bereich (Partition oder Datei). Ein technisches Highlight ist der Parameter „Swappiness“: Er steuert, wie aggressiv der Kernel Daten auslagert, um physischen RAM für den Dateisystem-Cache freizuhalten. Zudem nutzt Linux Copy-on-Write (CoW) beim Erzeugen neuer Prozesse (fork), um Speicher extrem effizient zu teilen, solange er nicht verändert wird.

Technische Gegenüberstellung: Aktueller Stand

MerkmalWindows 11 (NT-Kernel)Modernes Linux (Kernel 6.x+)
Kernel-TypHybrid-Kernel (modulare Executive)Monolithisch (modular über LKMs)
Nutzer-PrinzipSIDs und Access Control Lists (ACLs)UID/GID und 9-Bit (rwx) Berechtigungen
Privilegierter NutzerAdministrator (eingeschränkt durch UAC)Root (traditionell uneingeschränkt)
Dateisystem-KernNTFS (integriertes Journaling & EFS)ext4, Btrfs, XFS (über VFS-Abstraktion)
DateisperrenMeist restriktiv/erzwungenMeist beratend (Advisory)
KonfigurationWindows Registry (zentrale Datenbank)Textbasierte Dateien (meist in /etc) [Inform. außerhalb]
Kernel-AbsicherungSRM & Mandatory Integrity Control (MIC)Linux Security Modules (SELinux, AppArmor)
SpeicherauslagerungPagefile.sys (Memory Manager gesteuert)Swap (steuerbar über „Swappiness“)

Ein abschließender Gag: Ballmers langer Schatten

Wer die Geschichte der Betriebssysteme verfolgt hat, erinnert sich vielleicht an Steve Ballmer, den ehemaligen Microsoft-CEO, der Linux einst als „Krebsgeschwür“ bezeichnete und mit allen Mitteln versuchte, die Open-Source-Bewegung zu stoppen.

Die Ironie der Geschichte: Heute ist Linux ein integraler Bestandteil von Windows. Mit dem Windows Subsystem for Linux (WSL 2) liefert Microsoft mittlerweile einen echten Linux-Kernel direkt innerhalb von Windows aus. Entwickler können Linux-Tools nativ nutzen, ohne das System zu verlassen. Es scheint, als hätte Microsoft am Ende eingesehen: Wenn man den „Feind“ nicht besiegen kann, liefert man ihn am besten einfach als Feature mit aus.

  1. https://mrpcss.com/the-difference-between-dos-based-windows-and-windows-nt/ ↩︎
  2. https://en.wikipedia.org/wiki/Hybrid_kernel ↩︎
  3. https://en.wikipedia.org/wiki/Linux_kernel ↩︎

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert