Technische Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungen Übungsblatt 10 A1: Betriebssysteme 1. Was ist ein Betriebssystem? Welche Aufgaben hat ein Betriebssystem? ˆ Prozessverwaltung ˆ Speicherverwaltung ˆ Dateiverwaltung ˆ Geräteverwaltung ˆ Verwaltung des Netzzuganges 2. Die gängigsten Betriebssysteme auf den üblichen PC s sind heute LINUX, MAC OS und WINDOWS. Was sind ihre Gemeinsamkeiten und Unterschiede? Unix gibt es seit 1972. Ursprünglich war Unix kein kommerzielles System. Durch unklare Lizenbedingungen konnten einige Firmen Unix in leicht abgewandelterer Form unter eigenem Namen auf den Markt bringen (AIX, Solaris, HP-UX, Sinix,...). Daher gibt eine Reihe unterschiedlicher kommerziellen Varianten, aber inzwischen auch wieder zahlreiche freie Versionen. Die unterschiedlichen kommerziellen Varianten führten am Ende der DOS-Ära auf den damals relativ kleinen PC s der Normaluser dazu, dass sich als Betriebssystem die Windows-Familie durchsetzen konnte. Bis ca. 1985 sprach man von Computern, die in der Lage waren, ein Unix als Betriebssystem zu fahren, von Workstations im Gegensatz zu den Personal Computern im heimischen Bereich. Der Vorteil der Unix e ist, dass die Bedienung immer gleich oder sehr ähnlich ist. Auch der Aufbau und die Dienstprogramme unterscheiden sich kaum. Da zu Beginn der Unix-Zeit ein Computer sehr teuer war, ist das Betriebssystem als Multi-Tasking und Multi-User-System konzipiert worden. Es können also mehrere Benutzer gleichzeitig mit dem Computer arbeiten. Früher waren diese im Wesentlichen über sogenannte Bildschirm-Terminals angeschlossen, heute greift man stattdessen häufig per Netz auf einen solchen Computer zu. Zusätzlich können verschiedenen emulierte Konsolen wahlweise auf den Monitor des PC s angezeigt werden. Sehr positiv wird von den Benutzern und Adminstratoren die einfache modulare Struktur des Betriebssystem gelobt, die eine relativ gute Wartung und Administration dieses Systems ermöglicht. GNU (GNU ist not Unix) ist ein freier Clone von UNIX. Mit der Entwicklung von GNU gibt es zum inzwischen weit verbreiteten Windows einen freien Konkurenten
auf dem Betriebssystemmarkt. Dieses System kann im Prinzip mit den verschiedensten Kerneln betrieben werden. Der bekannteste dieser Kernel ist Linux. Es gibt aber auch weitere freie Kernel: FreeBSD NetBSD OpenBSD etc. Windows steht als Begriff für eine gesamte Betriebssystemfamilie. Die ersten Versionen waren nur ein grafischer Aufsatz auf dem bis dahin vorherrschenden DOS ebenso wie andere Alternativen wie z.b. GEOS. 1 Die nächste Generation waren die Systsem Win95, Win98 und WinME. Diese basierten zwar noch auf einem DOS- Kernel, übernahmen nach dem Start jedoch viele weitere Aufgaben des eigentlichen Betriebsystemes wie z.b. Netz-Zugang etc. Das entspricht nun nicht im geringstem einem modularen Aufbau. Diese Funktionen waren durch das darunterliegende DOS modernen Ansprüchen nicht genügend realisierbar. Teilweise parallel und dann auch ablösend wurde 1993 die erste Variante von Windows NT und 1996 die erste richtig funktionierende Version Windows NT 4 veröffentlicht. Diese hatten einen eigenen Kernel, sodass man erst jetzt eigentlich von einem Windows-Betriebssystem sprechen konnte. Die Versionen Windows XP und Windows Vista sind eigentlich nur Weiterentwicklungen dieser Linie. Da Windows historisch aus der Zeit des persönlichen Computers stammt, ist es bis heute ein Einzelbenutzersystem geblieben (Single-User). Natürlich können inzwischen auch mehrere Benutzer voneinander abgeschottet mit dem System arbeiten, aber eben nicht zur gleichen Zeit. Macintosh ist die dritte heute vorhandene Plattform. Ursprünglich war Macintosh das Betriebssystem einer speziellen Hardware, da eigentlich Apple Hardware- Produzent ist. Diese von ihnen produzierte Hardware war vor ca. 20 Jahren den üblichen anderen Computern weit überlegen und ermöglichte schon relativ früh eine grafische Oberfläche. Diese im Laufe der Zeit weiterentwickelte Oberfläche verschaffte dem System eine doch nicht geringe Anhängerschaft. Inzwischen hat Apple einen doppelten Schwenk gemacht: Die Hardwareplattform basiert mittlerweile auf sogenannter Standardhardware und der Unterbau unter der grafischen Betriebssytemoberfläche, genannt Aqua, ist nicht mehr Marke Eigenbau, sondern nun ein FreeBSD-Unix. Die ersten Versionen von Mac OS waren Single-User-Betriebssysteme, nicht einmal ein sauberes Multitasking haben sie erlaubt, nun sind sie als eine Spielart von Unix natürlich auch Multi-Tasking und Multi-User fähig. Aufgrund des Unix-Unterbaues können in einer Apple-Konsole inzwischen auch schon völlig normale Unix-Kommandos eingegeben werden und man ist nicht mehr von den Programmen auf der grafischen Oberfläche abhängig. 3. Es gibt wesentlich mehr Betriebssysteme. Welche sind Euch bekannt? Informiert Euch u.a. im Netz z.b. in der Wikipedia über weitere Betriebssysteme. Früher auf dem Heim-PC : DOS. Dieses System hat ca. 15 Jahre den PC beherrscht.. Es machte im wesentlichen Dateiverwaltung, es heisst ja auch: DOS: Disketten-Operating-System, Multitasking gab es noch nicht, virtuellen Speicher und Netzwerke auch nicht, Geräte wurden direkt über sogenannte Ports angesprochen. Wie oben erwähnt, wurde DOS durch die Windows-Versionen abgelöst. Im Windows- System kann man jedoch ein Programm starten, dass dem Benutzer ein DOS-Fenster öffnet und sich weitgehend wie ein altes DOS verhält. Auch auf UNIX-Systemen kann man ein Programm namens DOSEMU oder DOSBOX installieren und darin alte DOS-Programme ausführen. OS/2 ist eine gemeinsame Entwicklung von IBM und Microsoft. Dieses System sollte das DOS ablösen. 1991 wurde diese Zusammenarbeit beendet. Microsoft entwickelte 1 Auf dieselbe Art und Weise wird beispielsweise in Unix eine grafische Darstellung realisiert. In dem jeweiligen Unix wird eine Software (meistens X mit einem aufbauenden Windowmanager KDE, GNOME oder XFCE etc.) mit Grafikunterstützung gestartet.
daraus Windows-NT und IBM vermarktete OS/2 alleine weiter. Mitte der neunziger Jahre war das System im kommerziellen Bereich, vor allem Banken, recht erfolgreich, da es ein sicheres System war bzw. ist und vergleichsweise anspruchslos war (gegenüber Unix) (Speicherbedarf ca. 12 MB). Für die schmalbrüstigeren Heimcomputer war es jedoch zu anspruchsvoll und konnte sich daher gegen die ersten Windows-Computer nicht durchsetzten. Zudem war sich IBM wohl zu schade für einen harten Kampf um den Markt des einfachen Mannes. Die Entwicklung wurde 2005 eingestellt, es lebt allerdings als ecomstation weiter. Das System hat alle modernen Konzepte eines Betriebssystems beinhaltet. Amiga von Commodore und Atari-ST waren in den 80- und 90-Jahren Konkurrenten der DOS-Systeme. Beide Systemfamilien bauten schon auf grafischen Betriebssystemoberflächen auf. Heute spielen sie keine Rolle mehr. Natürlich gibt es für Computer, die nicht den Mikrocomputern zuzurechnen sind, noch viele verschiedene Betriebssysteme. Z.b. gibt es auf Minirechner das DEC-PDP oder auf IBM-Computern die Systeme S360, zseries,..., auf die hier aber nicht weiter eingegangen werden soll. 4. Was ist eine Kommandozeile und was ist eine GUI? Ein Benutzer muss mit dem Betriebssystem interagieren können. Da der Computer eine zeichen-verarbeitende Maschine ist, ist es naheliegend, einem Computer die gewünschten Anweisungen als Textzeile einzugeben. Eine solche Möglichkeit nennt man umgangssprachlich eine Kommandozeile. Da es sich um eine Schicht über dem eigentlichen Betriebssystem handelt, heissen die Programme meisten Shell für Schale. In Unix-basierten Systemen gibt es unterschiedliche Varianten wie z.b. bash, zsh, csh,... Die Eingaben auf einer solchen Kommandozeile müssen syntaktisch korrekt sein. Das ist für manchen Anwender nicht unproblematisch. Daher gibt es seit einigen Jahren sogenannte grafische Oberflächen, sodass der Benutzer häufig nur durch Klicken auf sogenannte Buttons zu seinem Ziel kommt. Solche Oberflächen werden Graphical User Interfache (GUI) genannt. 5. Es gibt in einigen Betriebssystemen sogenannte Vorder- und Hintergrundjobs. Was versteht man darunter? Warum gibt es so etwas? In modernen Betriebssystemen können mehrere Aufgaben gleichzeitig durchgeführt werden. Nicht jede Aufgabe hat notwendigerweise eine Bildschirmausgabe. Beispielsweise benötigt eine Druckausgabe normalerweise nicht eine zusätzliche Ausgabe auf dem Monitor. Auch Dienste wie z.b. ein Webserver, Mailserver etc. können ihre Aufgaben im Hintergrund verrichten. Eine Prozess, dem allerdings eine Konsole bzw. ein Fenster zugeordnet ist, verrichtet seine Aufgabe im Vordergrund.
A2: Prozessverwaltung 1. Was ist ein Prozess? Ein Prozess ist ein Programm, das vom Betriebssystem gestartet wurde. Ein Programm kann mehrfach gestartet werden. Also mehrere Prozesse können dasselbe Programm sein. Zusätzlich sind für jeden Prozess Statusinformationen (Registerund Speicherinhalte, Zustände) notwendig. 2. Wie können wir uns die Prozessstruktur beispielhaft in LINUX anzeigen lassen? (wenn Ihr es nicht wisst, versucht im Netz durch geschickte Suchanfragen in einer Suchmaschine auf eine Lösung zu kommen.) ps werden alle Prozesse des Benutzers in der entsprechenden Konsole angezeigt. ps -a werden alle Prozesse in allen Konsolen des Benutzers angezeigt. ps -e werden alle Prozesse des Benutzers z.b. auch auf der grafischen Oberfläche angezeigt. pstree erhalten wir eine baumartige Darstellung. 3. Wie sieht der Lebenszyklus eines Prozesses aus? Siehe dazu Skript Abb. 14.1. Es gibt die Zustände: ˆ neu ˆ bereit ˆ laufend ˆ wartend ˆ beendet 4. Was ist Multitasking? Was muss das Betriebssystem tun, wenn mehrere Prozesse in einem Multitaskingsystem bearbeitet werden sollen? Bedenkt: Das Betriebssystem kann (Annahme!) zur selben Zeit nur einen Prozess tatsächlich vom Computer bearbeiten lassen. Bei einem Multitasking werden mehrere Prozesse (scheinbar) gleichzeitig ausgeführt. Das Betriebssystem muss sich merken, welcher Prozess gestartet wurde. Die Umschaltung erfolgt dann beispielsweise intern (Prozess unterbricht sich selbst, z.b. durch I/O-Zugriff). Dann kann das Betriebssystem einen anderen Prozess starten oder weiterarbeiten lassen. Ein Prozess darf jedoch nicht beliebig lange arbeiten. Er wird daher vom Betriebssystem extern unterbrochen. Dazu führt das BS eine sogenannte Zeitscheibe. Alle Register des unterbrochenen Programmes müssen dann gesichert werden. Der Scheduler entscheidet dann, welcher der Prozesse im Zustand ready als nächstes ausgeführt wird. Dazu muss der Prozess eventuell neu in den Arbeitspeicher geladen werden, die Register zurückgesetzt werden und auch die aktuellen Daten des Prozesses müssen wieder korrekt vorhanden sein.
A3: Speicherverwaltung 1. Was ist virtueller Speicher? Wie wird er realisiert? Der Speicher wird nicht über reale Adressen angesprochen, sondern über sogenannte virtuelle Adressen. Die virtuellen Speicherstellen liegen dann entweder tatsächlich im Hauptspeicher oder ausgelagert auf der Festplatte. Wird eine Seite benötigt, die gerade nicht im Hauptspeicher liegt, wird ein Page Fault Interrupt ausgelöst, der vom Betriebssystem behandelt wird, indem die Seite eingelesen (und evtl. eine andere ausgelagert) wird. 2. Was ist ein Stack? Ein Stack ist ein Speicher, der die lokalen Variablen einer Prozedur enthält. Wird die Prozedur mehrfach (rekursiv) aufgerufen, wird einfach im Stack weiterer Speicher reserviert, bei Beendigung der Prozedur wird er dann wieder freigegeben. 3. Was ist ein Heap? Ein Heap ist ein Speicher, den sich Prozesse dynamisch zuweisen lassen können.