Programmieren lernen mit Eas — das Tutorial von Molaskes

Wie der Computer funktioniert:13. Das Betriebssystem

Das Betriebssystem ist das Hauptprogramm eines Computers, das alle E/A-Ports, Interrupts und Timer verwaltet, ein Dateisystem implementiert usw. und Unterprogramme ausführen kann. Diese Unterprogramme verwenden von ihm vorgegebene Kommunikations-Protokolle, um auf die Services des Betriebssystems zugreifen zu können, etwa alle der oben genannten (E/A, Interrupts, Dateisystem und so weiter) und eine standardisierte Nutzer-Schnittstelle‌ ("Fenster", Nutzer-E/A usw.). Sie erhalten jeweils ihren eigenen reservierten RAM-Bereich und sind keine eigenständigen Programme, die alle Hardware-Ports und Register eigenständig verwenden, vielmehr sind sie Erweiterungen für das Betriebssystem- Hauptprogramm, die sich zur Laufzeit hinzufügen (starten) und entfernen (beenden) lassen. Manche dieser Unterprogramme verwenden eine Nutzer-Schnittstelle und werden dann einfach als "Programm", "Anwendung" oder "Applikation" bezeichnet (engl. "executable" → *.exe), andernfalls laufen sie im Hintergrund als Hilfswerkzeuge entweder für das Betriebssystem selbst oder für andere Programme und werden dann beispielsweise "Hilfsprozess" genannt (engl. "dynamically linked library" → *.dll‌ = "dynamisch eingebundene Bibliothek"), je nach dem Betriebssystem-Jargon. Mehrere solcher Hilfsprozesse und Anwendungen können in einem Betriebssystem "gleichzeitig" laufen, was als Multi-Tasking bezeichnet wird. Natürlich macht der Programmzeiger einfach immer nur bei jedem Takt einen Schritt und nichts geschieht wirklich gleichzeitig, aber die Prozesse kommen jeweils in kurzen Abschnitten‌ jeder der Reihe nach immer im Kreis herum abwechselnd voran, so dass sie alle zur selben Zeit gestartet sein können und dann scheinbar parallel nebeneinander laufen. Das Betriebssystem ruft entweder Module der Prozesse wie Funktionen auf und muss warten, bis diese fertig sind und den Programmzeiger wieder freigeben, was als kooperatives‌ Multi-Tasking bezeichnet wird, oder es nutzt einen Timer, um zwischen den Prozessen umzuschalten, wobei es jedesmal den Programmzeiger speichert und wiederherstellt, was präemptives Multi-Tasking genannt wird (von engl. "preemptive" = eigentlich "präventiv"). Vor allem beim präemptiven Multi-Tasking teilt das Betriebssystem den Prozessen jeweils unterschiedliche Zeiten für den nächsten Ablaufs-Abschnitt zu, gewichtet nach ihrer aktuellen Priorität, da manche Prozesse etwa gerade umfangreiche Berechnungen anstellen, andere aber nur passiv auf Nutzereingaben oder Ähnliches warten. Für die rechenintensiven Zeiten kann jeder Prozess aktiv eine in der Abwiegung mit konkurrierenden Prozessen höhere Priorität beantragen oder eine niedrigere erlauben und/oder der Nutzer kann dies für jede Anwendung im Betriebssystem einstellen. Hier eine Illustration des kooperatien Multi-Taskings:
BS: Okay, Prozess A, du bist dran!
P-A: Dumdidumdidumdidum. Fertig!
BS: Danke. Prozess B, du bist dran!
P-B: Diddldididdlidi.Fertig!
BS: Danke. Nun wieder Prozess A!
P-A: Dudumdidumdidumdidumdumdum. Fertig!
BS: Danke. Und jetzt wieder Prozess B!
...
Zum Vergleich nun präemptives Multi-Tasking:
BS: Prozess A, weitermachen!
P-A: Dumdidumd—
BS: STOPP! Das reicht erstmal. Prozess B!
P-B: Diddldididdli—
BS: STOPP! Das reicht. Prozess A!
P-A: —idumdi—
BS: STOPP! Das reicht. Prozess B!
...
13. Das Betriebssystem
D Du brauchst zwei Dinge
K Kontakt
Esc Suchen / Inhaltsverzeichnis
Tab