Bit wisem 2015-wieners-sitzung-13_Zusammenfassung II
Bit wisem 2015-wieners-sitzung-08_Betriebssysteme: Metaphern, Datei- und Ressourcenverwaltung
1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung
Dr. Jan G. Wieners // jan.wieners@uni-koeln.de
Basisinformationstechnologie I
Wintersemester 2015/16
30. November 2015 – Betriebssysteme – Metaphern, Datei- und Ressourcenverwaltung
2. (Organisatorisches) √
Grundlagen I √
Grundlagen II √
Grundlagen III √
Rechnertechnologie I √
Rechnertechnologie II √
Rechnertechnologie III √
Dezember und Januar:
Betriebssysteme
Software-Entwicklung
Programmiersprachen
Algorithmen und Datenstrukturen
Theoretische Informatik
Probeklausur
Seminarverlauf
9. Bottom-Up
„Die Aufgabe eines Betriebssystems besteht darin,
eine geordnete und kontrollierte Zuteilung der
Prozessoren, Speicher und Ein-/Ausgabegeräte
an die um sie konkurrierenden Programme
durchzuführen“
(vgl. Tanenbaum: Moderne Betriebssysteme. 2009, S. 35 ff.)
Ein Betriebssystem übernimmt die Verwaltung aller Bestandteile eines
komplexen Systems
Top-Down
Betriebssysteme verwandeln […] etwas
Hässliches in etwas Schönes […].“
(vgl. Tanenbaum: Moderne Betriebssysteme. 2009, S. 34)
Programmiersicht: Ein Betriebssystem stellt Abstraktionen für
Anwendungsprogramme bereit
Blickwinkel (Tanenbaum)
10.
11.
12.
13. (Interface / GUI)
Bereitstellung elementarer Dienste und
Ressourcen
Dienste, die (vereinfachten) Zugriff auf Ressourcen
ermöglichen.
Ressourcen
Rechenzeit (CPU / GPU)
Hauptspeicher
Festplatten- / Wechselmedienspeicherplatz
Interne Geräte wie Erweiterungskarten, Onboard-
Komponenten (z.B. Onboard Soundkarte, Onboard LAN)
Externe Geräte, z.B. über USB mit dem Rechner verbunden:
Scanner, Drucker
Betriebssysteme: Intention I
20. Wichtigste Datenstruktur jedes Volumes:
Masterdateitabelle (MFT, Master File Table)
Lineare Folge von festgelegten 1-KB-Einträgen
Jeder MFT-Datensatz beschreibt eine Datei oder ein
Verzeichnis
Enthält die Attribute der Datei (i.e. Name, Zeitstempel,
Liste von Adressen, die angeben, wo auf der Platte die
zugehörigen Blöcke stehen)
MFT ist selber eine Datei, kann somit irgendwo auf der
Partition liegen
NTFS: MFT
21. Von FAT-16 zu NTFS:
FAT-16
Altes MS-DOS Dateisystem
Verwendet 16-Bit Adressen,
dadurch Beschränkung von Fest-
plattenpartitionen auf max. 2GB
FAT-32
32-Bit Adressen;
Max. 2TB Partitionen
NTFS
64-Bit Adressen;
Max. 264 Byte große Partitionen
Cluster / Clustergrößen
Dateisysteme: MS proprietär
22. Viele NTFS Partitionen verwenden 4-KB-Blöcke zur
Speicherung
Kompromiss zwischen:
Großen Blöcken effizienter Dateitransfer
Kleinen Blöcken geringe interne Fragmentierung
Knackpunkt: Da das Dateisystem eine Datei als Folge
von Blöcken verwaltet, belegt eine Datei mindestens die
Größe eines Blockes (Default Windows: 4KB) – auch wenn
sie nur 1 Byte an Daten enthält
NTFS: Cluster
23.
24. Grundmenge an (elementaren) Operationen zur
Verwaltung von Dateien:
Neu
Löschen (unlink)
Kopieren
Umbenennen
Verschieben
„Einfach verkettete Liste“
Dateioperationen
31. Rezept Programm
Informatiker / Informatikerin
Prozessor (CPU)
Zutaten für den Kuchen
Eingabedaten
Prozess Aktivität, die daraus
besteht, dass der Bäcker das
Rezept liest, die Zutaten herbeiholt
und den Kuchen backt
Begrifflichkeiten: Prozess, Programm, etc.
33. Der Sohn des kuchenbackenden Informatikers wird
von einer Biene gestochen – was geschieht?
Der Bäcker wechselt von einem Prozess (Backen) zu
einem höheren Prozess
I. Erste-Hilfe-Buch zu Rate ziehen (Programm)
II. Medizinische Hilfe leisten (Prozess)
Prozess, Programm
34. Prozess = „Aktivität jedweder Art“
Prozess umfasst:
Ein Programm
Eingaben
Ausgaben
Zustand
Mehrere Prozesse können sich einen einzelnen
Prozessor teilen (Analogie: Kuchenbäcker) oder auf
mehrere Prozessoren verteilt werden
Eine Schedulingstrategie entscheidet, wann die
Arbeit an einem Prozess unterbrochen und ein
anderer Prozess bedient wird.
Prozess
35. Arbeitsdefinition „Prozess“: Ein auf einem Rechner
ablauffähiges oder im Ablauf befindliches
Programm, zusammen mit all seinen benötigten
Ressourcen wird als Prozess oder Task
bezeichnet.
Prozesszustände:
Nachdem ein Prozess gestartet wurde, kann er sich
in verschiedenen Zuständen befinden:
rechenbereit
rechnend
suspendiert rechenbereit
blockiert
Prozess
36. Jedem Prozess wird vom Betriebssystem ein
eigener Adressbereich zugewiesen
Wird ein Prozess deaktiviert, müssen folgende
Informationen gespeichert werden, um ihn später
reaktivieren zu können:
der Programmcode des Prozesses
seine im Arbeitsspeicher befindlichen Daten
der Inhalt der CPU-Register einschließlich des
Befehlszählers
eine Tabelle aller geöffneten Dateien mit ihrem
aktuellen Bearbeitungszustand
Prozessunterbrechung
37. Jeder Prozess verfügt über einen eigenen
Speicherbereich
Threads sind leichtgewichtige Prozesse, verfügen
über keinen eigenen Speicherbereich
Ein Prozess kann aus einem oder mehreren Threads
bestehen
Vorteile von Threads:
Kommunikation zwischen Threads möglich, die demselben
Prozess zugeordnet sind, da gleicher Adressbereich
Leichter, d.h. schneller zu erzeugen und wieder zu zerstören
als Prozesse geringerer Laufzeit-Overhead zur Erzeugung
und Verwaltung von Threads als bei Prozessen
Prozess vs. Threads
39. Mehrere (rechenbereite) Prozesse konkurrieren um
Rechenzeit
Ist nur eine CPU im System vorhanden, muss
entschieden werden, welcher Prozess als nächstes
läuft.
Der Teil des Betriebssystems, der diese Wahl trifft, wird
als Scheduler bezeichnet (kommt beim präemptiven
Multitasking zum Einsatz)
Prozessverwaltung
Abbildung aus: Tanenbaum: Moderne Betriebssysteme. 2009, S. 132.
40. Multitasking / Multithreading = Fähigkeit eines
Betriebssystems, mehrere Aufgaben (Tasks /
Threads) nebeneinander auszuführen
U.a. zwei Verfahren:
Kooperatives Multitasking
Auch: Prioritätsabhängige Verwaltung
Präemptives Multitasking
Auch: Zeitscheibenverfahren
Z.B. Round-Robin-Strategie (Rundlauf-Strategie)
Scheduler / Multitasking
42. Aufgabe des Betriebssystems: Versorgung der
Prozesse / Threads mit Arbeitsspeicher
Memory Manager
Prozesse müssen vom OS vor gegenseitiger
Beeinträchtigung durch fehlerhafte Adressierung
gemeinsam benutzter Speicherbereiche geschützt
werden
Wesentliche Verfahren zur Speicherverwaltung:
Swapping
Paging
Speicherverwaltung
43. Grundproblem: Was geschieht, wenn der
physikalische Arbeitsspeicher voll ist?
Lösung I (anno pief): Programmierer teilen ihre
Programme manuell in kleine Segmente (sog. Overlays)
auf.
Overlays wurden auf der Festplatte gespeichert und bei
Bedarf dynamisch vom Betriebssystem ein- und
ausgelagert.
Lösung II: Virtueller Speicher
Swapping
Paging
Speicherverwaltung
45. Lesen Sie den Wikipedia-Beitrag unter
https://de.wikipedia.org/wiki/Paging und erläutern
Sie das Konzept und Verfahren des Pagings.
Was ist – und welche Aufgabe hat – die „Memory
Management Unit“ (MMU)?
Hausaufgabe
Wir gewöhnen uns an Gegebenheiten von Betriebssystemen. Deshalb reagieren wir auf Änderungen mitunter skeptisch – und möchten Althergebrachtes wiederhaben.
Manchmal wird die wunderbare Welt des Betriebssystems durchbrochen, z.B. mit dem Bluescreen.
OS bzw. Benutzungsschnittstelle mit dem magischen Handschuh: „Minority Report“ (2002)
Metapher Desktop
Metapher Desktop Dateien
Datei auf unterster Ebene: Folge von Magnetisierungen, Nullen und Einsen
Dateiverwaltung auf die harte Tour: Manuelles Ansteuern von Daten / Information über Tupel (Laufwerk, Zylindernummer, Nummer des Schreib-/Lesekopfes, Sektornummer)
Dateiverwaltung OS über Abstraktion:Das Betriebssystem stellt das Konzept der Datei als Behälter für Datenbereit. Betriebssystem übersetztDateien und ihre Namen inbestimmte Bereiche der Festplatte
Dateisystem Schicht des Betriebssystems
Schichten oberhalb des Dateisystems greifen auf Dateien über den Klartextnamen zuBeispiel: Anwendungsprogramme; Windows Explorer; Vi, etc.
In der Schicht unterhalb kommuniziert das Dateisystem mit den entsprechenden Gerätetreibern, um z.B. Daten über physische Adresse (Laufwerk, Zylindernummer, Schreib-/Lesekopf, Sektornummer) auf Festplatte ansprechen zu können
Dateisysteme:
NTFS „New Technology File System“ (proprietär (Microsoft))
EXT4 „Fourth Extended Filesystem“ (Journaling Dateisystem, Linux-Systeme)
In MS-Windows: Jede Partition, jedes Laufwerk ist in das Dateisystem eingehangen als Wurzel eines eigenen Dateibaumes, der mit dem Laufwerksbuchstaben benannt wird
Unter Linux: Jede Partition, jedes Laufwerk ist in das Dateisystem eingehangen als Unterbaum eines globalen Dateibaumes „/“ (root)
Keine Laufwerksbuchstaben
Wechselmedien werden gemountet z.B. unter /media/usbdisk-1
New Technology File System
Machen Dateigrößen nicht ein Mehrfaches der Clustergröße aus, muss zusätzlicher Speicherplatz verwendet werden, um die Datei aufzunehmen
Support.microsoft.com: Auf einer typischen Partition geht Speicherplatz der folgenden Größenordnung verloren:(Clustergröße/2) * (Anzahl der Dateien)(vgl. http://support.microsoft.com/kb/140365/de)
Logisch zusammenhängende Cluster des Dateisystems werden auf dem Datenträger an unterschiedlichsten Positionen gespeichert.
Fragmentierung
Vorgehensweise:
Soll eine Datei bearbeitet werden, so muss das Betriebssystem anhand des Dateinamens die Liste der Blöcke bestimmen, in denen der Dateiinhalt gespeichert ist.
Benötigt wird hierbei zumeist nur der erste Block, da die Blöcke aufeinander verweisen (einfach verkettete Liste):
Wird der Inhalt der Datei verändert, müssen evtl. neue Blöcke an die Liste angehängt oder aus der Liste gelöscht werden.
Das Betriebssystem setzt folglich Operationen von Anwendungsprogrammen um in elementare Operationen, die von der Hardware ausgeführt werden können:
Datei lesen
Datei speichern
Datei löschen
Elementare Operationen = Systemaufrufe, System Calls
Systemaufrufe, u.a.:
Lesen eines oder mehrerer Blöcke
Schreiben eines oder mehrerer Blöcke
Löschen eines oder mehrerer Blöcke
Beispiel: Der Systemaufruf „Löschen“ fügt die Blöcke der gelöschten Datei an die Liste der freien Blöcke an
Somit können Dateien, die gelöscht wurden, wieder hergestellt werden, da sie nicht physisch / physikalisch von ihrem Medium gelöscht wurden, sondern nur die Listenelemente, die auf sie verweisen.(Funktioniert nur, wenn die Blöcke nicht von anderen Dateien verwendet oder überschrieben wurden)
„Stellen Sie sich einen kulinarisch interessierten Informatiker vor, der einen Geburtstagskuchen für seine Tochter backt. Er hat ein Geburtstagskuchenrezept und eine gut ausgestattete Küche mit allen Zutaten […]. In dieser Analogie ist das Rezept das Programm […], der Informatiker ist der Prozessor (CPU) und die Zutaten für den Kuchen sind die Eingabedaten. Der Prozess ist die Aktivität, die daraus besteht, dass unser Bäcker das Rezept liest, die Zutaten herbeiholt und den Kuchen bäckt.“(vgl. Tanenbaum: Moderne Betriebssysteme. 2009, S. 126)
Nachdem ein Prozess gestartet wurde, kann er sich in verschiedenen Zuständen befinden:
Nach dem Start ist er zunächst rechenbereit und wartet auf die Zuteilung von Prozessorzeit.
Wird er dann vom Betriebssystem zur Ausführung ausgewählt, ist er rechnend.
Ist er nach einer bestimmten Zeit nicht beendet, wird er vom Betriebssystem suspendiert und ein anderer Prozess erhält den Prozessor zugeteilt. Der Prozess ist dann erneut rechenbereit.
Es kann aber auch der Fall eintreten, dass der Prozess auf eine Ressource wartet (z.B. auf einen Drucker oder auf eine Dateioperation). Dann wird er blockiert und erst wieder als rechenbereit eingestuft, falls das Signal kommt, dass die benötigten Ressourcen bereitstehen. In der Zwischenzeit können die andern Prozesse den Prozessor nutzen.
Kooperatives Multitasking
Auch: Prioritätsabhängige Verwaltung
Prozesse bekommen vom Betriebssystem eine Priorität zugewiesen
Dem Prozess mit der höchsten Priorität wird die CPU so lange überlassen, bis:
a) der Prozess die CPU nicht mehr benötigt, d.h. fertig ist
b) ein Prozess höherer Priorität Rechenzeit benötigt
Hierarchische Ordnung der Prozesse
Jedem Prozess ist es selbst überlassen, wann er die Kontrolle an das Betriebssystem zurückgibt
Nachteile: Programme, die nicht kooperieren (z.B. weil sie Fehler enthalten) können das ganze System zum Stillstand bringen
Präemptives Multitasking
Auch: Zeitscheibenverfahren
Das Betriebssystem steuert die Abfolge der einzelnen Prozesse Scheduler (wird selbst als einer der Prozesse betrieben)
Jedem Prozess wird über eine Zeitscheibe Rechenzeit zugewiesen, die der Prozess nutzen kann
Bestimmung der Rechenzeit über Berücksichtigung des Rechenaufwandes des Prozesses
Angehaltene Prozesse „schlafen“, setzen ihre Arbeit fort, wenn das Betriebssystem sie erneut aktiviert
Realisiert z.B. über Round-Robin-Strategie (Rundlauf-Strategie)
Round Robin Scheduling gewährt konkurrierenden Prozessen jeweils für einen kurzen Zeitraum Zugang zu den benötigten Ressourcen
Verfahrensweise:
Prozesse werden in einer Warteschlange verwaltet
Der erste Prozess erhält die vom Scheduler zugewiesene Zeit (Zeitschlitz) Zugang zu den Ressourcen
Anschließend reiht der Prozess sich am Ende der Warteschlange ein; alle Prozesse in der Warteschlange rücken eine Position vor.
Virtueller Speicher
Virtueller Speicher erlaubt, dass Programme mehr Speicher verwenden können, als physischer Hauptspeicher zur Verfügung steht
Das Betriebssystem hält benötigte Teile des Programms im Hauptspeicher – und (z.B.) auf der Festplatte
Swapping
Jeder Prozess wird komplett in den Speicher geladen, darf eine gewisse Zeit laufen und wird anschließend wieder auf Festplatte ausgelagert (Stichwort „Virtueller Speicher“)
Prozesse im Leerlauf werden zumeist auf der Platte gespeichert, so dass sie keinen Speicher verbrauchen, wenn sie inaktiv sind
Benötigte Prozess-Segmente werden von der Speicherverwaltung geholt und in den Arbeitsspeicher geladen. Ist nicht ausreichend Platz vorhanden, werden andere Segmente auf die Festplatte ausgelagert
Nachteil: Da das Swapping keine festgelegten Segmentgrößen bietet, entsteht schnell eine externe Fragmentierung (Lücken zwischen den Adressräumen der Prozesse)
Paging
Der Adressraum eines Programms wird in Einheiten aufgebrochen, die sogenannten Seiten (Pages)
Jede Seite ist ein aneinander angrenzender Bereich von Adressen
Die Seiten werden dem physischen Speicherbereich zugeordnet (auch unterteilt; hier werden die einzelnen Stücke als „Seitenrahmen“ bezeichnet) Eine Seite und der Seitenrahmen verfügen über die gleiche Größe
Zuordnung von Seitenrahmen zu Seiten über Seitentabelle
Läuft der Prozess, müssen nur die benötigten Speicherseiten im Hauptspeicher liegen
Greift das Programm auf einen Teil des Adressraumes zu, der sich im physischen Speicher befindet, kann die Hardware die notwendige Zuordnung sehr schnell durchführen
Will das Programm dagegen auf einen Teil des Adressraumes zugreifen, der nicht im physischen Speicher ist, wird das OS benachrichtigt, das fehlende Stück zu beschaffen und den fehlgeschlagenen Befehl noch einmal auszuführen
Beispielfrage: Erläutern sie den Unterschied zwischen Swapping und Paging und beschreiben sie die beim Swapping auftretenden Probleme.
Beispiellösung: Da auszuführende Programme größer werden können als der Hauptspeicher und der Ablauf von Programmstücken des Programms nicht vorher vom Programmierer festgelegt werden sollte, wurde das Konzept des virtuellen Speichers entwickelt. Dabei werden Programme virtuell vom Betriebsystem in einem Bereich von der Festplatte in kleinere Segmente bzw. Seiten geteilt, die groß genug sind, um auch im Arbeitsspeicher verarbeitet werden zu können. Beim Programmablauf werden nun relevanten Seiten / Segmente in den Arbeitsspeicher geladen um sie aufzuführen. Dabei ergeben sie die Unterschiede bei Swapping und Paging. Beim Paging wird, wenn eine relevante Seite aus dem virtuellen Speicher benötigt wird, die derzeitige Seite ausgelagert und auf der Festplatte unter der virtuellen Adresse gespeichert. Die geladene Seite aus dem virtuellen Speicher erhält nun ihre physische Adresse im Arbeitspeicher und füllt diesen. Bei Swapping befinden sich mehrere Programmsegmente aus dem virtuellen Speicher, die jedoch allgemein keine festgelegte Größe haben, wie die Seiten. Wenn ein Teil des Programms benötigt wird, der nicht im Arbeitsspeicher vorhanden ist, dann wird zunächst untersucht, ob im Arbeitsspeicher für dieses Segment noch genug Platz vorhanden wäre. Wenn dies nicht der Fall ist, werden Segmente, die zurzeit nicht benötigt werden aus dem Arbeitspeicher auf die Festplatte wieder ausgelagert und an diese Stelle wird das benötigte Segment geladen. Das angesprochene Problem entsteht dabei durch die variablen Größen der Segmente. Da das ausgelagerte Segment meist immer größer ist als das benötigte, bleiben Speicherlücken zurück, die ungenutzt bleiben. Es geht dadurch Arbeitsspeicher verloren, wodurch die allgemeine Effizienz (Stichwort: externe Fragmentierung) gehemmt wird.