02.11.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!