FreeDOS ist ein Open-Source-Betriebssystem, das Kompatibilität mit MS-DOS herstellen soll. Es wurde hauptsächlich entwickelt, um alte Programme und Spiele auf moderner Hardware zum Laufen zu bringen. Besonders interessant ist es, in die Vergangenheit der Betriebssysteme zu schauen und zu merken, wie viele Mechanismen, die wir heute als selbstverständlich erachten, damals einfach nicht existierten.
Hierbei rede ich nicht einmal von grafischen Benutzeroberflächen, sondern von grundlegenden Sicherheitsprinzipien. Zum Beispiel existiert bei DOS-Systemen keine Trennung von Kernel- und Userspace, wie sie in modernen Betriebssystemen üblich ist. Diese Trennung, auch als Privilegienstufen oder Ringarchitektur bekannt, schützt moderne Systeme vor schädlichen Zugriffen und sorgt für Stabilität.
Moderne Betriebssysteme verwenden eine sogenannte Ringarchitektur, die unterschiedliche Privilegienstufen für die Ausführung von Code definiert. Diese Ringe reichen von Ring 0 (Kernel-Mode) bis zu Ring 3 (User-Mode):
Im Gegensatz dazu läuft bei FreeDOS alles ohne diese Trennung. Jeder Prozess kann direkt auf die Hardware zugreifen, was zwar flexibel ist, aber auch Sicherheitsrisiken birgt.
Ein interessantes Beispiel dafür, wie einfach es früher war, auf die Hardware zuzugreifen, ist der Umgang mit dem Parallelport. Ich habe ein cooles Youtube Video gefunden, das zeigt, wie man mit einfachem QBasic den Parallelport steuern kann.
Heutzutage wäre es undenkbar, ohne spezielle Berechtigungen oder Treiber direkt auf die Hardware zuzugreifen. Doch bei FreeDOS ist das ganz einfach.
Hier eine Anleitung, wie du mit FreeDOS und QBasic den Parallelport steuern kannst:
cd bin
qbx
Hier ein kleines Programm, das von 1 bis 255 zählt und die Zahl sowohl auf dem Bildschirm als auch über den Parallelport in binärer Form ausgibt:
FOR COUNT = 0 TO 255 STEP 1
OUT 888, COUNT
PRINT "Number: ", COUNT
SLEEP 1
NEXT COUNT
Die 888
steht für den Parallelport.
Der Aufbau sieht so aus: Jumper verbinden die Datenleitungen des Parallelports mit dem positiven Ende einer LED.
Alle LEDs sind mit GND
vom Parallelport verbunden.
Hier zwei Fotos des Aufbaues:
|
Und hier ein kurzes Video, das den Zählvorgang zeigt: