Eigenschaften von Modernen Betriebssystemen

Multitasking

Multitasking wird von allen modernen Betriebssystemen unterstĂŒtzt und bedeutet, dass

beispielsweise ein Anwender in einem Textverarbeitungsprogramm Dokumente bearbeiten, wĂ€hrend eine Datenbank im Hintergrund Daten sortiert. Der Vorteil ist offensichtlich, stellt aber fĂŒr den Computer ein Problem dar, da der Prozessor grundsĂ€tzlich nur ein einziges Programm auf einmal ausfĂŒhren kann. Die Lösung besteht darin, dass der Prozessor in rascher Folge zwischen den Programmen hin und her schaltet, und fĂŒr den Benutzer somit ein Eindruck der Gleichzeitigkeit entsteht. Es wird daher ein Mechanismus fĂŒr eine gerechte Zeitzuteilung an die Prozesse benötigt, damit die Prozesse nach einem Unterbruch problemlos weiterlaufen können. Schliesslich soll eine Aufgabe genau an der Stelle fortgesetzt werden können, an der sie unterbrochen wurde. Diese Umschaltung kostet jedes Mal einige Zeit und ist ein betrĂ€chtlicher Verwaltungsaufwand fĂŒr das Betriebssystem.

Ein Prozess oder Task besteht aus einem aktiven gerade laufenden Programm im Arbeitsspeicher und den zugehörigen Zustands- und Steuerinformationen. Diese Informationen mĂŒssen beim Multitasking gespeichert und danach wiederhergestellt werden, damit der Prozess weiterlaufen kann. Unter anderem mĂŒssen die folgenden Daten fĂŒr jeden Prozess gespeichert werden:

  • Geöffnete Dateien

  • Status der PeripheriegerĂ€te

  • Aktuelles Verzeichnis

  • Speicherbereich des Prozesses und seiner Daten

Die einzelnen Prozesse werden abwechslungsweise auf dem Prozessor ausgefĂŒhrt. Die Prozessorzeit wird hierbei in mehrere Zeitabschnitte eingeteilt. Ist ein Zeitabschnitt abgelaufen, entzieht das Betriebssystem dem aktuellen Prozess den Zugriff auf den Prozessor und gibt ihn an den nĂ€chsten Prozess weiter. Dieses Verfahren wird prĂ€emptives Multitasking genannt und von allen modernen Betriebssystemen eingesetzt. Die PrioritĂ€t eines Prozesses, die teilweise auch vom Benutzer definiert werden kann, legt fest, wie viel Zeit einem Prozess zur VerfĂŒgung gestellt wird. Die Anwendungen selbst haben darauf keinen Einfluss.

Beim kooperativen Multitasking bestimmt der Prozess selbst, wann er die Kontrolle abgibt. Dieses Verfahren kann allerdings dazu fĂŒhren, dass ein schlecht programmiertes, «abgestĂŒrztes» oder «bösartiges» Programm alle anderen Prozesse blockiert, weil es die Kontrolle nie ĂŒbergibt. Deshalb wird es heute kaum mehr eingesetzt.

Zur Veranschaulichung sehen Sie unten zwei Programme A und B, die auf einem Multitasking-Betriebssystem laufen. Jedes Programm verfĂŒgt ĂŒber drei Prozesse. Durch das Betriebssystem wird nun jedem Prozess reihum ein kurzer Zeitabschnitt zugeteilt, in dem er den Prozessor benutzen darf. Im Moment lĂ€uft gerade ein Prozess P1 des Programms A auf der CPU.

In der RealitÀt sind die Zeitabschnitte nicht gleich lang. Deren LÀnge und HÀufigkeit hÀngt von verschiedenen Faktoren wie der ProzessprioritÀt oder dem Prozesszustand ab. Z. B. erhÀlt der Prozess keine CPU-Zeit, wenn er auf einen anderen Prozess wartet.

Multitasking

Multiprozessor-Betrieb

Computer mit mehreren Prozessoren können anfallende Arbeit aufteilen. Mit mehreren Prozessoren können tatsachlich auch mehrere Tasks gleichzeitig (einer pro Prozessor) ausgefĂŒhrt werden. Wie gut die Arbeitsteilung funktioniert, hĂ€ngt allerdings stark vom jeweiligen Betriebssystem und den eingesetzten Anwendungsprogrammen ab. Das hĂ€ngt vor allem damit zusammen, dass Prozesse hĂ€ufig aufeinander warten mĂŒssen und somit selten alle Prozessoren gleichzeitig voll arbeiten können. Je intelligenter ein Betriebssystem die Prozesse verteilt und je besser ein Programm auf den Multiprozessor-Betrieb optimiert ist, desto grösser ist der Leistungsgewinn. Multiprozessor-Betrieb bringt also mehr Rechenleistung, sie wĂ€chst jedoch nie direkt proportional mit der Anzahl Prozessoren. Mit anderen Worten: Zwei Prozessoren leisten nicht zweimal so viel wie ein einzelner Prozessor, drei Prozessoren leisten nicht dreimal so viel wie ein einzelner Prozessor etc.

In der untenstehenden Abbildung sehen Sie, dass bei zwei Prozessoren nun tatsĂ€chlich zwei Prozesse gleichzeitig ausgefĂŒhrt werden (P1 von Programm A auf CPU1 und P1 von Programm B auf CPU2), wir haben hier also echtes Multitasking.

Multiprozessor

Multi-Threading

Aktuelle Betriebssysteme arbeiten zusÀtzlich zu Multitasking auch mit Multi-Threading. Multi-Threading ist eine Weiterentwicklung des Multitasking-Verfahrens. Dabei wird ein einzelner Prozess in mehrere gleichzeitig laufende Teilprozesse bzw. Threads unterteilt. Multi-Threading kann quasi als Multitasking innerhalb eines Tasks aufgefasst werden.

Multi-Threading erlaubt beispielsweise, dass der Benutzer innerhalb desselben Tasks einen Text erfasst, wĂ€hrend im Hintergrund die Silbentrennung und die RechtschreibprĂŒfung laufen. Die Silbentrennung und die RechtschreibprĂŒfung entsprechen also einzelnen „ProzessfĂ€den“ im Task der „Textverarbeitung“. Gleichzeitig können weitere Tasks wie z.B. ein Download on MP3-Dateien oder eine Datenbankabfrage im Gang sein.

Multithreading

Vorteile eines Multi-Threading Betriebssystems:

  • Threads sind so konzipiert, dass das Umschalten zwischen den einzelnen Threads viel schneller geht als zwischen laufenden Prozessen, da weniger interner Verwaltungsaufwand entsteht. Ein ă…€ Thread ist somit eine Art „Leichtgewichts-Prozess“.

  • Auf einem Multiprozessor-System kann die Verarbeitungsgeschwindigkeit betrĂ€chtlich gesteigert werden, weil der Hauptprozess Teilaufgaben an einem Thread abgeben kann und so entlastet wird.

Nachteile eines Multi Threading Betriebssystems:

  • Da Threads denselben Speicherbereich benutzen, können sie sich gegenseitig beeinflussen, stören oder gar zum Absturz bringen.

T1 = Thread 1

Multiuser

Ein Multiusersystem ist ein System auf dem mehrere Benutzer gleichzeitig arbeiten können. Dazu sollten die Benutzer fĂ€hig sein ihre OberflĂ€che zu personalisieren und Einstellungen vorzunehmen zu können. Auch muss festgelegt werden, welcher User auf dem System was ausfĂŒhren darf.

Bekannte Beispiele von Multiusersystemen sind Windows RDS (Remote Desktop Service, frĂŒher Terminal Services) und Citrix XenApp.

Ein Windows Client Betriebssystem unterstĂŒtzt keine Multiuserkonfiguration. Die meisten Linux Distributionen unterstĂŒtzen eine Multiuserkonfiguration via SSH (Kommandozeilenverbindung ĂŒber das Netzwerk).

Auslagerung von Arbeitsspeicher

Falls zu wenig RAM fĂŒr alle Prozesse vorhanden ist, werden bestimmte Prozesse vom Arbeitsspeicher auf die Festplatte ausgelagert. Damit wird dem Prozessor mehr Speicher „vorgegaukelt“, als tatsĂ€chlich vorhanden ist. Dies ermöglicht es, sehr viele Tasks gleichzeitig auszufĂŒhren, fĂŒhrt jedoch dann beim Zugriff auf den ausgelagerten Speicher zu einer starken Verlangsamung, da der Zugriff auf die Festplatte viel langsamer ist als der Zugriff auf den Arbeitsspeicher.

Beim Paging werden einzelne Speicher-seiten von fester Grösse (z.B. 1 kB) ausgelagert; normalerweise wird die am lÀngsten nicht benutzte Speicherseite ausgelagert. Somit kann es sein, dass vom Prozess 1 mehr als die HÀlfte des geschriebenen Arbeitsspeichers auf der Festplatte liegen.

Wird ein solcher Speicherbereich wieder angesprochen, schreibt das System diesen wieder ins RAM.

Memory Paging

Beim Swapping werden ganze Prozesse, die lange nicht mehr aktiv waren, auf die Festplatte ausgelagert. Werden ausgelagerte Prozesse wieder aktiv, schreibt das System diese wieder in das Memory. Heute wird meist ein swap-File ver-wendet.

Memory Swapping

In modernen Betriebssystemen werden meist beide Verfahren kombiniert eingesetzt.

Last updated