Technische Praxis der Computersysteme Teil 1 - Universität Wien
Technische Praxis der Computersysteme Teil 1 - Universität Wien
Technische Praxis der Computersysteme Teil 1 - Universität Wien
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.2 Multitasking 2 TECHNISCHE EINLEITUNG<br />
Grundlegendes Linux-Design<br />
Trennung:<br />
– Kernel-Modus (privilegiert)<br />
– User-Modus (nichtprivilgiert)<br />
– benötigt ≥ 80386<br />
modularer Betriebssystemkern<br />
geschichtetes Betriebssystem<br />
Server-Client-Architektur (Netzwerkfähigkeit)<br />
– Ausfallssicherheit<br />
– Protokollierung<br />
Folie 24<br />
dem Kontextwechsel nichts ereignet (natürlich ausser Än<strong>der</strong>ungen, die ausserhalb seiner<br />
Kontrolle liegen).<br />
Gründe dafür, einen laufenden Prozeß zu unterbrechen sind:<br />
Der dem Prozeß zustehende Anteil an verfügbarer CPU-Zeit (Zeitscheibe) ist abgelaufen.<br />
Das Betriebssystem führt einen Kontextwechsel durch und zwar ohne daß <strong>der</strong><br />
Prozeß selbst etwas tun muß o<strong>der</strong> sich dagegen wehren könnte. Dieses Verfahren wird<br />
präemptive Ablaufkontrolle (preemptive scheduling) genannt und stellt damit sicher,<br />
daß kein Prozeß auf Kosten aller an<strong>der</strong>en Prozesse die alleinigen Ausführungsrechte<br />
okkupieren könnte.<br />
Ein Prozeß möchte auf eine Ressource zugreifen, die (<strong>der</strong>zeit) nicht vorhanden ist o<strong>der</strong><br />
etwas Zeit zur Bereitstellung erfor<strong>der</strong>t. Ein prominentes Beispiel dafür sind alle Arten<br />
von Ein-/Ausgabeanweisungen.<br />
Der Prozeß wird durch eine Intervention angehalten (dies kann auf verschiedene Weisen<br />
durch einen an<strong>der</strong>en an<strong>der</strong>en Prozeß o<strong>der</strong> auch durch einen Benutzer mit den<br />
entsprechenden Berechtigungen geschehen).<br />
Ein typisches Beispiel für den zweiten Punkt ist das folgende: Ein Prozeß will einen Block<br />
einer Datei von einer Festplatte lesen. Das Betriebssystem muss (über Treiber und Plattencontroller)<br />
die Daten von <strong>der</strong> Festplatte einlesen und <strong>der</strong> Prozeß ist gezwungen, auf die<br />
Daten zu warten. Tatsächlich macht MsDOS (und auch DOS/Windows) dies so, was nichts<br />
an<strong>der</strong>es bedeutet, als daß <strong>der</strong> Prozeß in dieser Zeit Däumchen dreht. Etwas technischer wird<br />
dies auch aktives Warten (Active Waiting) o<strong>der</strong> Polling genannt. Bei Unix (und allen an<strong>der</strong>en<br />
Multitasking Betriebssystemen) wird dem aktiven Warten durch einen Kontextwechsel<br />
entgangen; auch versucht man auf an<strong>der</strong>er Ebene diesem gezwungenen Stillstand durch eine<br />
Datenanfor<strong>der</strong>ung zu entgehen, indem zB die Daten strategisch günstig von <strong>der</strong> Festplatte<br />
gelesen werden.<br />
Threads: Die Aufteilung von Systemaufgaben in einzelne Prozesse ist also ein Mittel,<br />
Ressourcen effektiv (ohne aktives Warten) zu organisieren. Dieselbe Strategie, auf das Niveau<br />
<strong>der</strong> Prozesse selbst angewandt, führt zur Idee <strong>der</strong> Threads. Ein Thread verhält sich von <strong>der</strong><br />
Organisation <strong>der</strong> Rechenzeit her genauso, wie wir bislang einen Prozeß beschrieben haben.<br />
Tatsächlich besteht auch je<strong>der</strong> Prozeß aus mindestens einem Thread. Threads können aber<br />
23