Vorlesung Betriebssysteme

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Betriebssysteme"

Transkript

1 Vorlesung Betriebssysteme Dipl.-Inform. Reinhard Griesinger Ausgabe Frühjahr 2014

2 ii

3 Inhaltsverzeichnis 1 Was ist ein Betriebssystem? Begriffe und Konzepte Grundlegende Aufgaben eines Betriebssystems Zusätzliche Aufgaben von Betriebssystemen Prozessor- und Prozessverwaltung Grundlagen Prozesszustände und Zustandsübergänge Scheduling: Ziele und Kriterien Beispiele für Scheduling-Strategien UNIX Aufbau eines UNIX-Prozesses UNIX-Scheduling Prozessnahe Algorithmen im Betriebssystemkern Systemaufrufe, Prozesse betreffend Übungen Prozess-Synchronisation Grundlagen Gegenseitiger Ausschluss Kritische Abschnitte Semaphore Das Erzeuger-Verbraucher-Problem Klassische Probleme der Prozess-Synchronisation Implementierung von Semaphoren Verklemmungen Maßnahmen gegen Verklemmungen Übungen Hauptspeicherverwaltung Grundlagen Hauptspeicherorganisation Ladestrategie Positionierungsstrategie Ersetzungsstrategie UNIX Übungen iii

4 iv INHALTSVERZEICHNIS 5 Dateisysteme Grundlagen Dateinamen Dateibausteine Dateiorganisation Plattenspeichervergabe Operationen auf Dateibausteine Operationen auf Dateien Zugriffskontrolle Datei- und Satzsperren UNIX Benutzersicht des UNIX-Dateisystems Implementierung der Verzeichnishierarchie Abbildung von I-Knoten auf Datenblöcke Systemtabellen für geöffnete Dateien Systemaufrufe, das Dateisystem betreffend Übungen Ein-/Ausgabe Grundlagen UNIX Gerätetypen Der Pufferspeicher Übungen Multiprozessorsysteme Grundlagen Master-Slave-Konfiguration Getrennte Verarbeitung Symmetrische Verarbeitung UNIX Beispiel einer Implementierung in den Bell Laboratorien Beispiel einer Implementierung bei HP Übungen Prozessor-Virtualisierung Motivation Prozessor-Virtualisierung Aspekte der Servervirtualisierung Xen Entwurfsprinzipien Literatur Index Index-1 Index-1

5 Kapitel 1 Was ist ein Betriebssystem? What is an elephant? - A mouse with an Operating System. Dieses Kapitel versucht eine einfache Definition des Begriffs Betriebssystem. Die grundlegenden Aufgaben eines Betriebssystems, nach denen sich auch die Kapitelstruktur dieses Skripts ausrichtet werden aufgezählt. Darüberhinaus ergaben sich im Lauf der Zeit neue Aufgaben, die nur kurz erwähnt werden und die nicht Teil der Vorlesung sind. 1.1 Begriffe und Konzepte Ein Betriebssystem ist ein Verwalter von Betriebsmitteln (Ressourcen) und ein Anbieter von Dienstleistungen (Services). Betriebsmittel können Hardware-Komponenten sein, wie z.b. Prozessoren, Speicher oder Ein-/Ausgabe-Geräte. Der Begriff des Betriebsmittels kann aber kaum weit genug gefaßt werden. Als Betriebsmittel können auch Dateien, Netzwerkzugänge und Namen in einem Netzwerk gelten. Dabei zeigt sich, dass Betriebsmittel in der Regel knapp sind: Prozessoren sind zu langsam, Speicher voll, Ein-/Ausgabegeräte überlastet usw. Ein Betriebssystem ist also ein Verwalter des Mangels. Die vorhandenen Ressourcen bietet ein Betriebssystem seinen Benutzern gekapselt in Form von Dienstleistungen an. Im UNIX-Betriebssystem heißen diese Dienstleistungen Systemaufrufe (system calls). Dienstleistungen, die ein Betriebssystem anbietet, sind [Dei90] Benutzeroberfläche, die Zuteilung der Hardware an Benutzer, der Datenaustausch zwischen Benutzern, das Erleichtern der Ein-/Ausgabe und das Wiederaufsetzen nach Fehlern. 1-1

6 1-2 KAPITEL 1. WAS IST EIN BETRIEBSSYSTEM? Abbildung 1.1: Grundlegende Aufgaben eines Betriebssystems Diese Dienstleistungen geben dem Benutzer den Eindruck, dass er statt der reinen Hardware eine erweiterte Maschine zur Verfügung hat. Ein Betriebssystem hat Schnittstellen: zum Bedienerpersonal, zu Anwendungs- und Systemprogrammierern, zum Verwaltungspersonal, zu Programmen, zur Hardware und zu Benutzern. Dabei gilt, dass ein Betriebssystem seinen Benutzern Verhaltensmaßnahmen vorschreiben muss. Man wird deswegen von den Konstrukteuren von Betriebssystemen erwarten, dass sie ihr Bestes tun, sie so einfach, wirkungsvoll und zuverlässig wie möglich zu machen. [Han77] In heutiger Zeit würde man den Begriff sicher hinzufügen. 1.2 Grundlegende Aufgaben eines Betriebssystems Die grundlegenden Aufgaben eines Betriebssystems - veranschaulicht anhand Abbildung sind im Überblick Prozessorverwaltung: In einer modernen Computeranlage gibt es vielfältige Möglichkeiten der parallelen Verarbeitung: Es können mehrere Prozessoren (oder Kerne) real gleichzeitig Prozesse ausführen. Innerhalb eines Prozessors können Prozesse (quasi-) parallel ausgeführt werden. Dazu wird der Prozessor zyklisch an die einzelnen Prozesse vergeben.

7 1.3. ZUSÄTZLICHE AUFGABEN VON BETRIEBSSYSTEMEN 1-3 Innerhalb eines Prozesses können parallele Aktivitäten (Threads) stattfinden. Darüberhinaus ist es aufgrund steigende Prozessorleistung möglich geworden, dem Benutzer virtualisierte Rechner-Hardware und Betriebssysteme zur Verfügung zu stellen. Hauptspeicherverwaltung: Der Hauptspeicher kann als ein sowohl zeitlich als auch räumlich aufteilbares Betriebsmittel aufgefasst werden. Dateiverwaltung: Neben der Verwaltung der Plattenhardware ist darunter vor allem die Dateiorganisation und die Abbildung von benutzerdefinierten Namen in interne Adressen zu verstehen. Ein-/Ausgabe: mit verschiedenen Geräten (Bildschirm, Platte, Drucker). Benutzerverwaltung: Ein Betriebssystem hat sowohl den Schutz vor nicht autorisiertem Zugriff auf Ressourcen als Aufgabe, als auch die Bereitstellung von Kommunikationsmöglichkeit zwischen Benutzern oder Prozessen. (Interprozesskommunikation). 1.3 Zusätzliche Aufgaben von Betriebssystemen Neben diesen grundlegenden Aufgaben gibt es zusätzliche Aufgaben für Betriebssysteme, die aus Anforderungen aus der Praxis, neuen Möglichkeiten der Hardware oder aus Forschungsthemen heraus entstanden sind: Fehlertolerante Systeme: Die moderne Gesellschaft wird immer abhängiger von der Verfügbarkeit ihrer DV-Infrastruktur. Systeme, die durch Mehrfachauslegung ihrer Komponenten erhöhte Ausfallsicherheit bieten, benötigen auch im Betriebssystem Mechanismen, die die Fehlertoleranz unterstützen. Echtzeitsysteme: Immer stärker werden technische Prozesse von Rechnern gesteuert. Echtzeitsysteme müssen innerhalb vorgegebener Zeiten auf Ereignisse in der realen Welt reagieren. Um Reaktionszeiten garantieren zu können, sind Vorkehrungen in der Speicherverwaltung, Unterbrechungsbearbeitung und Prozessorzuteilung eines Betriebssystems zu treffen. Online-Transaktionsverarbeitung: Eine große Anzahl von Teilnehmern, die eine große Anzahl von Operationen durchführen, kennzeichnen Transaktionssysteme (z.b. Reservierungssysteme, electronic banking). Anforderungen an Betriebssysteme sind die Verwaltung großer Datenbanken und schnelle Abarbeitung einer großen Anzahl von Aufträgen. Verteilte Systeme: Die Vernetzung von Computern wird immer wichtiger. Der Aufbau von LANs und WANs erfordert stabile Software-Architekturen. Aufgaben von Betriebssystemen sind hohe Interoperabilität und effiziente Nutzung der Netzbandbreite. Sicherheit von Betriebssystemen: Neben der Erhöhung der Sicherheit von alltagstauglichen Betriebssystemen, bei der neben einzelnen Mechanismen z.b. auch die schnelle Anpassbarkeit eine Rolle spielt, wird in Bereichen mit erhöhten Sicherheitsanforderungen Wert auf eine sichere Konstruktion von Betriebssystemen gelegt.

8 1-4 KAPITEL 1. WAS IST EIN BETRIEBSSYSTEM? Energiemanagement: Mit Aufkommen mobiler Computer wird das Energiemanagement Aufgabe des Betriebssystems. In Abhängigkeit von der zur Verfügung stehenden Akkukapazität werden Systemparameter (Bildschirmhelligkeit, Prozessortakt) geändert, bei drohendem Systemstillstand wird rechtzeitig der Arbeitsstand gesichert (Hibernation). Bedienoberflächen: Da ein Betriebssystem auch für die Schnittstelle zum Benutzer zuständig ist, ist auch die benutzerfreundliche Gestaltung der Oberfläche ein Betriebssystem- Thema. Standardisierung: Ein Rechnerhersteller hat zu entscheiden, ob er sein Produkt mit einem proprietären Betriebssystem ausliefert, was eine hohe Kundenbindung, aber eine geringe Marktakzeptanz erwarten lässt, oder ob er ein allgemein verfügbares (standardisiertes) Betriebssystem verwendet, was eine erhöhte Konkurrenz und mögliche Austauschbarkeit befürchten lässt. Auf jeden Fall hat ein allgemein verfügbares Betriebssystem die Schwierigkeit, auch für spezielle Hardware ein performante Leistung zu bieten. Eine Schwierigkeit bei Betriebssystemen ist die in hohem Maße unvorhersagbare Art der Anforderungen, die an sie gestellt werden. [Han77]

9 Kapitel 2 Prozessor- und Prozessverwaltung Rumor has it that when they closed down the 7094 at MIT in 1973, they found a low-priority job that had been submitted in 1967 and had not yet been run. Peterson, Silberschatz Der allgemeine Teil dieses Kapitels definiert den Begriff Prozess und bezeichnet die Bestandteile von Prozessen. Es werden die verschiedenen Prozesszustände und Scheduling- Strategien eingeführt. Der UNIX-spezifische Teil verfeinert sowohl die möglichen Prozesszustände, als auch die Schedulingverfahren. Mit Systemaufrufen (system calls) können die Dienste des Betriebssystems von einem Programmierer in Anspruch genommen werden. Von den Systemaufrufen, die die Prozessverwaltung betreffen, werden die beiden Aufrufe fork() und exec() näher betrachtet, die zur Prozesserzeugung benutzt werden. Nicht eingegangen wird auf Prozessverwaltung unter Echtzeit-Bedingungen und in Multiprozessorsystemen. Das Thema Prozess-Synchronisation greift das nächste Kapitel auf. In der Vorlesung wird damit nur auf sogenannte monolithische Betriebssysteme eingegangen. Auf das Konzept der Mikrokernel-Betriebssysteme, wie es in den 80er Jahren von Mach [Zim93] eingeführt wurde, wird nicht eingegangen. 2.1 Grundlagen Die einfachste Definition des Begriffs Prozess ist: Ein Prozess ist ein in Ausführung befindliches Programm. Moderne Betriebssysteme erlauben Multitasking, d.h. mehrere Prozesse befinden sich gleichzeitig im System und werden von einem Prozessor (CPU) bedient. Der Prozessor schaltet dabei zwischen den einzelnen Prozessen hin und her, um die Illusion zu vermitteln, die Prozesse würden real gleichzeitig ablaufen. Ein Prozess besteht aus dem Speicherabbild (core image), d.h. den Programmanweisungen und Daten, die im Hauptspeicher liegen, der Registerbelegung und Verwaltungsinformationen, z.b. der bisher verbrauchten CPU-Zeit. 2-1

10 2-2 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG Abbildung 2.1: Zustandsübergänge eines Prozesses Registerbelegung und Verwaltungsinformationen werden oft unter dem Begriff Prozess- Kontrollblock (PCB) zusammengefasst Prozesszustände und Zustandsübergänge Ein Prozess befindet sich zu einem Zeitpunkt in einem von mehreren Zuständen (states), siehe dazu das Zustandsübergangsdiagramm in Abbildung 2.1: aktiv (running) Der Prozess ist im Besitz des Prozessors. Im allgemeinen wird noch unterschieden, ob sich der Prozess im Benutzermodus (user mode, problem state) befindet oder im privilegierten Systemmodus (kernel mode, system state). bereit (ready) Der Prozess ist bereit fortzufahren, der Prozessor ist aber durch einen anderen Prozess belegt. blockiert (blocked, asleep) Der Prozess wartet auf ein Ereignis (event). Dieses Ereignis ist i.a. der Abschluß einer Ein- oder Ausgabe. Da E/A-Geräte um Größenordnungen langsamer sind als der Prozessor, lohnt es sich, den Prozessor einem anderen Prozess zuzuteilen. Zwischen den einzelnen Zuständen sind folgende Übergänge (transitions) möglich: bereit Prozessauswahl aktiv Die Entscheidung, welcher Prozess aus der Reihe der bereiten Prozesse als nächstes zur Ausführung kommen soll, trifft der Scheduler. Die eigentliche Vergabe des Prozessors an den ausgewählten Prozess übernimmt der Dispatcher. aktiv Ablauf der Zeitscheibe bereit Nach Ablauf einer Zeitscheibe (quantum) wird ein Unterbrechungssignal erzeugt, der Prozessor wird dem Prozess entzogen und der Prozess geht in den bereit-zustand über. aktiv auf Ereignis warten blockiert Der Prozess kann selbst explizit auf ein Ereignis warten, oder im Zuge der Abarbeitung der Ein-/Ausgabe wird auf ein Ereignis gewartet. Der Prozessor wird einem anderen Prozess zugeteilt.

11 2.1. GRUNDLAGEN A I I K H? A = K I = I J K C ) J M H J A E J A, K H? D I = J Abbildung 2.2: Konkurrierende Ziele beim Scheduling blockiert Ereignis eingetreten bereit Nach Eintritt eines Ereignisses überführt das Betriebssystem alle Prozesse, die auf dieses Ereignis gewartet haben, in den Zustand bereit. Moderne Betriebssysteme bezeichnet man daher auch als Ereignis-gesteuert (event driven) Scheduling: Ziele und Kriterien Die Entscheidung, an welche Stelle ein bereit gewordener Prozess in die Warteschlange bereiter Prozesse eingereiht wird, trifft der Scheduler anhand seiner Scheduling-Strategie. Das Ziel einer Scheduling-Strategie kann sein den Durchsatz der Anlage zu maximieren, die Antwortzeiten zu minimieren, Ressourcenauslastung zu maximieren, vorhersagbares Verhalten zu zeigen, geringstmöglichen Verwaltungsaufwand (overhead) zu benötigen, determiniert zu sein, d.h. zu garantieren, dass ein Prozess innerhalb endlicher Zeit abgearbeitet wird oder auch unter hoher Last sinnvolle Arbeit zu leisten, fair zu allen Benutzern (Prozessen) zu sein. Dabei ist es nicht möglich, alle Ziele gleichzeitig zu erreichen. Zum Beispiel konkurrieren die drei zuerst genannten Ziele (Abbildung 2.2). Sind Betriebsmittel gut ausgelastet, bilden sich vor ihnen Warteschlangen, die die Antwortzeiten beeinträchtigen. Für gute Antwortzeiten sind Ressourcen vorzuhalten, deren Auslastung dementsprechend schlecht ist. Analoges gilt für die Konkurrenz zwischen Antwortzeit-Minimierung und Durchsatz- Maximierung. Um einen hohen Durchsatz zu erreichen, sollten Aufträge möglichst unterbrechungsfrei ablaufen können. Gute Antwortzeiten verlangen komplexe Zuteilungsverfahren mit entsprechend hohem Verwaltungsaufwand, der zu Lasten des Durchsatzes geht. Kriterien, nach denen ein Scheduler arbeiten kann, sind:

12 2-4 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG > A H A E J 9 = H J A I? D = C A = J E L + * ) >? E A H A H A N E J Abbildung 2.3: First Come - First Served (FCFS) Ressourcenbedarf des Prozesses: Erzeugt ein Prozess hauptsächlich Ein-/Ausgabeaufträge (I/O bound) oder ist er rechenintensiv (CPU bound)? Ist der Prozess ein Batchauftrag oder ist er interaktiv? bei Betriebssystemen mit Echtzeitanforderungen: Wie nahe ist die geforderte Reaktionszeit des Prozesses (deadline scheduling)? Wie hoch ist die vom Benutzer vergebene Priorität des Prozesses? Wie oft wurde der Prozess bis jetzt unterbrochen? Wieviel Rechenzeit benötigt der Prozess? Um die notwendigen Informationen für die Überprüfung dieser Kriterien zu erlangen, bieten sich die folgenden drei Methoden an: A priori Es werden vor Prozessstart Angaben vom Benutzer verlangt. Extrapolation Es wird aus dem Verhalten des Prozesses in der Vergangenheit auf das Verhalten in der Zukunft geschlossen. Post mortem Nach Prozessende werden Informationen für zukünftige Läufe des gleichen Programms gesammelt. Man unterscheidet Scheduling-Strategien danach, ob sie Vorrangunterbrechung (preemption) zulassen und ob sie mit Zeitscheibensteuerung (timer) arbeiten. In diesem Fall spricht man auch von preemptive multitasking.. Bei Vorrangunterbrechung wird einem Prozess der Prozessor entzogen, wenn ein Prozess mit höherer Priorität bereit wurde. Bei Zeitscheibensteuerung wird einem Prozess der Prozessor entzogen, wenn die Zeitscheibe abgelaufen ist. Prioritäten können statisch oder dynamisch sein. Dynamische Prioritäten spiegeln das vergangene Verhalten eines Prozesses wider. Findet weder Vorrangunterbrechung noch Zeitscheibensteuerung statt, spricht man auch von cooperative multitasking: Man verlässt sich darauf, dass kein Prozess die CPU für sich allein vereinnahmt, hofft also kooperatives Verhalten der Prozesse untereinander Beispiele für Scheduling-Strategien First Come - First Served (FCFS) Prozesse werden in der Reihenfolge, in der sie in den Zustand bereit übergehen, an das Ende einer Warteschlange vor dem Prozessor gestellt (Abbildung 2.3. Ein Prozess behält den Prozessor bis er ihn selbst wieder freigibt (durch Beendigung oder Übergang in den Zustand blockiert). FCFS arbeitet ohne Vorrangunterbrechung und Zeitscheibensteuerung.

13 , * 2.1. GRUNDLAGEN 2-5 > A H A E J 9 = H J A I? D = C A = J E L + * ) >? E A H A H A N E J A E J I? D A E > A Abbildung 2.4: Round Robin > A H A E J = J E L ) >? E A H A H A N E J 9 = H J A I? D = C A Abbildung 2.5: Shortest Job First Round Robin Prozesse werden in der Reihenfolge, in der sie in den Zustand bereit übergehen, an das Ende einer Warteschlange vor dem Prozessor gestellt (= FCFS, siehe Abbildung 2.4). Ein Prozess erhält ein Zeitquantum und behält den Prozessor bis er ihn selbst wieder freigibt (durch Beendigung oder Übergang in den Zustand blockiert) oder nach Ablauf des Zeitquantums eine Unterbrechung erfolgt (Zeitgeber). Im letzten Fall geht der Prozess in den Zustand bereit über und wird wie der an das Ende der Warteschlange gesetzt. Shortest Job First Die Warteschlange vor dem Prozessor ist nach Prozessgröße (gemessen z.b. in notwendigen CPU-Sekunden) sortiert (Abbildung 2.5). Kleine Prozesse werden vor großen Prozessen abgearbeitet. Es findet keine Vorrangunterbrechung oder Zeitscheibensteuerung statt. Das Verfahren hat zwei bemerkenswerte Eigenschaften: Es ist nicht deterministisch, d.h. es kann einem Prozess nicht garantiert werden, dass er in endlicher Zeit an die Reihe kommt, da ständig neue, kürzere Prozesse eintreffen können. Es minimiert die mittlere Wartezeit über alle Prozesse, sofern alle Prozesse am Anfang vorliegen und eingeplant werden können. Diese beiden sich auf den ersten Blick widersprechenden Eigenschaften erklären sich durch den Einsatz von Shortest Job First als Onlinealgorithmus (im ersten Fall) und Offlinealgorithmus (im zweiten Fall). Exkurs Onlinealgorithmen Dieser Abschnitt ist ein Exzerpt aus [Alb10].

14 , *, * KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG > A H A E J = J E L ) >? E A H A H A N E J 8 H H = C K J A H > H A? D K C Abbildung 2.6: Shortest Remaining Time Next >? E A H J > A H A E J A K = J E L ) >? E A H A H A N E J 9 = H J A I? D = C A Abbildung 2.7: Highest Response Ratio Next Während Offlinealgorithmen davon ausgehen, dass die zur Lösung einer Aufgabe benötigten Daten zu Beginn der Berechnung vorliegen, treffen bei Onlinealgorithmen Eingabedaten nach und nach im Laufe der Zeit ein. Immer, wenn neue Daten eintreffen, muss ein Onlinelagorithmus eine Antwort berechnen, ohne zukünftige Eingaben zu kennen. Beispiel Prozessorscheduling: Eine Folge von Prozessen ist auf mehreren Prozessoren zu verteilen, so dass alle Prozesse möglichst schnell abgearbeitet werden. Auf welchem Prozessor soll ein neu ankommender Prozess eingeplant werden, wenn die nachfolgenden Prozesse nicht bekannt sind? Um die Qualität eines Onlinealgorithmus zu bewerten, wird die kompetitive Analyse eingesetzt: Der Onlinealgorithmus wird verglichen mit einem optimalen Offlinealgorithmus, der alle Eingabedaten im Voraus kennt. Ein Onlinealgorithmus heißt c-kompetitiv, wenn für alle Eingaben seine berechnete Lösung nie schlechter als das c-fache der optimalen Lösung ist. Im Beispiel Prozessorscheduling legt ein möglicher Onlinealgorithmus einen neu eintreffenden Prozess auf den Prozessor mit der aktuell geringsten Last. Dieses Verfahren ist 2-kompetitiv. Shortest Remaining Time Next Abbildung 2.6: Die Warteschlange vor dem Prozessor ist nach Prozessgröße sortiert (= Shortest Job First). Einem Prozess wird der Prozessor entzogen, wenn ein kleinerer bereit wird. In diesem Fall wird der Prozess entsprechend seiner verbleibenden Größe in die Warteschlange einsortiert. Highest Response Ratio Next Bei diesem Verfahren wird nicht nur die Reihenfolge des bereit -Werdens und die Größe der Prozesse berücksichtigt, sondern auch, wie lange sie bereits in der Warteschlange gewartet haben (siehe Abbildung 2.7).

15 , GRUNDLAGEN 2-7 A E J I? D A E > A ) * + 9 = H J A I? D = C A 4 4 = J E L >? E A H A H A N E J 9 = H J A I? D = C A. 1. Abbildung 2.8: Multilevel Queues Die Priorität eines Prozesses wird ermittelt durch das Verhältnis von Wartezeit in der Warteschlange zu Prozessgröße (Bedienzeit): Priorität = Wartezeit + Bedienzeit Bedienzeit Je größer dieses Verhältnis, desto eher gelangt der Prozess zur Ausführung. Das Verfahren arbeitet ohne Vorrangunterbrechung und Zeitscheibensteuerung. Multilevel Queues Es wird nicht eine Warteschlange, sondern es werden mehrere Warteschlangen vor dem Prozessor verwaltet (Abbildung 2.8). Dies bietet die Möglichkeit, Prozesse entsprechend eines Kriteriums (z.b. interaktiv / batch) in eine der Warteschlangen einzuordnen und nach einer dem Kriterium angemessenen Scheduling-Strategie zu bedienen (z.b. Round Robin bzw. FCFS). Zusätzlich zu den Scheduling-Strategien der einzelnen Warteschlangen muß noch eine Scheduling-Strategie für die Bedienungsreihenfolge der Warteschlangen untereinander festgelegt werden. Multilevel Feedback Queues Die Arbeit mit Multilevel Feedback Queues ist eine Möglichkeit, dynamische Prioritäten zu implementieren (Abbildung 2.9). Prozesse betreten immer auf der obersten Stufe das Warteschlangen-System. Hier haben sie hohe Priorität (die Warteschlange wird bevorzugt abgearbeitet), aber nur eine kleine Zeitscheibe. Wird ein Prozess durch die Zeitscheibensteuerung unterbrochen, wird er in die nächstniedrigere Warteschlange eingereiht, hier erhält er eine größere Zeitscheibe, wird aber mit niedrigerer Priorität bedient. Rechenintensive Prozesse gelangen in die unterste Warteschlange, wo sie mit niederster Priorität Round Robin bearbeitet werden. Zu diesem Verfahren sind mehrere Varianten denkbar: Variante 1 Ein Prozess kehrt auf die Ebene des Warteschlangensystems zurück, die er bei Blockierung verlassen hat. Variante 2 Ein Prozess, der die CPU freiwillig abgibt, steigt nach dem Übergang in den bereit-zustand eine Ebene auf.

16 , KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG 2 H E H E J J ) * + = J E L 9 = H J A I? D = C A = H J A I? D = C A >? E A H A H A N E J A E J I? D A E > A 9 = H J A I? D = C A 4 4 Abbildung 2.9: Multilevel Feedback Queues 2.2 UNIX Aufbau eines UNIX-Prozesses Das Speicherabbild eines Prozesses besteht - vereinfacht dargestellt - aus dem Register- Kontext, der sich u.a. zusammensetzt aus dem Programm-Zeiger, der angibt, welche Anweisung des Programms als nächstes ausgeführt werden wird (program counter) dem Prozessorstatus-Register, das den Zustand des Prozessors in Bezug auf den Prozess beschreibt. dem Stack-Zeiger, der die aktuelle Adresse im Benutzer- oder Kernel-Stack enthält. Weiter enthält das Speicherabbild die folgenden Elemente (Abbildung 2.10): Textsegment des Prozesses Datensegment und Benutzer-Stack (user stack) Der System-Kontext besteht aus dem Prozesstabelleneintrag der Segmenttabelle (pregion table) und den Seitentabellen des Prozesses. Die Prozesstabelle enthält den Zustand des Prozesses die Prozessgröße

17 2.2. UNIX 2-9 Abbildung 2.10: Speicherabbild eines Prozesses die Benutzerkennung (uid) die Prozesskennung (pid) eine Ereignisbeschreibungsnummer (event descriptor), falls der Prozess auf ein Ereignis wartet Schedulinginformationen Zeitgeber (timers) für Laufzeitmessung, Accounting und Wecker (alarm) Angaben, die die gewünschte Reaktion auf Signale beschreiben Platz für Parameterübergabe an Systemaufrufe Angaben zum aktuellen Directory die Prozessdateitabelle (siehe dazu das Kapitel Dateisysteme) Prozessbegrenzungen, wie z.b. die maximale Prozessgröße UNIX-Scheduling Beispiel, welche Zustände ein typischer Prozess durchläuft (Abbildung 2.11): 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen, geht der Prozess in den Zustand Bereit über. 3. Irgendwann kommt dieser Prozess zur Ausführung und geht in den Systemmodus über, in dem er seinen Teil des fork()-systemaufrufs beendet.

18 2-10 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG Abbildung 2.11: Zustandsübergänge eines UNIX-Prozesses 4. Nach Beendigung des Systemaufrufs geht der Prozess in den Benutzermodus über und arbeitet darin weiter. 5. Nach einiger Zeit wird der Prozessor durch den Zeitgeber unterbrochen (clock tick) und der Prozess geht wieder in den Systemmodus über, um diese Unterbrechung zu bedienen. Unterbrechungen (Interrupts) werden im Kontext des gerade aktiven Prozesses behandelt. (Unabhängig davon, ob eine Unterbrechung etwas mit dem aktiven Prozess zu tun hat oder nicht). 6. Nachdem der Interrupt-Handler die Unterbrechung abgearbeitet hat, wird vom Kern entschieden, ob ein anderer Prozess zur Ausführung kommen soll. Ist dies der Fall, geht unser Prozess in den Zustand Entzogen über und ein anderer Prozess wird aktiv. Einem Prozess im Systemmodus kann der Prozessor erst unmittelbar vor Rückkehr in den Benutzermodus durch Vorrangunterbrechung (preemption) entzogen werden. 7. Zurück zu unserem Prozess: Nach einer Weile kommt er wieder an die Reihe und geht in den Benutzermodus über. 8. Führt nun der Prozess einen Systemaufruf aus, geht er wieder in den Systemmodus über. 9. Angenommen, die Erledigung des Systemaufrufs verlangt einen Zugriff auf Platte und der Prozess muß auf die Beendigung der Ein-/Ausgabe warten: Er geht dann in den Zustand Blockiert über und ein anderer Prozess kann zur Ausführung kommen. Ein Prozess, der im Systemmodus auf ein Ereignis wartet, wird von einem anderen Prozess verdrängt.

19 2.2. UNIX Nach einer Weile, in der andere Prozesse zur Ausführung kommen, wird der Kern durch eine Unterbrechung (I/O-Interrupt) informiert, dass die Ein-/Ausgabe abgeschlossen ist. Aufgabe der Unterbrechungsbehandlungsroutine (Interrupt-Handler) ist es, alle Prozesse, die auf dieses Ereignis gewartet haben, aufzuwecken, d.h. in den Zustand Bereit zu bringen. 11. Nun kann der Beispielprozess wieder aktiv werden (Systemmodus) und den Systemaufruf beenden. 12. Danach kehrt er in den Benutzermodus zurück. 13. Will sich ein Prozess beenden, führt er den Systemaufruf exit() aus, geht also in den Systemmodus. 14. Der letzte Zustand eines Prozesses ist Zombie, in dem nur noch Rückgabewerte für den Vaterprozess aufbewahrt werden. Von UNIX wird die Prozessorvergabe durch dynamische Prioritäten gesteuert. Die Prioritäten bestimmen sich wie folgt: Wenn ein Prozess auf ein Ereignis wartet, erhält er eine Priorität, mit der er bei Eintreten des Ereignisses bereit wird. Wenn ein Prozess aus dem Systemmodus in den Benutzermodus zurückkehrt, wird seine Priorität neu berechnet. Die Prioritäten aller Prozesse werden jede Sekunde neu berechnet. Die Priorität setzt sich zusammen aus der höchsten Priorität, die ein Benutzerprozess erreichen kann (base level), der vom Benutzer für diesen Prozess vergebenen Priorität (nice) und der verbrauchten CPU-Zeit in clock ticks (CPU-count). Bei jedem clock tick wird der CPU-count des aktiven Prozesses erhöht: CPU-count = CPU-count + 1 Bei jeder Neuberechnung der Priorität wird zunächst das Rechenzeitkonto etwas entlastet: Die Priorität ergibt sich dann zu: CPU-count = CPU-count/2 Priorität = CPU-count/2 + base level + nice UNIX erlaubt einen Prozesswechsel (context switch), wenn ein Prozess auf ein Ereignis wartet, oder ein Prozess sich beendet, oder ein Prozess vom Systemmodus in den Benutzermodus zurückkehrt (nach einem Systemaufruf oder einer Unterbrechungsbehandlung), ein anderer Prozess mit höherer Priorität aber bereit geworden ist.

20 2-12 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG Abbildung 2.12: Stack bei einem Systemaufruf Prozessnahe Algorithmen im Betriebssystemkern Abarbeitung eines Systemaufrufs Für alle Systemaufrufe gibt es einen gemeinsamen Einstieg in den Betriebssystemkern (Abbildung 2.12). Algorithmus syscall ( in: Nummer des Systemaufrufs, out: Rueckgabewert des Systemaufrufs) { Wechsle in Systemmodus Suche Eintrag in Systemaufruf-Tabelle Bestimme Anzahl Parameter Kopiere Parameter aus Benutzerbereich Kopiere Parameter in Systembereich Rufe Behandlungsroutine auf Kehre in Benutzermodus zurueck return Rueckgabewert des Systemaufrufs } Diese Zentralisierung ist zum einen sinnvoll, damit der kritische Moment des Wechsels in den Systemmodus nur an einer Stelle im Betriebssystem-Code erscheint, zum anderen wird durch die Systemaufruf-Tabelle eine n:m-abbildung zwischen Systemaufrufen und Systemaufruf-Behandlungsroutinen möglich: Es gibt sowohl den Fall, dass mehrere Systemaufrufe auf die gleiche Behandlungsroutine abgebildet werden, als auch ein Systemaufruf (mit unterschiedlichen Parametern) mehrere Behandlungsroutinen verwendet. Abarbeitung einer Unterbrechung Algorithmus inthand { push (aktuelle Prozessumgebung) Bestimme Sender und Art der Unterbrechung aus Interrupt Vektor Rufe Routine zur Unterbrechungsbehandlung pop (letzte Prozessumgebung) }

21 2.2. UNIX 2-13 Prozesswechsel... if (save_context ()) { /* gibt TRUE zurueck, speichert FALSE */ Waehle neuen Prozess /* dispatch */ resume_context (neuer Prozess) /* Diese Zeile wird nie erreicht */ } /* Prozess faehrt hier fort */ Systemaufrufe, Prozesse betreffend exec() - zu einem anderen Programm werden. fork() - einen neuen Prozess erzeugen. wait() - auf Ende eines Sohnprozesses warten. exit() - Prozess beenden. getuid() - reale Benutzerkennung feststellen. geteuid() - effektive Benutzerkennung feststellen. getpid() - Prozessnummer feststellen. getppid() - Prozessnummer des Vaters feststellen signal() - Signal abfangen. kill() - Signal senden. alarm() - Wecker stellen. sleep() - eine Weile schlafen legen. chdir() - das aktuelle Verzeichnis wechseln. brk() - Größe des Datensegments verändern. nice() - Priorität verändern. Exec() und fork() sind die beiden Systemaufrufe, mit denen UNIX-Prozesse erzeugt und Programme ausgeführt werden. Mit exec() erhält ein Prozess die Anweisung, statt seines bisherigen Programms ein neues Programm auszuführen. Für diesen Prozess werden also das Text-, Daten- und Stacksegment durch die des neuen Programms ersetzt. Nach einem exec() behält der Prozess u.a. die geöffneten Dateikennzahlen die Prozespriorität die Prozessnummer (PID)

22 2-14 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG die Vaterprozessnummer (PPID) das aktuelle Dateiverzeichnis das Root-Dateiverzeichnis Beim umgewandelten Prozess verändert sich u.a. die Signalbehandlung: Sie wird auf die Werte der Voreinstellung zurückgesetzt. Beispielprogramm: #include <stdio.h> main() { if (execl("/bin/date", "date", 0) == -1) { perror ("/bin/date"); return 1; } printf ("Dies wird nie ausgegeben\n"); return 0; } Hinweis: Es gibt eine ganze exec()-systemaufruf- Familie, die sich untereinander durch die Art der Parameterübergabe unterscheiden, so werden dem execl()-systemaufruf die Parameter als Liste übergeben, die mit einer 0 (Null) abgeschlossen wird. Mit fork() erhält ein Prozess die Anweisung, einen Sohnprozess zu erzeugen, der eine genaue Kopie seiner selbst ist (Clone). Nach einem fork() erhält der Sohnprozess vom Vater u.a. Kopien der folgenden Informationen: Umgebung Einstellung für Signalbehandlung Priorität aktuelles Dateiverzeichnis Root-Dateiverzeichnis Prozessgrenzen Prozessdateitabelle Der Sohnprozess unterscheidet sich vom Vater u.a. in der Prozessnummer der Vaterprozessnummer Beispielprogramm:

23 2.2. UNIX 2-15 Abbildung 2.13: Ablauflogik einer Shell #include <stdio.h> main() { switch (fork()) { case -1: perror ("fork"); return 1; case 0: printf ("Sohnprozess\n"); break; default: printf ("Vaterprozess\n"); break; } return 0; } Mit Hilfe der beiden Systemaufrufe fork() und exec() lassen sich neue Prozesse erzeugen und neue Programme ausführen. Dies ist im Kern die Funktionalität einer Shell, der Kommandozeilen-orientierten UNIX-Benutzeroberfläche (Abb. 2.13).

24 2-16 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG 2.3 Übungen Übung 1 Spielen Sie Scheduler und verwalten Sie die bereit-warteschlange für die folgenden Prozesse nach den Vergabestrategien 1. Round Robin (mit einer 2 Einheiten CPU-Zeit großen Zeitscheibe) 2. Shortest Job First 3. Shortest Remaining Time Next 4. Highest Response Ratio Next Die Prozesse: Prozess A: Wird zum Zeitpunkt 0 bereit und benötigt 6 Einheiten CPU-Zeit. Prozess B: Wird zum Zeitpunkt 1 bereit, benötigt 2 Einheiten CPU-Zeit, wartet eine Zeiteinheit lang auf ein Ereignis, wird dann wieder bereit und benötigt dann noch 1 Einheit CPU-Zeit. Prozess C: Wird zum Zeitpunkt 3 bereit und benötigt 1 Einheit CPU-Zeit. Beispiel für FCFS: Zeitpunkt Warteschlange aktiv Kommentar 0 A A wird sofort aktiv 1 B A B wird bereit, A aktiv 2 B A 3 C B A C wird bereit, A aktiv 4 C B A 5 C B A 6 C B A fertig, B wird aktiv 7 C B 8 C B wartet, C wird aktiv 9 B C fertig, B wieder aktiv Übung 2 In einem UNIX-System sind nur die Prozesse A, B und C. Sie sind zum Zeitpunkt 0 bereit mit der Priorität 60 (= base level, nice = 0). Der Zeitgeber unterbricht 60 mal in der Sekunde. Keiner der Prozesse setzt Systemaufrufe ab. Es ergibt sich der Ablauf in der Abbildung.

25 2.3. ÜBUNGEN 2-17 Prozess A Prozess B Prozess C Zeit Priorität CPU-Zähler Priorität CPU-Zähler Priorität CPU-Zähler Aufgabe: Nachdem im oberen Modell Prozess B seine ersten 30 clock ticks erhalten hat, muß eine Unterbrechung behandelt werden. Die Dauer der Behandlung sei vernachlässigbar. Führen Sie das Prozess-Scheduling bis zum Zeitpunkt 5 weiter. Übung 3 Gegeben sind die folgenden Prozesse: PID PPID Name 1 1 init syslogd sh mysqld mysqld mysqld inetd httpd httpd httpd httpd kdeinit bash vi

26 2-18 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG Stellen Sie die Vater-Sohn-Beziehungen zwischen den Prozessen in einem Baum dar und geben Sie die Folge von fork()- und exec()-systemaufrufen an, die mindestens notwendig war, um diese Prozess-Hierarchie zu erzeugen.

27 2.3. ÜBUNGEN 2-19

28 2-20 KAPITEL 2. PROZESSOR- UND PROZESSVERWALTUNG

29 Kapitel 3 Prozess-Synchronisation Befinden sich mehrere Prozesse in einem System, geht man i.a. davon aus, dass sie völlig unabhängig sind. Es kann aber der Fall eintreten, dass Prozesse miteinander konkurrieren (z.b. beim Zugriff auf Ressourcen) oder kooperieren (bei der Problemlösung). Im allgemeinen Teil werden überwiegend die Aspekte der Synchronisation von Prozessen beleuchtet. 3.1 Grundlagen Parallele Prozesse sind Prozesse, die zur selben Zeit existieren. Sie können völlig unabhängig voneinander arbeiten oder sie können asynchron sein, d.h. sie benötigen von Zeit zu Zeit Synchronisation. Parallele Prozesse können auf verschiedenen Ebenen auftreten: Im Betriebssystem-Kern oder innerhalb eines Anwendungssystems Gegenseitiger Ausschluss Beispiel: Auf einem http-server sollen die Aufrufe einer Seite gezählt werden. Jeder Aufruf führt zur (eventuell parallelen) Ausführung eines Programms. Der Zähler wird als globale Variable in einer Datei geführt. Bei jeder Zählung werden die folgenden Schritte durchlaufen: LOAD PAGECOUNT ADD 1 STORE PAGECOUNT Siehe Abbildung 3.1. Angenommen, PAGECOUNT steht auf Prozess P1 führt LOAD und ADD aus, verliert aber den Prozessor vor dem STORE durch Ablauf der Zeitscheibe. Prozess 2 führt alle drei Operationen aus, setzt also PAGECOUNT auf Kommt Prozess 1 wieder an die Reihe, führt er nur noch STORE aus und setzt damit PA- GECOUNT ebenfalls auf Ergebnis: Es ist eine Zeile verlorengegangen (lost update). Ursache ist die unkontrollierte Änderung einer globalen Variablen. Hängt das Ergebnis von Prozessen von deren relativer Geschwindigkeit ab, spricht man von Wettlaufbedingungen (race conditions) zwischen Prozessen. Dieses Problem kann gelöst werden, indem einem Prozess für die Dauer der Manipulation exklusiver Zugriff auf die globale Variable gegeben wird. Alle anderen Prozesse, die in dieser Zeit auf die Variable zugreifen wollen, müssen warten. Hat der erste Prozess seine Operation abgeschlossen, kann einer der wartenden Prozesse fortfahren. Damit ist gewährleistet, dass immer nur ein Prozess zu einer Zeit die globale Variable benutzt. Dies nennt man gegenseitigen Ausschluss (mutual exclusion). 3-1

30 3-2 KAPITEL 3. PROZESS-SYNCHRONISATION Abbildung 3.1: Beispiel einer Wettlaufbedingung Kritische Abschnitte Greift ein Prozess auf eine globale, schreibbare Variable zu, sagt man, dass er sich in einem kritischen Abschnitt (critical section, critical region) befindet. Um korrektes Verhalten zu erreichen, muss sichergestellt werden, dass, wenn sich ein Prozess in seinem kritischen Abschnitt befindet, kein anderer Prozess sich in einem kritischen Abschnitt befindet. (Zumindest in keinem kritischen Abschnitt, in dem die gleiche globale Variable manipuliert wird.) Andere Prozesse müssen warten und können ihren kritischen Abschnitt erst betreten, wenn der erste Prozess diesen verlassen hat (siehe Abbildung 3.2). Abbildung 3.2: Kritischer Abschnitt und gegenseitiger Ausschluss Semaphore Eine Möglichkeit, wie sich Prozesse exklusiven Zugriff auf kritische Abschnitte sichern können, ist das Setzen von Semaphoren. Semaphore wurden vom Niederländer E. W. Dijkstra eingeführt. Ein Semaphor ist eine Synchronisationsvariable, auf der zwei unun-

31 3.1. GRUNDLAGEN 3-3 terbrechbare Operationen definiert sind: Sei S ein (binärer) Semaphor. P(S) wartet, bis S FALSE wird und setzt S dann auf TRUE. P (S) { if (S == TRUE) sleep (Event: S == FALSE); S = TRUE; } P steht für das niederländische passeer. V(S) setzt S auf FALSE. V (S) { S = FALSE; wakeup (Event: S == FALSE); } V steht für das niederländische verlaat. Den Mechanismus zum gegenseitigen Ausschluss unter Benutzung von Semaphoren illustriert Abbildung 3.3. Abbildung 3.3: Schutz eines kritischen Abschnitts durch einen Semaphor Das Erzeuger-Verbraucher-Problem Ein Prozess (Schreiber, Erzeuger, producer) erzeugt Objekte, die über einen gemeinsamen Pufferbereich einem zweiten Prozess (Leser, Verbraucher, consumer) übergeben werden (siehe Abbildung 3.4). Die Manipulation des Puffers ist als kritischer Abschnitt zu betrachten. Darüberhinaus ist zu verhindern, dass der Erzeuger in einen vollen Puffer schreibt oder dass ein Verbraucher aus einem leeren Puffer liest. Für den Schutz des kritischen Abschnitts genügt ein binärer Semaphor. Für die Synchronisation am vollen bzw. leeren Puffer können allgemeine Semaphore eingesetzt werden. Allgemeine - oder zählende - Semaphore haben die folgende Semantik: P(S)

32 3-4 KAPITEL 3. PROZESS-SYNCHRONISATION { } if (S == 0) sleep (Event: S > 0); S --; V(S) { S ++; wakeup (Event: S > 0); } I A = F D H K J A N B = I A I A = F D H L I E A B 2 K B B A H I A = F D H A A H - H A K C A H M D E A J H K A A H A K C A 2 L 2 K J A N A E = C A H 8 K J A N 8 A A H 8 A H > H = K? D A H M D E A J H K A 2 A A H 2 K J A N = K I = C A H 8 K J A N 8 L L A H > H = K? D A A A H L Abbildung 3.4: Das Erzeuger-Verbraucher-Problem Klassische Probleme der Prozess-Synchronisation Neben dem Erzeuger-Verbraucher-Problem gibt es eine ganz Reihe weiterer Probleme, die unter mehr oder weniger launiger Verkleidung praktische Anwendungen enthalten. Das Leser-Schreiber-Problem: Auf einen Datenbereich sind beliebig viele Leser, aber nur ein Schreiber zugelassen. Ein Schreiber, der zugreifen möchte, muss darauf warten, dass alle Leser den Datenbereich verlassen haben. ([Tan03], S. 145) 1. Leser-Schreiber-Problem: Nachdem ein Schreiber auf den Zugriff wartet, können weiter neue Leser auf den Datenbereich zugreifen. 2. Leser-Schreiber-Problem: Nachdem ein Schreiber auf den Zugriff wartet, werden keine neuen Leser mehr auf den Datenbereich zugelassen.

33 3.1. GRUNDLAGEN 3-5 Das Problem der wandernden Affenherden: Wandernde Affen wollen ein Tal überqueren, über das ein Seil gespannt ist. Zu einer Zeit kann dieses Seil nur in einer Richtung benutzt werden. Es kommen unregelmäßig Affen an beiden Seiten des Seils an und wollen das Tal überqueren. Das Problem des schlafenden Friseurs: Ein Friseur hat einen Friseurstuhl und mehrere Stühle in seinem Wartezimmer. Hat der Friseur keine Kunden, schläft er. Kommt ein erster Kunde setzt er sich auf den Friseurstuhl, der Friseur wacht auf und beginnt seine Arbeit. Kommen weitere Kunden setzen sie sich in das Wartezimmer. [Tan03], S. 146 Das Problem der speisenden Philosophen: Fünf Philosophen setzen sich zum Essen an einen runden Tisch. Rechts neben jedem Teller liegt eine Gabel. Zum Essen benötigt ein Philosoph aber eine linke und eine rechte Gabel. [Tan03], S Implementierung von Semaphoren Das Problem des gegenseitigen Ausschlusses wird durch die Einführung von Semaphoren zunächst nur verlagert: Von der Anwendung in das Betriebssystem. Prozesse, die gleichzeitig P- oder V-Operationen ausführen wollen, müssen synchronisiert werden. Ein Semaphor ist also selbst ein kritischer Abschnitt. Bei Einzelprozessorsystemen genügt es, für die Dauer der Semaphor-Operation keine Unterbrechungen zuzulassen und damit auch keinen Prozesswechsel. P(S) { spil (6); /* set processor interrupt level to 6 */ if (S == TRUE) sleep (Event: S == FALSE); /* context switch */ S = TRUE; spil (0); /* reset interrupt level to 0 */ } spil... set processor interrupt level V(S) { spil (6); S = FALSE; wakeup (Event: S == FALSE); spil (0); } Bei Multiprozessorsystemen genügt dieses Verfahren nicht mehr, da Unterbrechungen zeitgleich an mehreren Prozessoren auftreten können. Bei eng gekoppelten Prozessoren sieht eine Lösung die Verwendung einer Maschineninstruktion wie Test-and-Set (TSTS) vor, die atomar den Wert einer Speicherstelle liest und diese Speicherstelle gleichzeitig mit einem festen Wert überschreibt. TSTS (b) gibt den Wert von b zurück und setzt b auf TRUE: %S

34 3-6 KAPITEL 3. PROZESS-SYNCHRONISATION TSTS (b) { %S rc = b; %S b = TRUE; %S return rc; %S } %S Damit ist die folgende Implementierung mit Hilfe von aktivem Warten (busy-wait) möglich: P(S) { do rc = TSTS (S_lock); while (rc == TRUE); S --; if (S >= 0) { S_lock = FALSE; return; } append_to_queue (this); S_lock = FALSE; sleep (); return; } Verklemmungen Die Lösung des Problems der Prozesssynchronisation wird auf Kosten eines neuen Problems erkauft: Können Prozesse innerhalb eines kritischen Abschnitts Zugang zu weiteren kritischen Abschnitten anfordern, kann es zu einer Verklemmung (deadlock) kommen. Ein Prozess befindet sich in einer Verklemmung, wenn er auf ein Ereignis wartet, das nie eintreten wird. Es gibt vier notwendige Bedingungen für eine Verklemmung: Gegenseitiger Ausschluss (mutual exclusion): Prozesse fordern und erhalten exklusive Kontrolle über benötigte Ressourcen. Kein Betriebsmittelentzug (no preemption): Ressourcen, die einem Prozess bereits gegeben worden sind, können ihm nicht mehr genommen werden. Warten: Prozesse belegen bereits Ressourcen exklusiv, während sie auf die Zuteilung weiterer Ressourcen warten. Geschlossener Wartegraph (circular wait): Es besteht eine geschlossene Kette von Prozessen, die jeweils auf eine Ressource des Nachfolgers warten. (siehe Abbildung 3.5.) Diese notwendigen Bedingungen sind ebenfalls hinreichend, wenn es von jeder der betroffenen Ressourcen nur ein Exemplar gibt.

35 3.1. GRUNDLAGEN 3-7 Abbildung 3.5: Ein geschlossener Wartegraph Maßnahmen gegen Verklemmungen Maßnahmen gegen Verklemmung fallen in drei Kategorien: Verhindern von Verklemmungen (deadlock prevention) Vermeiden von Verklemmungen (deadlock avoidance) Erkennen und Auflösen von Verklemmungen Um Verklemmungen zu verhindern, genügt es, eine der vier notwendigen Bedingungen nicht zuzulassen: Mehrfache Vergabe einer Ressource (kein gegenseitiger Ausschluss): Dies kann man i.a. nicht durchführen, geht es doch gerade um Synchronisation vor kritischen Abschnitten. Betriebsmittelentzug (preemption): Ein Prozess, der auf die Zuteilung einer Ressource warten muss, gibt vorher alle anderen Ressourcen frei, die er bisher kontrolliert hat. Alles oder Nichts (kein Warten): Ein Prozess fordert alle benötigten Ressourcen auf einmal an. Entweder sie werden ihm alle gegeben oder keine. Diese Alternative hat erhöhten Ressourcenverbrauch zur Folge. Ferner können Prozesse verhungern (indefinite postponement). Lineare Ordnung der Ressourcen (kein geschlossener Wartegraph, siehe Abbildung 3.6): Alle Ressourcen sind durchnumeriert. Ein Prozess, der die Ressource Nr. n besitzt, darf nur noch Ressourcen mit Nr. > n anfordern. Durch dieses Verfahren kann kein zyklischer Wartegraph entstehen. Das bekannteste Verfahren zur Vermeidung von Verklemmungen ist der sogenannte Bank- Algorithmus. Der Name stammt von der Analogie zu einer Bank, die bei der Kreditvergabe ähnlich vorgehen sollte, um ihre Liquidität sicherzustellen. Ein zentraler Begriff bei diesem Verfahren ist der des sicheren Zustands der Betriebsmittelvergabe. Ein Zustand der Betriebsmittelvergabe heißt sicher, wenn das Betriebssystem garantieren kann, dass alle Aufträge beendet werden können. Der Bank-Algorithmus besteht nun darin, nur Übergänge in sichere Zustände zuzulassen. Voraussetzung für dieses Verfahren ist, dass die Prozesse ihren maximalen Ressourcenbedarf (ihren Kreditrahmen ) im vorhinein angeben.

36 3-8 KAPITEL 3. PROZESS-SYNCHRONISATION Abbildung 3.6: Lineare Anordnung von Ressourcen 12 gleichartige Ressourcen (z.b. Bandlaufwer- Beispiel für einen sicheren Zustand: ke) stehen zur Verfügung. Benutzer vergeben max. Bedarf alfred 1 4 berta 4 6 caesar 5 8 In diesem Zustand sind also noch 2 Ressourcen verfügbar. Der Zustand ist sicher, da diese zwei Ressourcen an berta vergeben werden können, ihr Prozess sich damit beenden kann und mit den danach frei werdenden Ressourcen die anderen Bedarfe befriedigt Beispiel für einen unsicheren Zustand: Der folgende Zustand, der durch Zuteilung von einer Ressource an caesar aus dem vorigen hervorgegangen ist, ist unsicher, da kein Prozess durch die verbliebene eine Ressource seinen maximalen Bedarf befriedigen kann und daher eine Verklemmung eintreten kann. Benutzer vergeben max. Bedarf alfred 1 4 berta 4 6 caesar 6 8 Dieses Verfahren ist auch erweiterbar auf mehrere Betriebsmittel unterschiedlichen Typs. Das Verfahren besitzt die folgenden Nachteile: Anzahl der Benutzer und Betriebsmittel ist fix. Der maximale Bedarf muss im voraus gemeldet werden. Der Algorithmus garantiert nur, dass Aufträge in endlicher Zeit bedient werden, wenn Betriebsmittel auch in endlicher Zeit zurückgegeben werden.

37 3.2. ÜBUNGEN 3-9 Das Verfahren zur Erkennung und Auflösung von Verklemmungen untersucht den Allokierunsgraphen auf Zyklen und bricht entstandene Zyklen auf, z.b. durch Abbruch eines der beteiligten Prozesse. Dieses Verfahren wird häufig in Datenbankmanagementsystemen angewendet, in denen Verklemmungen durch den Abbruch einer Transaktion (Rollback) aufgelöst werden. Umgang mit Semaphoren Die Programmierung mit Semaphoren ist anspruchsvoll, da oftmals P- und V-Operationen in unterschiedlichen Prozessen liegen. die Granularität der kritischen Abschnitte von Bedeutung ist. Ist die Granularität zu groß, sinkt die mögliche Parallelität. Ist die Granularität zu klein, sinkt die Performance durch häufige Sperranforderungen und steigt die Gefahr von Verklemmungen. Bei der Programmierung mit Semaphoren sind einige Fehlermöglichkeiten zu vermeiden: Einführung von Wartestellen in kritischen Abschnitten. Verklemmung durch falsche Reihenfolge von P-Operationen. Kritische Abschnitt nicht vollständig abgedeckt. Semaphor nicht initialisiert. P-Operation vergessen. V-Operation vergessen. Es wurden daher andere Synchronisationsmechanismen vorgeschlagen. Am bekanntesten dürften Monitore sein. Bei einem Monitor wird in einem Aufruf die Synchronisation mit dem kritischen Abschnitt zusammengefasst. Dadurch werden einfache Programmierfehler, wie z.b. das Vergessen einer P-Operation, ausgeschaltet. 3.2 Übungen Übung 1: Erzeuger-Verbraucher Problem Was kann passieren, wenn im Verbraucherprozess die P-Operationen vertauscht werden (siehe Abbildung 3.7)? Übung 2 Benutzen Sie Semaphore, um die Arbeitsweise eines Automaten, der ein Produkt verkauft, zu simulieren (Abbildung 3.8). Der Automat arbeitet intern mit zwei Prozessen: Ein Prozess nimmt das Geld entgegen und verfolgt die eingeworfene Geldmenge, der andere Prozess gibt die Ware und das Wechselgeld aus, sobald der Ausgabeknopf gedrückt wird. Wird zuwenig Geld eingeworfen oder ist keine Ware mehr im Automaten, soll die gesamte eingeworfene Geldmenge zurückgegeben werden.

38 3-10 KAPITEL 3. PROZESS-SYNCHRONISATION I A = F D H K J A N B = I A I A = F D H L I E A B 2 K B B A H I A = F D H A A H - H A K C A H M D E A J H K A A H A K C A 2 L 2 K J A N A E = C A H 8 K J A N 8 A A H 8 A H > H = K? D A H M D E A J H K A 2 K J A N 2 A A H = K I = C A H 8 K J A N 8 L L A H > H = K? D A A A H L Abbildung 3.7: Übung zum Erzeuger-Verbraucher-Problem Übung 3 Implementieren Sie die V-Semaphoroperation mit Hilfe der TSTS-Maschinen-Instruktion. Übung 4 Ein System hat 6 Ressourcen gleichen Typs (z.b. Bandlaufwerke). Es laufen n Prozesse, jeder benötigt maximal 2 Ressourcen gleichzeitig exklusiv. Es werden keine Maßnahmen gegen Verklemmungen ergriffen. Für welche n kann es keine Verklemmung geben? Übung 5 Betrachten Sie ein System mit 48KB Hauptspeicher. Drei Prozesse A, B und C haben ihren maximalen Bedarf von 25KB, 15KB bzw. 41KB angemeldet. Sie belegen zur Zeit 3KB, 9KB bzw. 24KB. Entscheiden Sie mit Hilfe des Bank-Algorithmus, welche der folgenden zusätzlichen Anforderungen erfüllt werden können, ohne dass eine Verklemmung entsteht: 1. A fordert 9KB an. 2. C fordert 7KB an. 3. B fordert 6KB an. 4. A fordert 6KB an.

39 3.2. ÜBUNGEN 3-11 A F F = J - E M K H B 0 E A H? A 9 = H A = K I C = > A 4? C Abbildung 3.8: Neppomat

40 3-12 KAPITEL 3. PROZESS-SYNCHRONISATION

41 Kapitel 4 Hauptspeicherverwaltung Man fragte Rabbi Abraham Jaakob: Unsere Weisen sagen: Kein Ding, das seinen Ort nicht hätte. Es hat also auch der Mensch seinen Ort. Warum ist dann den Leuten zuweilen so eng? Er antwortete: Weil jeder den Ort des anderen besetzen will. [Mar87] Nach einer kurzen Darstellung der historischen Entwicklung der Hauptspeicherorganisation enthält der allgemeine Teil eine Gegenüberstellung der Segment- und Seitenorganisation und Informationen zu den einzelnen Verwaltungsstrategien, zu denen Ladestrategien, Positionierungsstrategien und Ersetzungsstrategien gehören. Der UNIX-spezifische Teil beschäftigt sich mit Paging und den Betriebssystemstrukturen, die den Ressourcen-Verbrauch minimieren helfen. 4.1 Grundlagen Hauptspeicherorganisation Zu diesem Thema soll ein kurzer historischer Abriss genügen (Abbildung 4.1). Die zeitliche Entwicklung läßt sich aus dieser Abbildung an den Blättern von links nach rechts verfolgen. Zu einzelnen Begriffen: Erste Computer führten nur ein Programm aus. Bei dieser Einzelprogrammierung bestand das Betriebssystem nur aus den Routinen zur Ein-/Ausgabe und wurde zusammen mit dem Programm auf Lochkarten oder Lochstreifen geladen. Ein Beispiel für diese erste Generation an Computern ist die Zuse Z4 (1949) [Spe08]: 2200 Telefon-Relais Mechanischer Speicher mit 64 Worten, Zugriffszeit 0,5s. Rechengeschwindigkeit ca arithmetische Operationen pro Stunde Mit Multiprogrammierung wurde erreicht, dass mehrere Programme sich gleichzeitig im Hauptspeicher aufhalten konnten. 4-1

42 4-2 KAPITEL 4. HAUPTSPEICHERVERWALTUNG - E A 2 H C H = E A H K C K J E H A = A H 5 F A E? D A H L E H J K A A H B A I J A 2 = H J E J E E A H K C L = H E = > A 5 A E J A *? 5 A C A J = > I K J A H A I I E A H K C L A H I? D E A > > = H A > E = J E Abbildung 4.1: Entwicklung der Hauptspeicherorganisation Variable Partitionierung gestattet es, den vergebenen Hauptspeicher den Erfordernissen eines Programms anzupassen und nicht, wie bei fester Partitionierung, Hauptspeicherbereiche statisch zum Generierungszeitpunkt des Betriebssystems festlegen zu müssen. Bei verschiebbarer Adressierung tragen Programme nur relative Adressen. Um reale Adressen zu erhalten, wird bei der Programmausführung der Wert eines Basisregisters hinzuaddiert. Programme können daher in eine beliebige passende Partition geladen werden. Die Organisationsform für moderne Betriebssysteme, bei der versucht wird, nur den gerade benötigten Teil von Prozessen im Hauptspeicher zu halten und die anderen Teile auf Sekundärspeicher (Platte) auszulagern. Prozesse, die auf einen ausgelagerten Teil zugreifen, erzeugen einen Seitenfehler, auf den das Betriebssystem mit Einlagerung des benötigten Bereichs reagiert. Man unterscheidet virtuelle Speicherverwaltung in Seiten und/oder in Segmenten.

43 ' 4.1. GRUNDLAGEN 4-3 Segmente Seiten... teilen den Hauptspeicher in Blöcke... teilen den Hauptspeicher in Blöcke unterschiedlicher Größe. gleicher Größe... sind i.a. größer als Seiten und... sind zwischen 512 Byte und 4 KB groß. durch den realen Speicherplatz Programme sind nicht durch den realen beschränkt. Speicherplatz beschränkt.... bilden logisch zusammenhängende... haben keinen Bezug zur Programmlogik. Programmteile in den Speicher ab. Zugriffsberechtigung genau dosierbar Zugriffsberechtigung auf Seiten bezogen. Auslagerung heißt swapping. Auslagerung heißt paging. Zwischen Segmenten können Lücken Innerhalb von Seiten kann Speicher auftreten (externe Fragmentierung). nicht belegt sein (interne Fragmentierung). Freiwerdender Speicher muß mit Freispeicher verschmolzen werden (coalescing holes) Um Fragmentierung aufzuheben, müssen Segmente verschoben werden (storage compaction). Die Entstehung externer Fragmentierung (Abbildung 4.2), d.h. das Auftreten von nicht mehr verwendbarem Speicherplatz, erläutert die folgende Abbildung. [h] " > A A C J & 1 ) K I C = C I I E J K = J E B H A E " & " & A N J A H A. H = C 1 1 =? D. H A E C = > A L " A J E A H K C =? D 8 A H C = > A L " ' Abbildung 4.2: Entstehung der externen Fragmentierung

44 4-4 KAPITEL 4. HAUPTSPEICHERVERWALTUNG Die Behandlung von Seitenfehlern läuft in den folgenden Schritten ab: 1. Es wird eine Unterbrechungs ausgelöst. Es wird die Situation des aktuell aktiven Prozesses gesichert und in den Systemmodus gegangen. 2. Das Betriebssystem ermittelt, welcher Seitenrahmen im realen Hauptspeicher fehlt. 3. Es wird überprüft, ob die Adresse gültig ist und der Zugriff durch den aktiven Prozess zulässig ist. 4. Das Betriebssystem sucht nach einem freien Seitenrahmen. Ist keiner verfügbar, wird ein Seitenersetzungsalgorithmus angestossen. 5. Wird ein Seitenrahmen ausgewählt, der modifiziert wurde, wird das Schreiben auf Platte angestoßen. Da diese Operation lange dauert, kommt es zu einem Prozesswechsel. 6. Liegt ein freier Seitenrahmen vor, sucht das Betriebssystem in den Seitentabellen nach der benötigten Seite. Es wird die Leseoperation abgesetzt, gegebenenfalls erfolgt jetzt ein Prozesswechsel. 7. Ist die Seite vorhanden, wird die Seitentabelle aktualisiert. 8. Der Befehl, der zum Seitenfehler geführt hat, wird erneut aufgesetzt. 9. Prozess wird bereit gesetzt Ladestrategie Die Ladestrategie (fetch strategy) antwortet auf die Frage: Wann wird in den Hauptspeicher geladen? Dabei gibt es zwei Alternativen: Wenn es vom Betriebssystem verlangt wird (demand fetch). Es wird versucht, die Anforderung vorwegzunehmen (anticipatory fetch)? Positionierungsstrategie Die Positionierungsstrategie (placement strategy) kommt nur bei Segmentorganisation ins Spiel. Sie antwortet auf die Frage: An welche Stelle im Hauptspeicher soll geladen werden? Die gewählte Positionierungsstrategie beeinflusst die externe Fragmentierung. Mögliche Positionierungs-Algorithmen sind: First Fit Es wird die erste passende Lücke, die gefunden wird, vergeben (siehe Abbildung 4.3). Die Freispeicherliste wird in Adressreihenfolge oder in zufälliger Reihenfolge verwaltet. In Bezug auf die auftretende Fragmentierung ist dies die Vogel-Strauß-Taktik: Ob die auftretenden Lücken zu klein sind, um wiederverwendet zu werden, spielt bei diesem Verfahren keine Rolle. Die Bildung von Fragmenten wird dem Zufall überlassen.

45 4.1. GRUNDLAGEN F A E? D A H = B A H K C L! * " > A A C J " $ * # # " * &! # * ' &! *. H A E I F A E? D A H E I J A! # # $ ' &! & & ' & B H A E & Abbildung 4.3: First Fit-Positionierungsstrategie Next Fit Next Fit ist eine Variation des First Fit-Verfahrens: Während bei First Fit bei jeder neuen Suche nach einem freien Segment am Anfang des Hauptspeichers begonnen wird, wird bei Next Fit an der Stelle fortgesetzt, bei der beim letzten Mal mit der Suche aufgehört wurde. Dadurch wird erreicht, dass Lücken nicht verstärkt am Anfang des Hauptspeichers entstehen, sondern sich gleichmäßig über den Hauptspeicher verteilen. Best Fit Es wird die kleinste passende Lücke vergeben (Abbildung 4.4). Die Freispeicherliste wird nach aufsteigender Lückengröße verwaltet. Damit wird mit hoher Wahrscheinlichkeit bei der Wiederverwendung von Lücken ein Fragment erzeugt, die Größe der auftretenden Fragmente wird aber minimiert. Worst Fit Es wird an die größte freie Stelle geladen (siehe Abbildung 4.5). Die Freispeicherliste wird nach abnehmender Lückengröße verwaltet. Damit steigt zwar die Wahrscheinlichkeit, dass übrigbleibende Lücken wiederverwendet werden können, es kann aber passieren, dass Anforderungen größerer Speicherbereiche nicht befriedigt werden können Ersetzungsstrategie Die Ersetzungsstrategie (replacement strategy) bestimmt, was verdrängt werden soll, wenn geladen werden muß, der Hauptspeicher aber voll ist.

46 4-6 KAPITEL 4. HAUPTSPEICHERVERWALTUNG 5 F A E? D A H = B A H K C L! * " > A A C J &! # * # # " * " $ * ' &! *. H A E I F A E? D A H E I J A! # # $ ' &! & & ' & B H A E & Abbildung 4.4: Best Fit-Positionierungsstrategie OPTIMAL Es wird die Seite ersetzt, die am längsten nicht mehr benötigt werden wird. Diese Strategie ist optimal, in der Praxis aber nicht anwendbar. Wichtig ist das Verfahren bei theoretischen Betrachtungen, z.b. beim Vergleich von anderen Verfahren mit dem überhaupt Erreichbaren. FIFO - First In First Out Es wird die älteste Seite ersetzt. Überlegung: Bei alten Seiten ist die Wahrscheinlichkeit am höchsten, sie nicht mehr zu benötigen. LFU - Least Frequently Used Es wird die Seite ersetzt, die am wenigsten referenziert wurde. Überlegung: Seiten, die in der Vergangenheit wenig benötigt wurden, werden auch in Zukunft wenig benötigt. LRU - Least Recently Used Es wird die Seite ersetzt, die am längsten nicht mehr referenziert wurde. Überlegung: Die Seite, die am längsten nicht mehr benötigt wurde, wird wahrscheinlich auch in Zukunft nicht mehr benötigt. Second Chance Das Second Chance-Verfahren (oder auch Clock-Algorithmus, siehe Abbildung 4.6) ist eine Erweiterung des FIFO-Verfahrens um LRU-Mechanismen. Alle Hauptspeicherseiten stellt

47 4.1. GRUNDLAGEN F A E? D A H = B A H K C L! * " > A A C J ' &! * " $ * # # " * &! # *. H A E I F A E? D A H E I J A! # # $ ' &! & & ' & B H A E & Abbildung 4.5: Worst Fit-Positionierungsstrategie man sich kreisförmig angeordnet vor. Jede Seite trägt ein Page Referenced-Bit, das durch die Hardware bei jedem Zugriff gesetzt wird. Zyklisch werden nun alle Seiten betrachtet: Ist das Bit gesetzt, wird es zurückgesetzt und der Lauf fortgesetzt. Ist es nicht gesetzt, wird die Seite ersetzt. Durch Vergabe von weiteren Page Referenced-Bits ( Third Chance, Fourth Chance ) entsteht das Aging-Verfahren, das im UNIX-Teil vorgestellt wird. Neben diesen globalen Ersetzungsverfahren, d.h. Verfahren, die den Hauptspeicher unabhängig von den Prozessen betrachten, gibt es sogenannte lokale Ersetzungsstrategien, das sind Verfahren, die sich mit der Zuteilung von Seiten an einzelne Prozesse beschäftigen. Hier kann die Eigenschaft der Lokalität von Prozessen ausgenutzt werden, d.h. Prozesse referenzieren in einem Zeitintervall nur Seiten eines relativ kleinen Gebiets. Mathematisch formuliert: Die Arbeitsmenge (working set) W (t, w) eines Prozesses ist die Menge von Seiten, die der Prozess im Zeitintervall [t w, t] referenziert. Die Behauptung ist, dass sich zwei Arbeitsmengen W (t, w) und W (t + w, w) i.a. nur geringfügig unterscheiden. Steuerung mittels Seitenfehlerhäufigkeit (page fault frequency): Ein Prozess, der eine Seite referenzieren will, die nicht im Hauptspeicher ist, erzeugt einen Seitenfehler. Anhand der Häufigkeit von Seitenfehler (Seitenfehlerrate), wird über die Vergrößerung, Beibehaltung oder Reduzierung des dem Prozess zugeteilten realen Hauptspeichers entschieden (Abbildung 4.7). Dargestellt ist die Seitenfehlerhäufigkeit eines Prozesses über der Zeit. Liegt die Seitenfehlerhäufigkeit über der oberen Grenze, ist anzunehmen, dass der reale Hauptspeicher, der dem Prozess zugewiesen wurde, zu klein ist. Ein Seitenfehler des Prozesses wird dann dadurch bearbeitet, dass der Prozess zusätzliche Seiten erhält.

48 4-8 KAPITEL 4. HAUPTSPEICHERVERWALTUNG 2 = C A 4 A B A H A? * E J Abbildung 4.6: Second Chance-Verfahren Liegt die Seitenfehlerhäufigkeit zwischen oberer und unterer Grenze, hat der Prozess genügend Hauptspeicher für seine Arbeitsmenge zur Verfügung. Seitenfehler, die in diesem Bereich auftreten, sind normale Schwankungen in der Arbeitsmenge und werden damit beantwortet, dass Seiten innerhalb des Adressraums des Prozesses ersetzt werden. Liegt die Seitenfehlerrate unterhalb der unteren Grenze, ist der reale Hauptspeicher des Prozesses zu groß für seine Arbeitsmenge. Das wäre an sich nicht schlimm, allerdings nehmen Seiten, die an diesen Prozess vergeben sind und nicht referenziert wurden, den anderen Prozessen Platz weg. Das System reagiert dadurch, dass dem Prozess Seiten entzogen werden. Dadurch steigt die Seitenfehlerrate wieder an. Durch dieses Vorgehen wird versucht die Seitenfehlerrate eines Prozesses zwischen der oberen und der unteren Grenze zu halten. 4.2 UNIX In den folgenden Abschnitten werden die Datenstrukturen erläutert, die in den Seitentabelleneinträgen vorhanden sind (siehe Abbildung 4.8). Diese dienen überwiegend, aber nicht ausschließlich der Seitenersetzung durch Paging. AGE Da echtes LRU aufwändig ist, wird eine Annäherung an dieses Verfahren verwendet, das auch unter dem Namen NUR (Not Used Recently) bekannt ist. In ihm wird das Bitfeld AGE durch einen Systemprozess (Page Stealer) solange hochgezählt, bis ein Zugriff (s.u. REF) auf die Seite erfolgt. Dann wird das Bitfeld gelöscht. Seiten mit maximal hochgezähltem Bitfeld können ausgelagert werden (Abbildung 4.9).

49 4.2. UNIX 4-9 Abbildung 4.7: Steuerung über Seitenfehlerhäufigkeit J A N J 5 A E J A J = > A = J = I J =? F H A C E 0 = K F J I F A E? D A H H A I I A 1 B H = J E A > A H 0 = K F J I F A E? D A H ) / - + 9, ) / A H J A H *? H 6 O F 1 B H = J E A > A H 2 = J J A I F A E? D A H Abbildung 4.8: Paging-Datenstrukturen COW - Copy On Write Prozesse, die durch fork() auseinander hervorgegangen sind, können dieselbe Hauptspeicherseite in ihrem Daten- oder Stacksegment adressieren, solange sie auf diese Seite nur lesend zugreifen. Für solche Seiten ist das Copy on Write-Bit gesetzt (Abbildung 4.10). Ändert einer dieser Prozesse eine Seite (Abbildung 4.11), wird anhand des Copy on Write- Bits festgestellt, dass eine Kopie angelegt werden muß. Ist der Referenzzähler auf 1 gefallen, kann das Copy on Write-Bit zurückgesetzt werden. MOD - Modified Bit, das durch die Hardware gesetzt wird, sobald der Inhalt der Seite geändert wird. Ist das modified-bit nicht gesetzt, und existiert auf Platte noch eine Kopie dieser Seite, muß die Seite nicht ausgelagert werden, sondern kann überschrieben werden.

50 4-10 KAPITEL 4. HAUPTSPEICHERVERWALTUNG 5 A E J A E 0 = K F J I F A E? D A H 5 A E J A M E H A B A H A E A H J 2 = C A 5 J A = A H C H A E B J K A E = C A H = K I = C A H 5 A E J A = K B 2 = J J A Abbildung 4.9: Aging REF - Referenced Bit, das durch die Hardware gesetzt wird, sobald auf die Seite zugegriffen wird. Bei jedem Durchlauf führt der Page Stealer-Prozess für jede Seite folgende Anweisungen aus: if (REF == 1) AGE = 0; else ++ AGE; REF = 0; VAL - Valid Bit, das angibt, ob die Hauptspeicheradresse gültig ist. Diese kann ungültig sein, wenn die Seite ausgelagert worden ist. PRT - Protection Bits, die angeben, ob die Seite lesbar, schreibbar oder ausführbar ist. Typ Eine Seite, die nicht im Hauptspeicher ist, kann auf der Swap-Platte sein (ausgelagert). noch in der Datei sein, die ausgeführt wird (executable file). Die Blocknummer enthält dann die logische Blocknummer in der Datei,

51 4.3. ÜBUNGEN 4-11 Abbildung 4.10: Copy On Write: Solange nur lesend zugegriffen wird nicht initialisierte Daten enthalten. Dann muß nur eine Hauptspeicherseite zur Verfügung gestellt werden oder zu 0 initialisierte Daten enthalten. Dann muß diese Seite noch mit Nullen initialisiert werden. 4.3 Übungen Übung 1 Ein 40 MB großer Hauptspeicher sei zum Zeitpunkt t 0 belegt mit folgenden Segmenten: Einem 6 MB großen Segment A, einem 6 MB großen Segment B und einem 4 MB großen Segment C. Die Segmente sind jeweils durch Lücken getrennt und zwar durch die 8 MB große Lücke 1, die 2 MB große Lücke 2, die 4 MB große Lücke 3 und die 10 MB große Lücke 4. Im Laufe der Zeit ändert sich die Hauptspeicherbelegung wie folgt: t 1 : Das 4 MB große Segment D wird angelegt.

52 4-12 KAPITEL 4. HAUPTSPEICHERVERWALTUNG Abbildung 4.11: Copy On Write: Beim ersten schreibenden Zugriff t 2 : Das 6 MB große Segment E wird angelegt. t 3 : Das Segment A wird freigegeben. t 4 : Das 4 MB große Segment F wird angelegt. t 5 : Das 8 MB große Segment G wird angelegt. Für ein System, das mit der first fit-strategie arbeitet, ergibt sich die in der Abbildung 4.12 dargestellte Hauptspeicherbelegung. Abbildung 4.12: Übungsbeispiel First Fit

53 4.3. ÜBUNGEN 4-13 Führen Sie von der oben dargestellten Situation zum Zeitpunkt t 0 die gleiche Hauptspeichervergabe mittels der best fit- und der worst fit-strategie durch. Übung 2 Wenden Sie die Ersetzungsstrategien OPTIMAL LFU LRU auf folgendes Modell an: Es werden die Seiten einzelner Prozesse mit diesen Strategien verwaltet. Ein Prozess, der 4 Seiten groß ist, hat 3 Seiten Hauptspeicher zur Verfügung. Der Prozess spricht die Seiten in folgender Reihenfolge an (Seitenreferenzfolge): 2, 1, 4, 1, 3, 4, 3, 1, 2, 3, 2, 1, 4, 3, 1 Wie oft müssen Seiten bei den einzelnen Strategien ersetzt werden? Beispiel FIFO (mit insgesamt 5 Ersetzung): Nr Ref S 1 S 2 S 3 Kommentar S S S S S Übung 3 Das Speicherabbild eines Prozesses besteht aus 5 Seiten. Dem Prozess stehen 3 Hauptspeicherseiten zur Verfügung. Es wird die FIFO-Ersetzungsstrategie angewendet. Ermitteln Sie, wieviele Treffer, d.h. Zugriffe ohne Einlagerung von Seiten, der Prozess bei folgender Seitenreferenzfolge hat: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 Führen Sie die gleiche Betrachtung mit 4 zur Verfügung stehenden Hauptspeicherseiten durch.

54 4-14 KAPITEL 4. HAUPTSPEICHERVERWALTUNG Übung 4 In einem Computer-System dauert der Zugriff auf Hauptspeicherinhalte 10 ns. Ein Seitenfehler wird innerhalb von 1 ms beseitigt, sofern eine leere oder nicht-modifizierte Seite zur Verfügung steht. Wurde die zu ersetzende Seite modifiziert, wird ein Seitenfehler innerhalb von 1,1 ms beseitigt. 1. Warum hat ein Seitenfehler unterschiedliche Bedienzeiten, je nachdem die zu ersetzende Seite modifiziert wurde oder nicht? Erläutern Sie die Größenunterschiede zwischen den Zeiten. 2. Bei 20% aller Seitenfehler wird eine modifizierte Seite ersetzt. Man möchte eine durchschnittliche Zugriffszeit von 20 ns erreichen. Welche Seitenfehlerrate ist dann noch akzeptabel?

55 Kapitel 5 Dateisysteme Everything important loses its value as soon as stored into a data set. Law of Junk Filling All Space Im allgemeinen Teil werden die unterschiedlichen Standpunkte vorgestellt, unter denen man Dateisysteme betrachten kann. Ausgespart bleibt hier das Thema Plattenverwaltung d.h. die physikalische Aufteilung von Platten und die Sequentialisierung von gleichzeitigen Aufträgen (Disk Scheduling). Der UNIX-Teil beschäftigt sich mit dem internen Aufbau eines klassischen UNIX-Dateisystems (Statik) und mit den internen Datenstrukturen und Algorithmen, die beim Dateizugriff benutzt werden (Dynamik). Kein Thema sind hier modernere Dateisysteme (z.b. journaling file systems) und die Verwaltung von mehreren Dateisystemen (Mounting). 5.1 Grundlagen Computer dienen zur Datenverarbeitung, Datenhaltung und immer stärker zum Datenaustausch (Kommunikation). Zusammengehörende Daten (z.b. Angaben über eine Person) werden zu Datensätzen (records) zusammengefaßt. Alle gleichartigen Datensätze (z.b. alle Personendaten einer Abteilung) werden in einer Datei (file) zusammengefaßt. Alle Dateien eines Rechners bilden sein Dateisystem (file system). Aufbau und Verwaltung von Dateisystemen gehören zu den wichtigsten Aufgaben eines Betriebssystems. Überblick über Begriffe, Strukturen und Funktionen der Dateisystemverwaltung aus Benutzer- und Betriebssystem-Sicht: Dateinamen Dateinamen dienen zur Identifikation einer Datei in einem Dateisystem. Man unterscheidet hierarchische (hierarchical file system) und flache Dateisysteme (flat file system). Bei der hierarchischen Ordnung besteht ein Dateiname aus einem Pfadnamen (path name), der ein Verzeichnis (Katalog, directory) in einem Verzeichnisbaum (directory tree) bezeichnet, und dem eigentlichen Dateinamen (basic file name) im Verzeichnis Dateibausteine Logische Dateibausteine (file elements, logical records) sind die Einheiten des Dateizugriffs aus Sicht des Benutzers. Logische Dateibausteine können sein: 5-1

56 5-2 KAPITEL 5. DATEISYSTEME Abbildung 5.1: Blockung und Blockungsfaktor Bytefolgen, Datensätze fester Länge (fixed length records) oder Datensätze variabler Länge (variable length records). Physikalische Dateibausteine (Blöcke, physical records) sind die Einheiten des Dateizugriffs aus Sicht des Systems. Ihre Größe wird im allgemeinen durch die Leistungsfähigkeit der Platte bestimmt. Das Verhältnis von logischen zu physikalischen Dateibausteinen kann so beschrieben werden (Abbildung 5.1): Wenn ein Block genau einen logischen Datensatz enthält, spricht man von ungeblockten Sätzen, enthält ein Block mehrere Datensätze, spricht man von geblockten Sätzen Dateiorganisation Die Dateiorganisation (file element ordering) bestimmt die möglichen Zugriffswege. Man unterscheidet sequentielle (sequential), relative (relative record number) und index-sequentielle (key-sequential) Dateiorganisation Plattenspeichervergabe Plattenspeichervergabe (disk space allocation) für die Ablage von Dateien ist ebenfalls eine Aufgabe des Betriebssystems. Strategien zur Plattenspeichervergabe: Zusammenhängende Abspeicherung (contiguous allocation): Die gesamte Datei wird auf der Platte für den Zugriff optimal (d.h. im allgemeinen auf einer Spur bzw. einem Zylinder) abgespeichert (Abbildung 5.2). Blockweise Abspeicherung (block allocation): Es wird der Speicherplatz in Blöcken (extents) vergeben (Abbildung 5.3): Die Blöcke enthalten die Daten und sind verkettet (verkettete Blöcke, block chaining),

57 5.1. GRUNDLAGEN 5-3 = A / H I I A H A I I A, = J A Abbildung 5.2: Zusammenhängende Abspeicherung = A / H I I A H A I I A, = J A, = J A, = J A Abbildung 5.3: Verkettete Datenblöcke = A / H I I A H A I I A, = J A, = J A, = J A, = J A Abbildung 5.4: Verkettete Indexblöcke

58 $! "! " # $ " 5-4 KAPITEL 5. DATEISYSTEME = A / H I I A H A I I A %, = J A, = J A, = J A, = J A, = J A! # $ Abbildung 5.5: File Allocation Table oder die Blöcke enthalten Verweise auf die Datenblöcke und sind verkettet (verkettete Indexblöcke, index block chaining, Abbildung 5.4), oder die Verkettung der Datenblöcke wird zentral in einer Tabelle (FAT, file allocation table, Abbildung 5.5) gehalten. Diese Verfahren haben Eigenschaften, die noch einmal im Kapitel Hauptspeicherverwaltung angesprochen werden: Bei der zusammenhängenden Abspeicherung tritt die sogenannte externe Fragmentierung auf. Damit sind freie Lücken gemeint, die zu klein sind, um eine neue Datei aufzunehmen. Bei allen anderen, blockorientierten Verfahren tritt dieses Problem nicht auf, dafür ein Effekt, der interne Fragmentierung genannt wird: Kaum eine Datei ist genau ein Vielfaches eines Blocks groß. So bleibt im letzten einer Datei zugewiesenen Block i.a. Platz übrig, im statistischen Durchschnitt die Hälfte des Blocks. Ferner gibt es z.b. beim Verfahren der verketteten Indexblöcke einen Spezialfall der internen Fragmentierung, die Tabellenfragmentierung: Ein im Zusammenhang mit einer Datei vergebener Indexblock, der aber nicht bis zum letzten Verweiseintrag gefüllt ist Operationen auf Dateibausteine Einfügen (insert) Lesen (retrieve) Verändern (modify) Löschen (remove) Sperren (lock) Freigeben (unlock) Operationen auf Dateien Öffnen (open) mit Angabe des Modus wie z.b. lesender, schreibender Zugriff. Manche Betriebssysteme verlangen kein explizites Öffnen, sie öffnen die Datei implizit beim ersten Zugriff.

59 5.1. GRUNDLAGEN 5-5 K C H E B B I E I J A > A J A * A K J A H, = J A E, = J A E, H K? A H = B H A I A * A H A? D J E C K C I E I J A > A H J =? = A I = H A I A I? D H A E > A A I A = K I B D H H K? A Abbildung 5.6: Zugriffsmatrix Erzeugen (create) mit Zusatzangaben wie z.b. den Zugriffsberechtigungen. Auch hier ist es denkbar, dass kein explizites Erzeugen verlangt wird, sondern ein Zugriff auf eine nicht existierende Datei genügt, um sie implizit anzulegen. Schließen (close) Das Schliessen einer Datei erfolgt bei den meisten Betriebssystemen implizit bei Programmende. Umbenennen (rename) Löschen (delete) Zugriffskontrolle Zugriffskontrolle (access control) dient zum Schutz vor unerlaubtem Zugriff. Die zur Zugriffskontrolle notwendigen Informationen könnten in einer Zugriffmatrix (Abbildung 5.6) abgelegt sein. Zugriffsmatrizen sind jedoch für eine Implementierung ungeeignet, da sie sehr groß sind und i.a. dünn besetzt sind. Eine Alternative könnte eine Tripelliste sein, bei der es für jedes vergebene Recht eines Benutzers auf ein Objekt einen Eintrag gibt: { (alfred, Datei1, read), (berta, Datei2, read), (berta, Drucker, drucken), (caesar, Datei1, read+write), (caesar, Datei2, execute) } Es entsteht auch hier eine große Liste, die zu durchsuchen ist, da z.b. ein Objekt, auf das alle zugreifen dürfen entsprechend viele Einträge benötigt. Ein weiterer Lösungsansatz besteht in der Einrichtung von separaten Listen und zwar - bezogen auf die Zugriffsmatrix - spalten- oder reihenweise. Bei spaltenweiser Aufteilung wird pro Objekt eine Liste mit Berechtigungen verwaltet. Diese Liste wird Zugriffsliste (Access Control List, ACL) genannt. Datei1: { (alfred, read), (caesar, read+write) } Datei2: { (berta, read), (caesar, execute) } Drucker: { (berta, drucken) } Bei reihenweiser Aufteilung wird pro Benutzer eine Liste mit Objektrechten verwaltet. Diese Liste wird Berechtigungsliste (Capability List) genannt.

60 @ = A B > C? 5-6 KAPITEL 5. DATEISYSTEME Abbildung 5.7: Aufbau des UNIX-Dateisystems (1. Näherung) alfred: { (Datei1, read) } berta: { (Datei2, read), (Drucker, drucken) } caesar: { (Datei1, read+write), (Datei2, execute) } Bei diesem Verfahren gibt ein Prozess beim Zugriff auf ein Objekt den entsprechenden Eintrag (capability) in seiner Berechtigungsliste an (analog dem Vorzeigen eines Ausweises an einem Werkstor). Capabilities müssen daher selbst vor Manipulation geschützt sein. Dies erfolgt entweder durch Verschlüsselung oder durch eine HW-Sperre (Capability Tag-Bit). Schließlich ist noch eine Kombination der beiden letztgenannten Verfahren denkbar: Beim ersten Zugriff wird die Zugriffsliste durchsucht, das Betriebssystem erzeugt ein Capability und übergibt es dem Prozess, danach präsentiert der Prozess bei allen weiteren Zugriffen dieses Capability Datei- und Satzsperren Datei- und Satzsperren (file and record locking) Dateien. regeln den gleichzeitigen Zugriff auf Im System können einfache Sperren vorhanden sein, oder es kann zwischen Leseund Schreibsperren unterschieden werden. Die Sperren können optional (advisory locks) sein, oder sie müssen immer vor Zugriff erworben werden (obligatorische Sperren, mandatory locks). Zugelassene Parallelität: Z.B. ein Schreiber oder viele Leser. Manche Systeme lassen auch mehrere parallele Schreiber zu. 5.2 UNIX Benutzersicht des UNIX-Dateisystems UNIX stellt ein hierarchisches Dateisystem zur Verfügung (Abbildung 5.7). Ausgehend von einer Wurzel (root) gelangt man durch Verzeichnisse (directories) zu den eigentlichen Dateien (ordinary files). Ein UNIX-Pfadname ist eine durch Schrägstriche getrennte Liste von Verzeichnisnamen, beginnend mit dem Wurzelverzeichnis, das durch den ersten Schrägstrich gekennzeichnet wird, und endend mit dem Namen der gewünschten Datei. Neben diesen absoluten Pfadnamen besteht die Möglichkeit, relative Pfadnamen zu verwenden: Dabei ist. das aktuelle Verzeichnis, auf das man sich bezieht, (current directory) und.. das darüberliegende Verzeichnis (parent directory).

61 @ A = >? 5.2. UNIX 5-7 B C Abbildung 5.8: Aufbau des UNIX-Dateisystems (2. Näherung) Implementierung der Verzeichnishierarchie Wie sieht nun eine Verzeichnishierarchie aus Sicht des Betriebssystems aus? In erster Näherung (siehe Abbildung 5.8 besteht ein Verzeichnis aus Paaren von Einträgen: Der Namen der verzeichneten Datei und deren Adresse bilden ein Paar. Dateinamen sind auch nur im Verzeichnis gespeichert. Die interne Identifikation erfolgt über die im Verzeichnis stehende Adresse. Diese Abbildung erlaubt auch mehrfache Verweise: Zwei Namen zeigen mit der gleichen Adresse auf das gleiche (namenlose) Objekt. Zu einer Datei gehört außer einem Namen, einer Adresse und dem eigentlichen Inhalt noch mehr: Dateiinformationen, wie z.b. Zugriffsberechtigungen, Eigentümer oder Änderungsdatum. In dritter Näherung erkennen wir - nun für den normalen Benutzer verborgen -, dass die Adressen nicht auf den eigentlichen Inhalt sondern auf die Träger der Dateiinformation zeigen (Abbildung 5.9). Diese Träger der Dateiinformation heißen I-Knoten (inode) und deren Adresse I-Knotennummer (inode number). Sie enthalten (außer den Adressen der Dateiinhalte): den Dateityp (Datendatei, Verzeichnis, Gerät,...), die Zugriffsberechtigungen (Lese-, Schreib- und Ausführungsrechte für den Eigentümer, die Gruppe des Eigentümers und alle anderen), die Anzahl der Verknüpfungen (hard links), die Benutzerkennung (UID) des Eigentümers, die Gruppenkennung (GID) der Gruppe des Eigentümers, die Größe der Datei in Bytes, den Zeitpunkt des letzten Lesezugriffs,

62 @ A = >? 5-8 KAPITEL 5. DATEISYSTEME B C Abbildung 5.9: Aufbau des UNIX-Dateisystems (3. Näherung) den Zeitpunkt des letzten schreibenden Zugriffs und den Zeitpunkt der letzten Änderung des I-Knotens. Wichtig ist zu beachten, welche Informationen sich nicht im I-Knoten befinden: Name der Datei (befindet sich nur im Verzeichnis) I-Knotennummer Zeitpunkt des Anlegens der Datei (wird in UNIX nicht geführt). Da die Art der Datei (gewöhnliche Datei oder Verzeichnis) im I-Knoten verzeichnet ist, können Datendateien und Verzeichnisse ab dieser Ebene gleich behandelt werden: Beide werden in Datenblöcken abgelegt Abbildung von I-Knoten auf Datenblöcke Ein I-Knoten enthält nicht eine sondern gleich 13 Adressen. UNIX verwendet eine Variante der verketten Indexblöcke für die Adressierung seiner Dateiinhalte (siehe Abbildung 5.10). Die ersten 10 Adressen zeigen auf die ersten zehn Datenblöcke einer Datei. Da die Blockgröße in UNIX 512 oder 1024 Byte beträgt, können Dateien bis 5 (10) KB durch diese Adressen vollständig adressiert werden. Bei größeren Dateien wird zusätzlich die 11. Adresse verwendet: Sie zeigt auf einen indirekten Block. Indirekte Blöcke sind normale Datenblöcke, enthalten aber statt Nutzdaten Verweise auf andere Blöcke. Dieser Block der ersten Indirektion enthält Verweise auf Datenblöcke. Da Datenblöcke in UNIX mit 4 Bytes adressiert werden, enthält ein indirekter Block (bei einer Blockgröße von 512 Bytes) 128 Verweise. Die größte Datei, die mit 11 Adressen in ihrem I-Knoten auskommt, ist 69 KB groß.

63 ' 5.2. UNIX 5-9 Abbildung 5.10: Abbildung von I-Knoten auf Blockadressen Die 12. Adresse im I-Knoten verweist auf einen indirekten Block, deren 128 Verweise auf indirekte Blöcke verweisen, die wiederum Datenblöcke der Datei adressieren (zweifache Indirektion). Schließlich verweist die 13. Adresse auf eine dreifache Indirektion. Es bestehen 1:1-Beziehungen zwischen den I-Knotennummern, den Adressen von Datenblöcken und den Adressen von indirekten Blöcken zu der physikalischen Adresse eines Blocks auf der Platte. Man kann also auf einfache Weise von einer Blockadresse zu dem Inhalt des Blocks gelangen durch Leseanforderung an die Platte Systemtabellen für geöffnete Dateien Wenn ein Prozess eine Datei öffnet, werden Einträge in drei Tabellen belegt (Abbildung 5.11): I-Knotentabelle (inode table), Eintrag enthält: sie wird zentral einmal für das System verwaltet. Ein die Informationen des von der Platte gelesenen I-Knoten, die I-Knotennummer und die Anzahl der Verweise auf diesen Eintrag (Referenzzähler, reference count). Systemdateitabelle (file table), sie wird zentral einmal für das System verwaltet. Ein Eintrag enthält:

64 ! "! " M H H 5-10 KAPITEL 5. DATEISYSTEME 2 H A I = J A E J = > A A & B H 2 H A I I ) B H 2 H A I I * 5 O I J = J A E J = > A A 1 J A 6 = > A A Abbildung 5.11: Datenstrukturen für geöffnete Dateien die Position des Lese-/Schreibzeigers (read/write pointer), die Zugriffsart (lesend und/oder schreibend), einen Verweis auf den entsprechenden Eintrag in der I-Knotentabelle und die Anzahl der Verweise auf diesen Eintrag (reference count). Die Größe sowohl der I-Knotentabelle als auch der Systemdateitabelle ist begrenzt, d.h. in einem System kann nur eine bestimmte Anzahl Dateien gleichzeitig geöffnet sein. Prozessdateitabelle (user file descriptor table), sie wird für jeden Prozess geführt. Ein Eintrag enthält einen Verweis auf den entsprechenden Eintrag in der System Dateitabelle. Die Nummer des Eintrags ist die Dateikennzahl (file descriptor). Die Größe der Prozessdateitabelle ist begrenzt, d.h. ein Prozess kann nur eine bestimmte Anzahl Dateien gleichzeitig geöffnet haben Systemaufrufe, das Dateisystem betreffend Die wichtigsten Systemaufrufe in Verbindung mit dem Dateisystem sind: creat() - - eine neue Datei erstellen oder eine vorhandene Datei neu beschreiben. open() - eine Datei zum Lesen und/oder Schreiben öffnen. close() - eine geöffnete Datei schließen. read() - aus einer Datei lesen. write() - in eine Datei schreiben.

65 5.2. UNIX 5-11 lseek() - Lese-/Schreibzeiger umpositionieren. link() - einen Verweis auf eine Datei erzeugen. unlink() - einen Verzeichnis-Eintrag entfernen. stat() - Dateiinformationen abrufen. chmod() - Zugriffsrechte ändern. Das folgende C-Programm soll die Verwendung der wichtigsten Systemaufrufe zeigen. Es öffnet eine Datei input, erzeugt eine Datei output, liest aus input ab Spalte Zeichen und schreibt sie nach output. /* filedemo.c */ #include <fcntl.h> #define SIZE 80 main() { extern long lseek (); extern void perror (); int infile, outfile; char card [SIZE]; if ((infile = open ("input", O_RDONLY)) == -1) { perror ("Open"); return 1; } /* Datei zum Lesen geoeffnet */ if ((outfile = creat ("output", 0644)) == -1) { perror ("Creat"); return 1; } /* Datei zum Schreiben geoeffnet */ if (lseek (infile, (long) SIZE, 0) == -1L) { perror ("Lseek"); return 1; } /* Lesezeiger positioniert */ if (read (infile, card, SIZE)!= SIZE) { perror ("Read"); return 1; } /* Datensatz gelesen */ if (write (outfile, card, SIZE)!= SIZE) { perror ("Write"); return 1; } /* Datensatz geschrieben */ if (close (outfile) == -1) { perror ("Close 1"); return 1; } /* Schreibkanal geschlossen */ if (close (infile) == -1) { perror ("Close 2");

66 5-12 KAPITEL 5. DATEISYSTEME return 1; } /* Lesekanal geschlossen */ return 0; } Was passiert bei der Ausführung des Programms im Betriebssystemkern? Für die verwendeten Systemaufrufe sollen die Aktionen vereinfacht in Pseudocode dargestellt werden: Algorithmus open /* infile = open ("input", RD_ONLY); */ { Bestimme I-Knoten aus Dateinamen if (Datei existiert nicht oder keine Zugriffserlaubnis) return Fehler Belege Eintrag in System-Dateitabelle Belege Eintrag in Prozess-Dateitabelle return Dateikennzahl } Algorithmus creat /* outfile = creat ("output", 0644); */ { Bestimme I-Knoten aus Dateinamen if (Datei existiert) { if (keine Zugriffserlaubnis) return Fehler } else { Belege leeren I-Knoten Schreibe neuen Verzeichniseintrag } Belege Eintrag in System-Dateitabelle Belege Eintrag in Prozess-Dateitabelle if (Datei existiert) Gebe alle Bloecke frei return Dateikennzahl } Algorithmus lseek /* lseek (infile, 80, 0); */ { if (Ausgangspunkt ist Dateianfang) Position = Verschiebung else if (Ausgangspunkt ist Dateiende) { Lese Dateigroesse aus I-Knoten-Tabelle Position = Dateigroesse + Verschiebung } else if (Ausgangspunkt ist aktuelle Position) Position += Verschiebung return Position }

67 5.2. UNIX 5-13 Algorithmus read /* read (infile, card, 80); */ { Suche Eintrag in System-Dateitabelle Ueberpruefe Zugriffserlaubnis Suche Eintrag in I-Knoten-Tabelle while (Anzahl nicht erreicht) { Bestimme Datenblock aus Position if (Anzahl lesbarer Zeichen == 0) break /* Dateiende erreicht */ Lese Datenblock Kopiere Daten in Benutzerbereich } /* while */ Position += Anzahl gelesener Zeichen return Anzahl gelesener Zeichen } Algorithmus write /* write (outfile, card, 80); */ { Gehe zum Eintrag in System-Dateitabelle Ueberpruefe Zugriffserlaubnis Gehe zum Eintrag in I-Knoten Tabelle while (Anzahl nicht erreicht) { Bestimme Datenblock aus Position while (Indexblock fehlt) { Belege leeren Indexblock Trage Verweis darauf ein Schreibe geaenderten Block auf Platte } if (kein Datenblock vorhanden) { Belege leeren Datenblock Trage Verweis darauf ein Schreibe geaenderten Block auf Platte } else if (nicht der gesamte Block zu schreiben) Lese Datenblock Kopiere Daten in Systembereich Schreibe Datenblock auf Platte } /* while */ Position += Anzahl geschriebener Zeichen return Anzahl geschriebener Zeichen } Algorithmus close /* close (outfile); */ { if (Zaehler in System Dateitabelle > 1) -- Zaehler else { if (Zaehler in I-Knoten Tabelle > 1) -- Zaehler

68 5-14 KAPITEL 5. DATEISYSTEME } else { Gebe I-Knoten frei Loesche Eintrag in I-Knoten Tabelle } Loesche Eintrag in System-Dateitabelle } Loesche Eintrag in Prozess-Dateitabelle Zwei wichtige Anweisungen erscheinen mehrfach im obigen Pseudocode: Bestimme Datenblock aus Position und Bestimme I-Knoten aus Dateinamen. Beide sind selbst aufwändigere Algorithmen: Algorithmus bmap /* Bestimme Datenblock aus Position */ { Berechne die logische Blocknummer Berechne Startbyte im Block Berechne Anzahl lesbarer Bytes im Block Bestimme die Anzahl Indirektionen while (TRUE) { /* Indirektion nicht aufgeloest */ Berechne Index im I-Knoten bzw. indirekten Block aus logischer Blocknummer Lese Blocknummer if (keine weitere Indirektion) return Blocknummer Lese indirekten Block von Platte Berechne aus der Indirektion die logische Blocknummer neu } } Algorithmus namei /* Bestimme I-Knoten aus Dateinamen */ { if (Pfad beginnt bei /) Knoten = I-Knoten von / else Knoten = I-Knoten des aktuellen Verzeichnisses while (Pfadnamen hat noch Komponente) { Lese naechste Komponente Ist Knoten vom Typ Verzeichnis? Sind Zugriffsrechte OK? Durchsuche Verzeichnis nach Komponente if (Komponente gefunden) { Lese I-Nummer des Eintrags Knoten = I-Nummer } else return kein Knoten } return Knoten }

69 5.3. ÜBUNGEN Übungen Übung 1 Es gibt keine beste Strategie zur Plattenspeichervergabe. Die vorgestellten Strategien schneiden unter verschiedenen Gesichtspunkten unterschiedlich gut ab. Wie beurteilen Sie die Strategien unter den Gesichtspunkten Geschwindigkeit des sequentiellen Zugriffs. Geschwindigkeit des direkten Zugriffs. Verhältnis Nutz- zu Verwaltungsdaten. Aufwand beim Vergrößern einer Datei. Umgang der Benutzer mit dem Plattenplatz. Wiederherstellbarkeit bei Verlust von Adressinformationen nach Rechnerausfall. Übung 2 Vergleichen Sie Zugriffs- und Berechtigungslisten aufgrund der Komplexität der folgenden Operationen: Ermitteln, wer auf eine bestimmte Datei zugreifen darf. Ermitteln, auf welche Dateien ein bestimmter Benutzer lesend zugreifen darf. Allen Benutzern die Schreiberlaubnis auf eine bestimmte Datei entziehen. Einem Benutzer Lesezugriff auf alle Dateien geben. Anlegen einer neuen Datei. Löschen eines Benutzers. Übung 3 Wieviele Plattenzugriffe pro Datenblock sind im Mittel beim Lesen aus einer 100 KB großen Datei notwendig, wenn 512 Byte grosse Blöcke verwendet werden? Übung 4 Betrachten Sie im folgenden eine Datei mit Bytes Größe in Dateisystemen mit 512 Byte großen Blöcken und 4 Byte Adressen. 1. Berechnen Sie für ein UNIX-Dateisystem die Fragmentierung in Bytes für jede mögliche Fragmentierungsart. 2. Berechnen Sie für ein Dateisystem mit verketteten Indexblöcken den Bedarf an Plattenblöcken, wenn die Datei aus fix geblockten Datensätzen mit 100 Byte Satzlänge besteht.

70 ! ' & 5-16 KAPITEL 5. DATEISYSTEME " ' $ " # "!!!! $ %! $ % " & ' # $ & " ' # $!!!! % #!!!!!!!! Abbildung 5.12: Übung zur Adressierung über I-Knoten Übung 5 Implementieren Sie die folgenden Anweisungen aus dem Algorithmus bmap: Berechne die logische Blocknummer Berechne Startbyte im Block Berechne Anzahl lesbarer Bytes im Block Bestimme die Anzahl Indirektionen Verwenden Sie eine symbolische Konstante für die Größe eines Datenblocks. Übung 6 Im folgenden sei die Blockgröße 1024 Bytes. Verfolgen Sie anhand der Abbildung 5.12, wie der Algorithmus bmap die Adresse des Datenblocks und das Startbyte im Block ermittelt für die Byteadresse 9000

71 5.3. ÜBUNGEN 5-17 die Byteadresse Übung 7 Ein Prozess öffnet mit dem Systemaufruf open ("/users/rgriesi/ba/pruefung", RD_ONLY); Eine Datei zum Lesen. 1. In welchen Betriebssystemtabellen werden durch diesen Systemaufruf Einträge angelegt? Welche Werte enthalten diese Einträge? 2. Erklären Sie, warum bei der Abarbeitung des Systemaufrufs Plattenzugriffe notwendig sind. 3. Berechnen Sie die minimale und die maximale Anzahl Plattenzugriffe unter der Annahme, dass kein Verzeichnis größer als 6 KB groß ist und das Dateisystem 512 Byte große Blocks verwendet.

72 5-18 KAPITEL 5. DATEISYSTEME

73 Kapitel 6 Ein-/Ausgabe Der allgemeine Teil beschäftigt sich mit der Bedeutung des Treiberkonzepts für Betriebssysteme. Themen wie Scheduling von Plattenzugriffen werden nicht behandelt. Der UNIX-spezifische Teil erklärt die Adressierung von Gerätetreibern und das Funktionieren des Pufferspeichers. 6.1 Grundlagen Bis jetzt wurde Ein- und Ausgabe so dargestellt, als würden z.b. die durch einen Lesebefehl gelesenen Daten direkt von Platte oder Terminal in den Datenbereich des Prozesses gelangen. Dem ist nicht so, aus mehreren Gründen: Programme müssen über die Schnittstelle der Systemaufrufe geräteunabhängig gehalten werden. Die Ansteuerung eines peripheren Gerätes ist sehr kompliziert. Sie erfolgt in einem Teil des Betriebssystems, der Gerätetreiber (device driver) genannt wird. Zwischen Geräten und deren Treibern besteht eine n:m-beziehung: Mehrere Geräte vom gleichen Typ können vom gleichen Treiber angesprochen werden. Gleichzeitig können Geräte über verschiedene Schnittstellen angesprochen werden. Es muß die Möglichkeit bestehen, neue Geräte (samt Treiber) zu installieren. Zwischen Auftragserteilung und Fertigmeldung liegt i.a. eine größere Zeitspanne, in der andere Prozesse zur Ausführung gelangen. Gerätetreiber müssen daher in der Lage sein, sowohl Aufträge von oben, als auch Fertigmeldungen über Unterbrechungen durch die Hardware von unten entgegenzunehmen. Es muß sichergestellt sein, dass bei Übertragung der Daten vom Eingabegerät in den Benutzerbereich die zu belegenden Speicherseiten an der erwarteten Stelle liegen und nicht in der Zwischenzeit ausgelagert wurden. Es ergibt sich die in der Abbildung 6.1 dargestellte Schichtung ([Tan03], S In der Vorlesung wird nur auf die geräteunabhängige Betriebssystem-Software eingegangen. 6-1

74 6-2 KAPITEL 6. EIN-/AUSGABE Abbildung 6.1: Schichten der Ein-/Ausgabe-Software 6.2 UNIX Gerätetypen In UNIX werden Geräte in zwei Klassen eingeteilt: In blockorientierte und zeichenorientierte Geräte (block devices, character devices). Blockorientiert sind z.b. Platten und Bänder, zeichenorientiert z.b. Terminals und Drucker. Geräte sind ebenfalls im Dateisystem (unter /dev) verzeichnet und tragen entweder den Typ block oder character (statt file oder directory) in ihrem I-Knoten. Weitere Information im I-Knoten eines Gerätes ist die Gerätenummer, die aus Haupt- und Neben-Nummer (major und minor number) besteht: Die Hauptnummer codiert den Gerätetyp, die Nebennummer ist eine laufende Nummer innerhalb des Gerätetyps. Für Prozesse ergeben sich folgende Ein-/Ausgabe-Möglichkeiten (Abbildung 6.2): Für zeichenorientierte Geräte: Öffnen des entsprechenden Eintrags im Dateisystem und Zugriff über die Dateikennzahl. Für blockorientierte Geräte: Öffnen einer Datei und Ein-/Ausgabe über sie. Die Dateisystemverwaltung spricht das richtige Gerät an und sorgt dafür, dass die Daten von der richtigen Stelle der richtigen Platte gelesen werden bzw. auf sie geschrieben werden. Für blockorientierte Geräte: Öffnen des Blockgerätes über dessen Eintrag im Dateisystem. Jeder beliebige Block kann nun unter Umgehung des Dateisystems gelesen oder geschrieben werden. Für blockorientierte Geräte gibt es einen zweiten Eintrag im Dateisystem, der dasselbe Gerät anspricht, aber diesmal zeichenorientiert. In diesem Fall kann das Gerät unter Umgehung des Pufferspeichers (s.u.) angesprochen werden. Die Aufgabe der Gerätetabellen (device switch tables) ist, bei einem Systemaufruf die Informationen aus dem I-Knoten auf einen Eintrittspunkt eines Gerätetreibers abzubilden. Beispiel: Angenommen, ein Prozess hätte ein blockorientiertes Gerät direkt geöffnet und bearbeitet, und schließt nun mit close(fd) die Verbindung (vergleiche Abbildung 6.3). 1. Das System ermittelt aus der Dateikennzahl fd den I-Knoten des Geräts.

75 ! " # $ M 6.2. UNIX 6-3 F A? I A E? J H A M H E J A 2 K B B A H I F A E? D A H 7 I A J J = > A A A E? D A H E A J E A H J A / A H J A 7 I A J J = > A A >? H E A J E A H J A / A H J A - E J H E J J I F K J A / A H J A J H A E > A H 7 J A H > H A? D K C I > A D K C - E J H E J J I F K J A / A H J A J H A E > A H 7 J A H > H A? D K C I > A D K C Abbildung 6.2: Datenstrukturen für Ein-/Ausgabe? I A 1 J A, = J A E J O F 0 = K F J A > A / A H J A K A H F A F A C J F A? I A I A C J? I A I J H = J A C O I J H = J C J I J H = J F A? I A H A H E J A? F A?? I A? H A M H E J > F >? I > H > M H E J A 7 I A J J = > A A >? H E A J E A H J A / A H J A 7 I A J J = > A A A E? D A H E A J E A H J A / A H J A C J? I A A > A C A H J A K A H Abbildung 6.3: Abbildung auf Gerätetreiber

76 6-4 KAPITEL 6. EIN-/AUSGABE, = J A E I O I J A 0 = K F J I F A E? D A H 2 K B B A H I F A E? D A H 5 O I J A > A H A E? D * A K J A H > A H A E? D Abbildung 6.4: UNIX-Pufferspeicher 2. Der im I-Knoten verzeichnete Dateityp zeigt an, dass es sich um ein blockorientiertes Gerät handelt, es wird die entsprechende Gerätetabelle verwendet. 3. Aus der Hauptnummer ergibt sich der Index der Reihe in der Gerätetabelle und identifiziert den Gerätetreiber. 4. Aus der Art des Systemaufrufs wird die Spalte in der Gerätetabelle ermittelt. 5. Die identifizierte close-routine des Gerätetreibers wird mit der Nebennummer aus dem I-Knoten aufgerufen. Der Eintrittspunkt strategy bei den blockorientierten Geräten enthält die Funktionen für den Zugriff auf den Pufferspeicher (s.u.) Der Pufferspeicher Die Ein-/Ausgabe von Prozessen auf blockorientierte Geräte, also i.a. Platten, erfolgt nicht direkt, sondern über einen Pufferspeicher (buffer cache) des Betriebssystems im Hauptspeicher (Abbildung 6.4). Diese Pufferung betrifft nicht nur Benutzerdaten, sondern auch Verzeichniseinträge, I- Knoten und indirekte Blöcke. Bei Leseoperationen (read()) wird der angeforderte Datenblock zuerst im Pufferspeicher gesucht: Ist der Block nicht vorhanden, wird der Block von der Platte in einen bereitgestellten Puffer gelesen. In jedem Fall wird die Leseanforderung aus dem Pufferspeicher befriedigt. Bei Schreiboperationen (write()) werden die Änderungen im Puffer des Pufferspeichers durchgeführt und der Puffer als zu schreiben markiert. Das Schreiben erfolgt erst, wenn der Puffer des Datenblocks neu vergeben werden muß (delayed write). Die Informationen über die im Pufferspeicher vorhandenen Blöcke werden in sogenannten Pufferköpfen gehalten (Abbildung 6.5). Diese Pufferköpfe werden aus Performance-Gründen in mehreren Hashlisten gehalten. Blöcke, die aktuell nicht bearbeitet werden, befinden sich darüberhinaus in der Freispeicherliste (Abbildung 6.6). Der Status eines Puffers ist dabei eine Kombination aus: Puffer gesperrt oder frei Block im Puffer enthält gültige Daten

77 ! 6.2. UNIX 6-5 / A H J A K A H *? K A H 5 J = J K I, = J A H? M H J A E 0 = I D E I J A H? M H J I E. H A E E I J A L H M H J I E 0 = I D E I J A L H M H J I E. H A E E I J A Abbildung 6.5: Aufbau eines Pufferkopfs " " & " $ " % # ' % " ' & "! # ' ' '. H A E I F A E? D A H Abbildung 6.6: Struktur des Pufferspeichers

78 6-6 KAPITEL 6. EIN-/AUSGABE Block im Puffer muß zuerst geschrieben werden Puffer wird gerade gefüllt oder geleert Ein Prozess wartet auf diesen Block. Es gilt nun 5 Szenarien zu unterscheiden: 1. Block ist in Hashliste, Puffer ist frei. 2. Block ist nicht in Hashliste, Puffer aus Freispeicherliste verfügbar. 3. Block ist nicht in Hashliste, Puffer aus Freispeicherliste muss zuerst geschrieben werden. 4. Block ist nicht in Hashliste, Freispeicherliste ist leer. 5. Block ist in Hashliste, zugehöriger Puffer ist aber gerade blockiert. Der Algorithmus getblk (get block) berücksichtigt diese Szenarien und stellt einen Puffer aus dem Pufferspeicher bereit. Algorithmus getblk Input: Blocknummer Output: Puffer zur Benutzung { while (true) { // Puffer nicht gefunden if (Block in Hash-Liste) { if (Puffer blockiert) { sleep (Puffer frei); continue; } Blockiere Puffer; Loesche Puffer aus Freispeicher; return Puffer; } else { if (Freispeicher leer) { sleep (Puffer frei); continue; } Loesche Puffer aus Freispeicher; if (Puffer muss geschrieben werden) { Schreibe asynchron Puffer auf Platte; continue; } Trage Puffer in richtige Hash-Liste ein; return Puffer; } } }

79 6.2. UNIX 6-7 Mit dem Algorithmus brelse (block release) wird der Puffer im Pufferspeicher wieder freigegeben. Algorithmus brelse Input: Blockierter Puffer { if (Daten im Puffer nicht mehr benoetigt) Puffer an Anfang der Freispeicher-Liste haengen; else Puffer ans Ende der Freispeicher-Liste haengen; Puffer freigeben; wakeup (Puffer frei); } Vorteile eines Pufferspeichers: Senkt die Transferrate zur Platte. Serialisiert Zugriffe auf Blöcke (sorgt für Dateisystemintegrität). Nachteile eines Pufferspeichers: Belegt Platz im Hauptspeicher (erhöht Swapping / Paging). Ist verwundbar für Systemzusammenbrüche. Ein Prozess weiß nie, wann seine Daten geschrieben werden. Verlangt eine zusätzliche Kopieroperation (ineffizient bei einfachen Kopieroperationen, effizient bei mehrfachen Zugriffen). Rochkind ([Roc88], S. 36) schreibt, was ein write()-systemaufruf sagen will, wenn er erfolgreich zurückkehrt: Ich habe Ihre Anfrage zur Kenntnis genommen und habe, in der Annahme, dass Ihre Dateikennzahl in Ordnung ist, und es noch genug Platz auf der Platte gibt, Ihre Daten erfolgreich kopiert. Später, wenn es mir gerade paßt, und wenn ich noch am Leben bin, versuche ich die Daten dorthin auf die Platte zu schreiben, wo sie hingehören. Entdecke ich einen Fehler, werde ich versuchen, etwas auf die Konsole zu schreiben, werde Ihnen jedoch nichts darüber mitteilen (tatsächlich könnten Sie inzwischen aufgehört haben zu existieren). Falls Sie oder irgendein anderer Prozess versuchen, diese Daten zu lesen, bevor ich sie (auf die Platte) geschrieben habe, so hole ich sie für Sie aus dem Pufferspeicher. Falls also alles gutgeht, werden Sie niemals herausbekommen, wann und ob ich Ihre Anfrage abgeschlossen habe. Weitere Fragen dürfen Sie nicht stellen. Vertrauen Sie mir einfach. Und danken Sie mir für die schnelle Antwort. Mit den bisher vorgestellten Mechanismen ist es nicht möglich, Datenbanksysteme zu implementieren, die Transaktionen sicherzustellen haben. Beginnend in den 70er Jahren wurden verschiedene Wege ausprobiert, dies dennoch zu ermöglichen:

80 6-8 KAPITEL 6. EIN-/AUSGABE Die Verwendung von sync(). Mit diesem Systemaufruf wird das Betriebssystem angewiesen, die geänderten Inhalte des Pufferspeichers auf Platte zu schreiben. Dieses Vorgehen hat allerdings zwei Nachteile: Zum einen werden alle Inhalte des Pufferspeichers geschrieben und nicht nur die, die für eine bestimmte Transaktion minimal notwendig sind, zum anderen sind die Inhalte noch nicht auf Platte geschrieben, wenn sync() zurückkehrt, d.h. mit sync() wird nur ein Flag gesetzt. Die Implementierung eigener Gerätetreiber. Dieses Vorgehen hatte das Problem, das sich Datenbank-Hersteller mit der zugrundeliegenden Hardware auseinandersetzen mussten. Verwendung der zeichenorientierten Schnittstelle (raw device). Dabei wird eine gesamte Partition dem Datenbanksystem unterstellt, das die gesamte Verwaltung übernimmt. Hat dieses Verfahren gewisse Vorteile bei der Performance, so hat es große Nachteile in der Bedienerfreundlichkeit, da ein Benutzer nicht das gewohnte Dateisystem mit den bekannten Kommandos hat, sondern alle Bedienungen über die vom Datenbanksystem angebotene Schnittstelle durchzuführen hat. Ferner kann die Verwendung eines raw devices ineffizient sein, wenn die benötigte Datenbank deutlich kleiner als die reservierte Partition ist. Diese Probleme mit transaktionsorientierten Programmen wurden durch Einführung der O_SYNC-Option des open()-systemaufrufs beseitigt: Mit dieser Option blockiert jedes Schreiben solange, bis der Inhalt auch auf Platte geschrieben wurde. Dadurch wird der Pufferspeicher zu einem Write-Through Cache. 6.3 Übungen Übung 1 Ein Prozess will eine Meldung auf der System-Konsole ausgeben. Dazu öffnet er mit fd = open ("/dev/console", O_WRONLY); die entsprechende Gerätedatei zum Schreiben. Erläutern Sie, wie aus den Angaben im Systemaufruf der richtige Eintrittspunkt (entry point) des richtigen Gerätetreibers für das Öffnen der System-Konsole gefunden wird. Übung 2 Gegeben sei die in Abbildung 6.7 dargestellte Belegung des Pufferspeichers: Zur Abarbeitung eines read()-systemaufruf benötigt das Betriebssystem die Plattenblöcke 4 und 22 (in dieser Reihenfolge). 1. Zeichnen und erläutern Sie die Belegung des Pufferspeichers nach Anforderung und Freigabe des Blocks Zeichnen und erläutern Sie die Belegung des Pufferspeichers nach Anforderung des Blocks 22.

81 6.3. ÜBUNGEN 6-9 Abbildung 6.7: Beispielbelegung des Pufferspeichers

82 6-10 KAPITEL 6. EIN-/AUSGABE

83 Kapitel 7 Multiprozessorsysteme Niemand kann zwei Herren dienen. Matthäus 6, 24 Der Wunsch nach immer höherer Rechenleistung kann über kurz oder lang nur noch durch Verwendung von Multiprozessorsystemen befriedigt werden. Besonderes Interesse finden dabei eng gekoppelte Systeme (tightly coupled systems, Abbildung 7.1), bei denen mehrere Prozessoren sich den Hauptspeicher eines Systems teilen. Der allgemeine Teil geht auf die möglichen Konfigurationen ein und detailliert das Problem, die Caches der einzelnen CPUs konsistent zu halten. Der UNIX-spezifische Teil stellt zwei Implementierungen vor. 7.1 Grundlagen Die Möglichkeit, real gleichzeitig zu arbeiten - im Gegensatz zur virtuellen Gleichzeitigkeit beim Multitasking - verspricht eine Leistungssteigerung, setzt aber die Lösung mehrerer Probleme voraus: Prozessorsynchronisation bei Manipulation kritischer Abschnitte. In Multiprozessorsystemen können kritische Abschnitte (critical sections) des Betriebssystems von zwei Prozessen gleichzeitig betreten werden, wenn diese auf zwei verschiedenen Prozessoren ausgeführt werden. Die bisher verwendeten Verfahren zum Schutz der Laufzeit- Datenstrukturen des Betriebssystems - Ausblenden von Unterbrechungen des Prozessors - genügen bei Multiprozessorsystemen nicht mehr. Gleichmäßige Verteilung der Ein-/Ausgabelast. Bei bisherigen Betriebssystemarchitekturen meldet ein Ein-/Ausgabegerät über eine Unterbrechung des Prozessors fer- Abbildung 7.1: Eng gekoppeltes System 7-1

84 7-2 KAPITEL 7. MULTIPROZESSORSYSTEME tig. Wird diese Methode auch bei Multiprozessoren verwendet, meldet ein Gerät immer am gleichen Prozessor fertig und es kann eine ungleichmäßige Verteilung der Ein-/Ausgabelast die Folge sein. Konsistenzerhaltung bei Verwendung von Prozessor-Caches. Die Verwendung von schnellen Cache-Speichern für Daten und/oder Instruktionen hat sich als vorteilhaft erwiesen. Bei Multiprozessoren besitzt jeder der Prozessoren einen Cache. Hier muß verhindert werden, dass Replikate des Hauptspeicherinhalts in mehreren Cache- Speichern unabhängig voneinander verändert werden Master-Slave-Konfiguration Betriebssystemanweisungen können nur auf einem Prozessor (master) ausgeführt werden, die gesamte Ein-/Ausgabe läuft ebenfalls über diesen Prozessor. Benutzerprogramme können auf jedem der anderen Prozessoren (slaves) ausgeführt werden. Sobald sie aber einen Systemaufruf absetzen, müssen sie dem Master übergeben werden. Dieses relativ einfache Verfahren vermeidet die Synchronisations-Probleme bei paralleler Manipulation kritischer Abschnitte. Da Prozesse in UNIX 40-50% ihrer Zeit im Systemmodus verbringen, ist der Gewinn an Rechenleistung beschränkt Getrennte Verarbeitung Jeder der Prozessoren besitzt sein eigenes Betriebssystem und verwaltet seine eigenen Geräte. Einzige überschneidung der Prozessoren ist die gemeinsame Verwendung des Hauptspeichers. Dieser Ansatz bedeutet mehrere Rechner in einem Gehäuse zu haben. Die Kopplung über den gemeinsamen Hauptspeicher wird nicht benutzt, um Anwendungen zu unterstützen. So können z.b. Prozessoren, die unter hoher Last arbeiten, nicht durch andere Prozessoren entlastet werden Symmetrische Verarbeitung Symmetrische Verarbeitung (Symmetric Multiprocessing) ist das Ziel, das man erreichen will: Ein Rechnersystem mit mehreren Prozessoren, die Zugriff auf einen gemeinsamen Hauptspeicher haben, und mit einem einzigen Betriebssystem arbeiten. Alle Prozessoren sind gleichberechtigt und es wird ein möglichst hoher Grad an Parallelität, auch innerhalb des Betriebssystemkerns, erreicht. Dazu ist erforderlich: Prozesse sichern sich exklusiven Zugriff auf kritische Abschnitte durch das Setzen von Semaphoren. Geräte melden durch Manipulation von Hauptspeicherwerten fertig. Es werden Cache-Kohärenzprotokolle verwendet, um Hauptspeicherinhalte und Cache- Speicher der Prozessoren konsistent zu halten. Das Invalidierungsprotokoll (Abbildung 7.2) als Beispiel eines Cache-Kohärenzprotokolls 1. INVALID Processor Read READ-ONLY Ein Prozessor benötigt lesenden Zugriff auf einen im Cache noch nicht vorhandenen Block. Es wird über den Bus eine Lese-Kopie des Blocks angefordert und im Cache gespeichert.

85 7.1. GRUNDLAGEN 7-3 Abbildung 7.2: Invalidierungsprotokoll 2. INVALID Processor Write READ-WRITE Ein Prozessor benötigt schreibenden Zugriff auf einen im Cache noch nicht vorhandenen Block. Es wird über den Bus eine exklusive Kopie des Blocks angefordert und im Cache gespeichert. 3. READ-ONLY Processor Write READ-WRITE Ein Prozessor benötigt schreibenden Zugriff auf eine im Cache vorhandene Lese- Kopie. Es wird über den Bus eine exklusive Kopie des Blocks angefordert und im Cache gespeichert. 4. READ-ONLY Processor Read READ-ONLY Lesezugriffe auf im Cache vorhandene Lese-Kopien sind problemlos möglich. 5. READ-WRITE Processor Read or Write READ-WRITE Lese- und Schreibzugriffe auf im Cache vorhandene exklusive Kopien sind problemlos möglich. 6. READ-ONLY Cache Replacement INVALID Der Speicherplatz im Cache wird benötigt. Der benötigte Speicherplatz ist von einer Lese-Kopie belegt. Diese kann problemlos überschrieben werden. Die überschriebenen Daten sind danach nicht mehr im Cache vorhanden. 7. READ-WRITE Cache Replacement INVALID Der Speicherplatz im Cache wird benötigt. Der benötigte Speicherplatz ist von einer exklusiven Kopie belegt. Dieser Block muß zunächst in den Hauptspeicher zurückgeschrieben werden. Die überschriebenen Daten sind danach nicht mehr im Cache vorhanden. 8. READ-ONLY Bus Write INVALID Von einem anderen Prozessor wird eine exklusive Kopie eines Blocks angefordert, der lokal als Lese-Kopie vorliegt. Durch diese Operation wird die lokale Lese-Kopie des Blocks ungültig.

86 7-4 KAPITEL 7. MULTIPROZESSORSYSTEME 9. READ-WRITE Bus Write INVALID Von einem anderen Prozessor wird eine exklusive Kopie eines Blocks angefordert, der lokal bereits als exklusive Kopie vorliegt. Durch diese Operation wird die lokale exklusive Kopie des Blocks ungültig, ihr Inhalt wird über den Bus an den anfordernden Prozessor gesendet. 10. READ-WRITE Bus Read READ-ONLY Von einem anderen Prozessor wird eine Lese-Kopie eines Blocks angefordert, der lokal als exklusive Kopie vorliegt. Nach dieser Operation darf die lokale Kopie des Blocks nicht mehr unbesehen geändert werden, sie wird zur Lese-Kopie. Der Inhalt des Blocks wird über den Bus an den anfordernden Prozessor gesendet, gleichzeitig wird der Block auch in den Hauptspeicher zurückgeschrieben. 7.2 UNIX Beispiel einer Implementierung in den Bell Laboratorien UNIX wurde auf zwei Doppelprozessorsystemen implementiert (AT&T 3B20A und IBM/370 unter TSS). Es wurden allgemeine Semaphore verwendet, d.h. Semaphore, die ganzzahlige Werte annehmen können. Folgende Operationen sind auf diesen Semaphoren definiert: init (S, n) Setzt Semaphor S auf Wert n. psema (S) Dekrementiert S. Ist S < 0, wartet der Prozess in einer Warteschlange, die dem Semaphor zugeordnet ist. Erwacht der Prozess, wird er mit Priorität p bereit. vsema (S) Inkrementiert S. Ist S <= 0, wird der erste Prozess in der Warteschlange geweckt. cpsema (S) (c = conditional) S > 0: S wird dekrementiert und true wird zurückgegeben. S <= 0: Es wird false zurückgegeben. Verklemmungen werden verhindert, indem alle zu verwaltenden Ressourcen linear geordnet sind und in dieser Reihenfolge auch angefordert werden müssen. Kann diese Reihenfolge nicht eingehalten werden, wird busy-wait angewendet: Zeit Prozess A Prozess B t 0 psema (S 1 ) t 1 kritischer Abschnitt 1 loop: t 2 kritischer Abschnitt 1 psema (S 2, p) t 3 psema (S 2, p) kritischer Abschnitt 2 t 4 wartet if (! cpsema (S 1 )) { t 5 wartet vsema (S 2 ) t 6 kritischer Abschnitt 2 goto loop t 7 kritischer Abschnitt 2 } Leistungsdaten: Die realisierten Doppelprozessorsysteme arbeiten um den Faktor 1.7 schneller als die jeweiligen Einzelprozessorsysteme. Bei weniger als 5% der psema-aufrufe muß ein Prozess warten. Verwaltungsaufwand für Semaphore ist geringer als 5% der Rechenzeit.

87 7.2. UNIX 7-5 Abbildung 7.3: Auswahl einer Synchronisationsart Beispiel einer Implementierung bei HP Multiprozessorfähigkeit wurde ab HP-UX 8.06 geboten. Sie wurde - analog der vorigen Implementierung - durch Einführung von Semaphoren und busy-wait-konstrukten realisiert. Dabei wurden noch Alpha- und Beta- Semaphore unterschieden: Alpha-Semaphore werden freigegeben, wenn der Prozess wartet. Daher müssen die Datenstrukturen im kritischen Abschnitt zu diesem Zeitpunkt konsistent sein. Beta-Semaphore werden gehalten, während ein Prozess wartet. Die folgende Abbildung 7.3 erläutert den Entscheidungsprozess, wann welche Synchronisationsart gewählt wurde. Bei der Entwicklung wurden zuerst vier Reiche gebildet und jedes Reich mit einem eigenen Semaphor geschützt: Dateisystem Virtueller Speicher Prozessverwaltung Ein-/Ausgabe In der weiteren Entwicklung wurden diese Reiche dann durch Einführung weiterer Semaphore weiter verfeinert. Da durch die Hardware-Architektur sehr hohe Kosten auftreten, wenn Operationen des Cache-Kohärenzprotokolls durchgeführt werden müssen, wurde bei der Prozessverwaltung eine sogenannte heuristische Prozess-Affinität eingeführt: Prozesse werden nur dann von einem Prozessor zum anderen verlagert, wenn dies zur Last- Balancierung notwendig ist. Um nicht alle Gerätetreiber anpassen zu müssen, wurde auf der Ein-/Ausgabeseite eine Einzelprozessor-Emulation eingeführt.

88 7-6 KAPITEL 7. MULTIPROZESSORSYSTEME 7.3 Übungen Übung 1 Bei einem eng-gekoppelten Multiprozessorsystem steht zur Synchronisation statt der TSTS- Maschineninstruktion eine SWAP-Maschineninstruktion zur Verfügung. Mit dieser Instruktion werden zwei Speicherstellen miteinander vertauscht. 1. Implementieren Sie in Pseudocode die Synchronisation mit SWAP. 2. Ist es egal, ob bei SWAP die Speicherstellen Hauptspeicheradressen oder CPU-Register sind oder gibt es Kombinationen, die für die Synchronisation in diesem System nicht verwendbar sind? Übung 2 Erläutern Sie den Ablauf beim Cache-Invalidierungsprotokoll, wenn ein Prozessor auf eine Adresse schreibend zugreifen will, diese sich aber nicht in seinem Prozessor-Cache befindet, sondern als Schreib-Kopie im Cache eines anderen Prozessors.

89 Kapitel 8 Prozessor-Virtualisierung 8.1 Motivation Als Virtualisierung bezeichnet man die Einrichtung einer logischen Schicht zwischen Benutzer und Hardware, um die Hardware mehreren Benutzern parallel zur Verfügung zu stellen, Benutzern eine bessere Funktionalität zu bieten oder die Hardware austauschbar zu machen. Virtualization is the process of presenting computing resources in ways that users and applications can easily get value out of them, rather than presenting them in a way dictated by their implementation, geographic location, or physical packaging. In other words, it provides a logical rather than physical view of data, computing power, storage capacity, and other resources. Jonathan Eunice, Illuminata Inc. Dieses Konzept ist schon lange bekannt: Virtueller Hauptspeicher Betriebssystem selbst IBM VM Abbildung von DNS auf IP-Adressen Java Virtual Machine Bremskraftverstärker im Auto... Vorteile, die man sich durch Virtualisierung verspricht: Nachbildung identischer Hardware Schutz des Basissystem bei Tests 8-1

90 8-2 KAPITEL 8. PROZESSOR-VIRTUALISIERUNG Schutz unterschiedlicher Software voreinander (Isolation). Konsolidierung im Rechenzentrum: Mehr Rechner auf bestehendem Platz. Energieeinsparung. Effizienteres Management von Ressourcen (Personaleinsparung) Vergrößerung des Software-/Hardware-Angebots Erhöhung der Verfügbarkeit durch Austauschbarkeit virtueller Komponenten oder Migration auf andere Hardware. Bessere Auslastung von Ressourcen durch mehrere virtuelle Maschinen auf einer Hardware. Installation von Software in einer virtuellen Maschine ohne Administratorrechte auf dem Basissystem. Erhöhte Flexibilität: Reagieren auf veränderte Anforderungen und Workloads Versorgung von Ressourcen (Provisioning) Quality of Service Nachteile, die man sich durch Virtualisierung einhandeln kann: Fehlende Aktualisierung von z.b. Virenscannern auf den einzelnen Gastsystemen Erhöhter Energiebedarf durch hohe Packungsdichten Erhöhter Ausbildungsbedarf des Bedienpersonals Größere Auswirkungen bei Ausfällen von Wirtssystemen Virtualisierung bedient sich mehreren Funktionsprinzipien ([OPRW09]): Partitionierung Physische Ressourcen werden in virtuelle Ressourcen aufgeteilt. Diese Aufteilung kann sich zur Laufzeit ändern (dynamische Partitionierung). Typischerweise geht man davon aus, dass es weniger virtuelle als physische Ressourcen gibt, zum einen weil nicht alle physische Ressourcen virtualisiert werden, zum anderen weil die Virtualisierung selbst einen gewissen Ressourcenbedarf hat (Virtualization Overhead) Für den Fall, dass die virtuellen Ressourcen in Summe die physischen Ressourcen übersteigen, spricht man von Over-Commitment. Aggregation Physische Ressourcen werden zu virtuellen Ressourcen zusammengefasst. Beispiel: Zusammenfassung mehrerer physischer Plattenlaufwerke zu einem Dateisystem. Emulation Komplette Nachbildung einer Hardware inklusive Prozessor, Chipsatz usw. durch eine Software, so dass Betriebssysteme und Anwendungen auf der Emulation laufen können. Beispiele sind alte (Spiel-) Konsolen, wie Commodore C64 oder Atari, Emulatoren aktueller Architekturen sind Bochs und Qemu. Im professionellen Umfeld sind Emulatoren zu langsam, um kritische Anwendungen zu steuern ([Zim06]).

91 8.2. PROZESSOR-VIRTUALISIERUNG 8-3 Abbildung 8.1: Virtualisierungsprinzip Partitionierung Abbildung 8.2: Virtualisierungsprinzip Aggregation Abbildung 8.3: Virtualisierungsprinzip Emulation

92 8-4 KAPITEL 8. PROZESSOR-VIRTUALISIERUNG Abbildung 8.4: Nicht-virtualisiertes System 8.2 Prozessor-Virtualisierung Prozessor-Virtualisierer gibt es auf verschiedenen Ebenen: Hardwareunterstützung: Intel VT, AMD Pacifica Auf Hardware aufsetzend: Schmaler Kern als Basisbetriebssystem direkt auf der Hardware. Dieser Kern (Wirt) muss die Hardware des Systems kennen, um sie virtualisiert an die darüberliegenden System (Gäste) weitergeben zu können. Daher sind diese Lösungen besser für Server- Systeme einsetzbar, da die Vielfalt der möglichen Hardware bei Desktop-Sytemen den Support erschwert. Beispiele: VMWare ESX Xen Auf Betriebssystem aufsetzend: Ein Basisbetriebssystem (Wirt) wird verwendet, darauf läuft die Virtualisierungssoftware und darauf das Gastsystem. Beispiele: MS Virtual PC MS Virtual Server VMware Server (ehemals VMWare GSX). QEMU

93 8.2. PROZESSOR-VIRTUALISIERUNG 8-5 Abbildung 8.5: Virtualisierung direkt auf der Hardware Abbildung 8.6: Virtualisierung auf Wirtssystem

94 8-6 KAPITEL 8. PROZESSOR-VIRTUALISIERUNG Im Betriebssystem integriert: SWsoft Virtuozzo und OpenVZ VServer Solaris Container HP Virtual Partitions BSD Jails Die virtuellen System teilen sich die Performance des physikalischen Rechners. Nicht alle Anwendungen laufen (z.b. Hardware Dongle-Programme) oder nicht alle Software- Anbieter supporten Servervirtualisierung. Unter Emulatoren versteht man die komplette Nachbildung einer Hardware inklusive Prozessor, Chipsatz usw. durch eine Software, so dass Betriebssysteme und Anwendungen auf der Emulation laufen können. Beispiele sind alte (Spiel-) Konsolen, wie Commodore C64 oder Atari, Emulatoren aktueller Architekturen sind Bochs und Qemu. Im professionellen Umfeld sind Emulatoren zu langsam, um kritische Anwendungen zu steuern. Virtualisierer nutzen direkt Prozessoren und Hauptspeicher der Wirtshardware ([Zim06]) Aspekte der Servervirtualisierung Unterstützung von 32 und 64 Bit-Prozessoren Unterstützung mehrerer realer und/oder virtueller Prozessoren. Begrenzung des unterstützten realen / virtuellen Hauptspeichers. Liste der unterstützten Peripheriegeräte (iscsi, NAS, USB 2.0) Snapshots: Abspeicherung des Zustands einer virtuellen Maschine, um später auf diesen Zustand zurücksetzen zu können. Gruppierung von Ressourcen Vorkehrungen um Ausfallsicherheit zu verbessern. Verschiebung von Installationen auf andere Rechner. Teilweise im laufenden Betrieb (VMotion bei VMware ESX) Xen Xen ist eine Virtualisierungsschicht (Hypervisor) direkt auf der Hardware Entwurfsprinzipien Die Entwickler fassen die Prinzipien des Design von Xen wie folgt zusammen: 1. Unterstützung ungeänderter Binärdateien von Anwendungsprogrammen (ABI - Application Binary Interface). 2. Unterstützung vollwertiger Betriebssysteme als Gastbetriebssysteme. 3. Hohe Performance und Ressourcen-Isolierung durch Paravirtualisierung auf für Virtualisierung wenig geeigneten Prozessoren.

95 8.2. PROZESSOR-VIRTUALISIERUNG 8-7 Abbildung 8.7: Xen-Aufrufhierarchie 4. Korrektheit und Performance geht vor vollständiger Ressourcen-Virtualisierung. Der Begriff der Paravirtualisierung wird in Xen wie folgt beschrieben: Seitenorganisation: Gastbetriebssysteme haben nur lesenden Zugriff auf Seitentabellen. Änderungen in Seitentabellen werden gesammelt und durch Xen validiert. Schutz: Gastbetriebssysteme müssen mit niedrigeren Privilegien laufen als Xen. Software-Unterbrechungen: Gastbetriebssysteme müssen Xen eine Deskriptortabelle für Unterbrechungsbehandlungen zur Verfügung stellen. Systemaufrufe: Gastbetriebssysteme können schnelle Systemaufrufe anbieten, die die gewünschte Funktionalität direkt im Gastbetriebssystem unter Umgehung von Xen implementieren. Hardware-Unterbrechungen: Diese werden ersetzt durch ein Event-System. Zeitgeber: Jedes Betriebssystem hat Zugriff sowohl auf die reale als auch die virtuelle Zeit. Ein-/Ausgabe: Gastbetriebssysteme sehen nur virtuelle Geräte. Abwicklung der Ein- /Ausgabe über asynchrone Pufferbereiche.

96 8-8 KAPITEL 8. PROZESSOR-VIRTUALISIERUNG

97 Literaturverzeichnis [Alb10] Susanne Albers. Onlinealgorithmen. Informatik Spektrum, (33), [Dei90] Harvey M. Deitel. Operating Systems. Addison Wesley, [Han77] Per Brinch Hansen. Betriebssysteme. Hanser Verlag, [Mar87] Martin Buber. Die Erzählungen der Chassidim. Manesse, [OPRW09] Stefan Osterburg, Alexander Pinnow, Claus Rautenstrauch, and Markus Winter. Neue Computing-Grundlagen für das Rechenzentrum. Informatik Spektrum, 32(2), [Roc88] Marc J. Rochkind. UNIX-Programmierung für Fortgeschrittene. Hanser, [Spe08] Speiser, Ambrose. Episoden aus den Anfängen der Informatik an der ETH. Informatik Spektrum, 31(6), [Tan03] Tanenbaum, Andrew S. Moderne Betriebssysteme. Hanser, [Zim93] Zimmermann, Christoph and Kraas, Albrecht W. Mach. Springer, [Zim06] Dennis Zimmer. Trau, schau, wem. ix, (5), Index-1

98 Index Änderungsdatum, 5-7, 8-6 Abspeicherung blockweise, 5-2 zusammenhängende, 5-2, 5-4 access control, siehe Zugriffskontrolle access control list, siehe Zugriffsliste ACL, siehe access control list Adresse, relative, 4-2 Adressierung verschiebbare, 4-2 Affen-Problem, 3-5 Aggregation, 8-2 Aging, 4-7, 4-8 Aktives Warten, 3-6 Allokierungsgraph, 3-9 Alpha-Semaphor, 7-5 Analyse kompetitive, 2-6 Antwortzeit, 2-3 Arbeitsmenge, 4-7 asleep, siehe Prozesszustand blockiert AT&T 3B20A, 7-4 Auslagerung, 4-3 Auslastung, 2-3 Austauschbarkeit, 1-4 Band, 6-2 Bank-Algorithmus, 3-7, 3-10 Basisregister, 4-2 Bedienoberfläche, 1-4 Bedingung hinreichende, 3-6 notwendige, 3-6, 3-7 Bell Laboratorien, 7-4 Benutzerbereich, 6-1 Benutzerdaten, 6-4 Benutzerkennung, 5-7 Benutzermodus, 2-2 Benutzeroberfläche, 1-1 Benutzerverwaltung, 1-3 Berechtigungsliste, 5-5, 5-15 Best Fit, 4-5 Beta-Semaphor, 7-5 Betriebsmittel, 1-1, 1-3, 2-3 Betriebsmittelentzug, 3-6, 3-7 Betriebssystem monolithisches, 2-1 proprietäres, 1-4 Block, 5-2, 6-2, 6-4, 6-6, indirekter, 5-8, 5-9, 6-4 blocked, siehe Prozesszustand blockiert Blockgröße, 5-16 Blocknummer, 4-10 logische, 4-10, 5-16 Blockorganisation, 4-3 Blockungsfaktor, 5-2 bmap, 5-14, 5-16 brelse, 6-7 buffer cache, siehe Pufferspeicher Bus, Busy-wait, siehe Aktives Warten, 7-4, 7-5 Bytefolge, 5-2 Cache, , 7-5 Capability, 5-6 capability list, siehe Berechtigungsliste Capability Tag-Bit, 5-6 citical region, siehe Kritischer Abschnitt Clock-Algorithmus, 4-6 Coalescing Holes, 4-3 Copy on Write-Bit, 4-9 core image, siehe Speicherabbild critical section, siehe Kritischer Abschnitt Datei, 5-1 öffnen, 5-4 eigentliche, 5-6 erzeugen, 5-5 Index-2

99 INDEX Index-3 gewöhnliche, 5-8 Größe, 5-7 Information, 5-7 löschen, 5-5 schliessen, 5-5 Typ, 5-7 umbenennen, 5-5 Dateibaustein einfügen, 5-4 freigeben, 5-4 löschen, 5-4 lesen, 5-4 logischer, 5-1 physikalischer, 5-2 sperren, 5-4 verändern, 5-4 Dateikennzahl, 5-10, 6-2 Dateiname, 5-1, 5-7, 5-8, 5-14 eigentlicher, 5-1 Dateiorganisation, 1-3, 5-2 index-sequentielle, 5-2 relative, 5-2 sequentielle, 5-2 Dateisperre, 5-6 Dateisystem, 5-1, 5-17, 6-2, 7-5 flaches, 5-1 hierarchisches, 5-1, 5-6 Dateisystemintegrität, 6-7 Dateitabelle, 5-10 Dateityp, 6-4 Dateiverwaltung, 1-3 Dateizugriff, 5-1, 5-2 Daten nicht initialisierte, 4-11 Datenaustausch, 1-1 Datenbank, 1-3 Datenbankmanagementsystem, 3-9 Datenblock, 5-4, 5-8, 5-9, , 6-4 verketteter, 5-2 Datendatei, 5-7, 5-8 Datensatz, 5-1 fester Länge, 5-2 variabler Länge, 5-2 Datensegment, 4-9 deadlock, siehe Verklemmung avoidance, siehe Verklemmung vermeiden prevention, siehe Verklemmung verhindern Delayed Write, 6-4 Determiniertes Verhalten, 2-3 deterministisch, 2-5 device driver, siehe Gerätetreiber device switch table, siehe Gerätetabelle Dienstleistung, 1-1, 1-2 Dijkstra, E. W., 3-2 directory, siehe Verzeichnis directory tree, siehe Verzeichnisbaum Disk Scheduling, 5-1 disk space allocation, siehe Plattenspeichervergabe Dispatcher, 2-2 DNS, siehe Domain Name Service Domain Name Service, 8-1 Drucker, 6-2 Durchsatz, 2-3 Echtzeitsystem, 1-3 Eigentümer, 5-7 Ein-/Ausgabe, 7-5 Ein-/Ausgabelast, 7-1 Eintrittspunkt, 6-4, 6-8 Einzelprogrammierung, 4-1 Emulation, 7-5, 8-2 Emulator, 8-6 Energiemanagement, 1-4 entry point, siehe Eintrittspunkt Ereignis, 2-2 Ereignisbeschreibungsnummer, 2-9 Ersetzungsstrategie, 4-1, 4-5, 4-13 globale, 4-7 lokale, 4-7 Erweiterte Maschine, 1-2 Erzeuger-Verbraucher-Problem, 3-3, 3-9 event, siehe Ereignis event descriptor, siehe Ereignisbeschreibungsnummer extent, siehe Block Fairness, 2-3 FAT, siehe file allocation table Fehler, 1-1 Fehlertoleranz, 1-3 Fetch Anticipatory, 4-4 On Demand, 4-4

100 Index-4 INDEX fetch strategy, siehe Ladestrategie FIFO, 4-6, 4-13 file, siehe Datei file allocation table, siehe Tabellenverkettung file descriptor, siehe Dateikennzahl file element ordering, siehe Dateiorganisation file locking, siehe Dateisperre file system, siehe Dateisystem file table, siehe Systemdateitabelle First Fit, 4-4 First In First Out, 4-6 Fragment, 4-5 Fragmentierung externe, 4-3, 4-4, 5-4 interne, 4-3, 5-4 Freispeicherliste, 4-4, 4-5, 6-4, 6-6 Friseur-Problem, 3-5 Gegenseitiger Ausschluss, 3-1, 3-6, 3-7 Gerät, 5-7, 6-2, 7-1, 7-2 blockorientiertes, 6-2, 6-4 zeichenorientiertes, 6-2 Gerätedatei, 6-8 Gerätenummer, 6-2 Gerätetabelle, 6-2, 6-4 Gerätetreiber, 6-1, 6-2, 6-4, 6-8, 7-5 Gerätetyp, 6-2 getblk, 6-6 Gleichzeitigkeit reale, 7-1 virtuelle, 7-1 Globale Variable, 3-1, 3-2 Gruppenkennung, 5-7 Hashliste, 6-4, 6-6 Hauptnummer, 6-2, 6-4 Hauptspeicher, 1-3, 3-10, 6-4, 6-7, Organisation, 4-1 realer, 4-3, 4-7 virtueller, 7-5, 8-1 Hauptspeicherverwaltung, 5-4 Hewlett-Packard, 7-5 Hibernation, 1-4 HP-UX, 7-5 http-server, 3-1 Hypervisor, 8-6 I-Knoten, , 5-14, 6-2, 6-4 I-Knotennummer, I-Knotentabelle, 5-9, 5-10 IBM/370, 7-4 indefinite postponement, siehe Verhungern Indexblock, 5-4 verketteter, 5-4, 5-8 Indirektion, 5-16 dreifache, 5-9 einfache, 5-8 zweifache, 5-9 inode, siehe I-Knoten inode number, siehe I-Knotennummer inode table, siehe I-Knotentabelle Interoperabilität, 1-3 Interprozesskommunikation, 1-3 Invalidierungsprotokoll, 7-2 Java, 8-1 Journaling File System, 5-1 Katalog, 5-1 Kern, 1-2 kernel mode, siehe Systemmodus Kohärenzprotokoll, 7-2, 7-5 Konkurrenz, 1-4 Konkurrierende Ziele, 2-3 Konsistenz, 7-2 Konsole, 6-7, 6-8 Konsolidierung, 8-2 Kritischer Abschnitt, 3-2, 3-5, 3-7, 7-1, 7-2, 7-4 Kundenbindung, 1-4 Ladestrategie, 4-1, 4-4 Last-Balancierung, 7-5 Least Frequently Used, 4-6 Least Recently Used, 4-6 Lese-/Schreibzeiger, 5-10 Leser-Schreiber-Problem, 3-4 Lesesperre, 5-6 LFU, siehe Least Frequently Used, 4-13 link hard, siehe Verknüpfung Lokalität, 4-7 Lost update, 3-1 LRU, 4-6, siehe Least Recently Used, 4-8, 4-13 major number, siehe Hauptnummer

101 INDEX Index-5 Marktakzeptanz, 1-4 Maschineninstruktion, 3-5 Master-Slave-Konfiguration, 7-2 Mikrokernel, 2-1 minor number, siehe Nebennummer Modified-Bit, 4-9 Monitor, 3-9 Mounting, 5-1 Multiprogrammierung, 4-1 Multiprozessorsystem, 3-5, 7-1 eng gekoppeltes, 7-1 Multitasking, 2-1, 7-1 cooperative, 2-4 preemptive, 2-4 mutual exclusion, siehe Gegenseitiger Ausschluss namei, 5-14 Nebennummer, 6-2, 6-4 Next Fit, 4-5 Not Used Recently, 4-8 NUR, siehe Not Used Recently Nutzdaten, 5-8, 5-15 Offlinealgorithmus, 2-5 Online-Transaktionsverarbeitung, 1-3 Onlinealgorithmus, 2-5 open(), 6-8 Operation atomare, 3-5 OPTIMAL, 4-6, 4-13 Over-Commitment, 8-2 overhead, siehe Verwaltungsaufwand P-Operation, 3-9 page fault frequency, siehe Seitenfehlerhäufigkeit Page Referenced-Bit, 4-7, 4-10 Page Stealer, 4-8, 4-10 Paging, 4-1, 4-3, 6-7 Parallelität, 5-6, 7-2 Paravirtualisierung, 8-7 Partitionierung, 8-2 dynamische, 8-2 feste, 4-2 variable, 4-2 Passeer, 3-3 path name, siehe Pfadname PCB, siehe Prozess-Kontrollblock Pfadname, 5-1, 5-6 absoluter, 5-6 relativer, 5-6 Philosophen-Problem, 3-5 placement strategy, siehe Positionierungsstrategie Platte, 6-1, 6-2, 6-7 Plattenspeichervergabe, 5-2, 5-15 Plattenverwaltung, 5-1 Plattenzugriff, 5-17, 6-1 Positionierungsstrategie, 4-1, 4-4 preemption, siehe Betriebsmittelentzug pregion table, siehe Segmenttabelle Priorität, 7-4 problem state, siehe Benutzermodus Programm, 2-1 Provisioning, siehe Versorgung Prozess, 1-3, 2-1 asynchroner, 3-1 Kontrollblock, 2-2 Zustand, 2-2 aktiv, 2-2 bereit, 2-2, 2-3 blockiert, 2-2, 2-3 Prozess-Affinität heuristische, 7-5 Prozessdateitabelle, 5-10 Prozessor, 1-3, 2-1, 7-1 eng gekoppelter, 3-5 Prozessor-Virtualisierung, 8-1 Prozesswechsel, 3-5 Puffer, 3-3, 6-4, 6-6, 6-7 Pufferkopf, 6-4 Pufferspeicher, 6-1, 6-2, 6-4, 6-6, 6-7 Quality of Service, 8-2 quantum, siehe Zeitscheibe race condition, siehe Wettlaufbedingung raw device, 6-8 read/write pointer, siehe Lese-/Schreibzeiger ready, siehe Prozesszustand bereit Rechnerausfall, 5-15 record, siehe Datensatz record locking, siehe Satzsperre reference count, siehe Referenzzähler Referenzzähler, 4-9, 5-9, 5-10 Register, 2-1 Reich, 7-5

102 Index-6 INDEX replacement strategy, siehe Ersetzungsstrategie Replikat, 7-2 Ressource, 1-1, 3-6, 8-2 lineare Anordnung, 3-7, 7-4 Ressourcen, 2-3 Auslastung, 2-3 Bedarf, 2-4 Ressourcenbedarf, 3-7 Rollback, 3-9 root, siehe Wurzel running, siehe Prozesszustand aktiv Satz geblockter, 5-2 ungeblockter, 5-2 Satzsperre, 5-6 Scheduler, 2-2, 2-3 Scheduling-Strategie, 2-3 Schnittstelle, 1-2 Schreibsperre, 5-6 Second Chance, 4-6 Segment, 4-3, 4-5 Segmentorganisation, 4-1, 4-2 Segmenttabelle, 2-8 Seite, 4-3, 4-6, 4-9, 6-1 ausgelagerte, 4-10 Seitenfehler, 4-2, 4-7 Seitenfehlerhäufigkeit, 4-7 Seitenfehlerrate, 4-7 Seitenorganisation, 4-1, 4-2 Seitenreferenzfolge, 4-13 Semaphor, 3-2, 7-2, 7-4, 7-5 allgemeiner, 3-3, 7-4 binärer, 3-3 zählender, 3-3 Serialisierung, 6-7 Service, 1-1 Sicherheit, 1-3 Snapshot, 8-6 Sohnprozess, 2-14 Speicherabbild, 2-1 Sperre obligatorische, 5-6 optionale, 5-6 Stacksegment, 4-9 Standardisierung, 1-4 state transition, siehe Prozesszustandsübergang Storage Compaction, 4-3 strategy, 6-4 Swap Device, 4-10 Swapping, 4-3, 6-7 sync(), 6-8 Synchronisation, 7-1, 7-2, 7-5 system call, 1-1, siehe Systemaufruf system state, siehe Systemmodus Systemaufruf, 1-1, 2-1, 6-1, 6-2, 6-4, 7-2 Systemdateitabelle, 5-9, 5-10 Systemmodus, 2-2, 7-2 Systemtabelle, 5-9, 5-17 Systemzusammenbruch, 6-7 Tabellenfragmentierung, 5-4 Tabellenverkettung, 5-4 Terminal, 6-1, 6-2 Test-and-Set, 3-5, 3-10 Thread, 1-3 Transaktion, 3-9 Transferrate, 6-7 Tripelliste, 5-5 TSS, 7-4 TSTS, siehe Test-and-Set UNIX-Systemaufruf alarm(), 2-13 brk(), 2-13 chdir(), 2-13 chmod(), 5-11 close(), 5-10, 6-2 creat(), 5-10, 5-12 exec(), 2-1, 2-13 exit(), 2-11, 2-13 fork(), 2-1, 2-9, 2-13, 2-14, 4-9 geteuid(), 2-13 getpid(), 2-13 getppid(), 2-13 getuid(), 2-13 kill(), 2-13 link(), 5-11 lseek(), 5-11, 5-12 nice(), 2-13 open(), 5-10, 5-12, 5-17, 6-8 read(), 5-10, 5-13, 6-4 signal(), 2-13 sleep(), 2-13 stat(), 5-11 unlink(), 5-11

103 INDEX Index-7 wait(), 2-13 write(), 5-10, 5-13, 6-4, 6-7 Unterbrechung, 2-2, 3-5, 6-1, 7-1 user file descriptor table, siehe Prozessdateitabelle user mode, siehe Benutzermodus V-Operation, 3-10 Valid-Bit, 4-10 Vaterprozess, 2-14 Verarbeitung getrennte, 7-2 symmetrische, 7-2 Verhungern, 3-7 Verklemmung, 3-6, 3-9, 3-10, 7-4 auflösen, 3-7 verhindern, 3-7 vermeiden, 3-7 Verknüpfung, 5-7 Verlaat, 3-3 Verschlüsselung, 5-6 Versorgung, 8-2 Verteiltes System, 1-3 Verwaltungsaufwand, 2-3, 7-4 Verwaltungsdaten, 5-15 Verzeichnis, 5-1, , 5-17, 6-4 aktuelles, 5-6 darüberliegendes, 5-6 Verzeichnisbaum, 5-1 Verzeichnishierarchie, 5-7 Virtualisierung, 1-3, 8-1 Virtualization Overhead, 8-2 Virtuelle Speicherorganisation, 4-2 VMWare ESX, 8-4 Vogel-Strauß-Taktik, 4-4 Zeitscheibe Ablauf, 2-2 Zugriff direkter, 5-15 exklusiver, 3-1, 7-2 lesender, 5-7 schreibender, 5-7 sequentieller, 5-15 Zugriffsart, 5-10 Zugriffsberechtigung, 4-3, 5-5, 5-7 Zugriffskontrolle, 5-5 Zugriffsliste, 5-5, 5-6, 5-15 Zugriffsmatrix, 5-5 Zuse, 4-1 Zustand sicherer, 3-7 unsicherer, 3-8 Zuteilungsverfahren, 2-3 Wartegraph, 3-6, 3-7 zyklischer, 3-7 Warteschlange, 2-3, 7-4 Wartezeit, 2-5 Wettlaufbedingung, 3-1 working set, siehe Arbeitsmenge Worst Fit, 4-5 write-through cache, 6-8 Wurzel, 5-6 Xen, 8-4 Z4, 4-1

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper 1. Der Prozess beginnt im Zustand Erzeugt, nachdem sein Vaterprozess den Systemaufruf fork() (s.u.) abgesetzt hat. In diesem Zustand wird der Prozess-Kontext initialisiert. 2. Ist diese Aufbauphase abgeschlossen,

Mehr

Dämon-Prozesse ( deamon )

Dämon-Prozesse ( deamon ) Prozesse unter UNIX - Prozessarten Interaktive Prozesse Shell-Prozesse arbeiten mit stdin ( Tastatur ) und stdout ( Bildschirm ) Dämon-Prozesse ( deamon ) arbeiten im Hintergrund ohne stdin und stdout

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Systeme 1. Kapitel 5. Scheduling

Systeme 1. Kapitel 5. Scheduling Systeme 1 Kapitel 5 Scheduling Scheduling Verteilung und Zuweisung von begrenzten Ressourcen an konkurrierende Prozesse Beispiel: -> Zeitablaufsteuerung Zwei Prozesse zur gleichen Zeit rechenbereit auf

Mehr

Architektur Verteilter Systeme Teil 2: Prozesse und Threads

Architektur Verteilter Systeme Teil 2: Prozesse und Threads Architektur Verteilter Systeme Teil 2: Prozesse und Threads 21.10.15 1 Übersicht Prozess Thread Scheduler Time Sharing 2 Begriff Prozess und Thread I Prozess = Sequentiell ablaufendes Programm Thread =

Mehr

Domänenmodell: Fadenkommunikation und -synchronisation

Domänenmodell: Fadenkommunikation und -synchronisation Domänenmodell: Fadenkommunikation und -synchronisation Alexander Humphreys, Reinhard Rösch, Fabian Scheler 15. Mai 2003 Inhaltsverzeichnis 1 Domänendefinition 1 2 Domänenlexikon 1 3 Konzeptmodelle 4 4

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

Technische Informatik II

Technische Informatik II Institut für Technische Informatik und Kommunikationsnetze Technische Informatik II Übung 1: Prozesse und Threads Aufgabe 1: Prozesse und Threads a) Wie verhält sich eine Applikation die aus mehreren Prozessen

Mehr

Es kann maximal ein Prozess die Umladestelle benutzen.

Es kann maximal ein Prozess die Umladestelle benutzen. SoSe 0 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung (Musterlösung) 0-06-0 bis 0-06-06 Aufgabe : Erzeuger/Verbraucher-Pattern Ein Getränkemarkt hat

Mehr

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! VO 182.711 Prüfung Betriebssysteme 8. November 2013 KNr. MNr. Zuname, Vorname Ges.)(100) 1.)(35) 2.)(20) 3.)(45) Zusatzblätter: Bitte verwenden Sie nur dokumentenechtes Schreibmaterial! 1 Synchronisation

Mehr

Round-Robin Scheduling (RR)

Round-Robin Scheduling (RR) RR - Scheduling Reigen-Modell: einfachster, ältester, fairster, am weitesten verbreiteter Algorithmus Entworfen für interaktive Systeme (preemptives Scheduling) Idee: Den Prozessen in der Bereitschaftsschlange

Mehr

Übungen zum Fach Betriebssysteme Kapitel 3

Übungen zum Fach Betriebssysteme Kapitel 3 Übungen zum Fach Betriebssysteme Kapitel 3 Prof. Dr. Kern & Prof. Dr. Wienkop Prozessverwaltung 1 Prozeßauslagerung Ein Betriebssystem, das die Zustände "rechnend", "bereit" und "wartend" sowie den künstlichen

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

2A Basistechniken: Weitere Aufgaben

2A Basistechniken: Weitere Aufgaben 2A Basistechniken: Weitere Aufgaben 2A.3 Programmierung unter UNIX/Linux 1. Gegeben sind einige Ausschnitte von C-Programmen, die unter UNIX/Linux ausgeführt werden sollen. Beantworten Sie die zugehörigen

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Betriebssystembau (BSB)

Betriebssystembau (BSB) Betriebssystembau (BSB) 6. Übung http://ess.cs.tu-.de/de/teaching/ws2013/bsb/ Olaf Spinczyk [email protected] http://ess.cs.tu-.de/~os AG Eingebettete System Informatik 12, TU Dortmund Agenda Vorstellung

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

5 Speicherverwaltung. bs-5.1 1

5 Speicherverwaltung. bs-5.1 1 5 Speicherverwaltung bs-5.1 1 Pufferspeicher (cache) realer Speicher Primärspeicher/Arbeitsspeicher (memory) Sekundärspeicher/Hintergrundspeicher (backing store) (Tertiärspeicher/Archivspeicher) versus

Mehr

Erklärung zum Internet-Bestellschein

Erklärung zum Internet-Bestellschein Erklärung zum Internet-Bestellschein Herzlich Willkommen bei Modellbahnbau Reinhardt. Auf den nächsten Seiten wird Ihnen mit hilfreichen Bildern erklärt, wie Sie den Internet-Bestellschein ausfüllen und

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem

20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem 20. Algorithmus der Woche Online-Algorithmen: Was ist es wert, die Zukunft zu kennen? Das Ski-Problem Autor Susanne Albers, Universität Freiburg Swen Schmelzer, Universität Freiburg In diesem Jahr möchte

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur Hochschule Mannheim Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun Übungsklausur Aufgabe 1: Definieren Sie den Begriff der Systemsoftware. Nennen Sie die Aufgaben und Komponenten

Mehr

Manager. von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen. Spielanleitung

Manager. von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen. Spielanleitung Manager von Peter Pfeifer, Waltraud Pfeifer, Burkhard Münchhagen Spielanleitung Manager Ein rasantes Wirtschaftsspiel für 3 bis 6 Spieler. Das Glück Ihrer Firma liegt in Ihren Händen! Bestehen Sie gegen

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Benutzerhandbuch - Elterliche Kontrolle

Benutzerhandbuch - Elterliche Kontrolle Benutzerhandbuch - Elterliche Kontrolle Verzeichnis Was ist die mymaga-startseite? 1. erste Anmeldung - Administrator 2. schnittstelle 2.1 Administrator - Hautbildschirm 2.2 Administrator - rechtes Menü

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets Verwalten und erstellen Sie Ihre eigenen Tickets NetStream GmbH 2014 Was ist NetStream Helpdesk-Online? NetStream Helpdesk-Online ist ein professionelles Support-Tool, mit dem Sie alle Ihre Support-Anfragen

Mehr

Backup der Progress Datenbank

Backup der Progress Datenbank Backup der Progress Datenbank Zeitplandienst (AT): Beachten Sie bitte: Die folgenden Aktionen können nur direkt am Server, vollzogen werden. Mit Progress 9.1 gibt es keine Möglichkeit über die Clients,

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Je nach BüroWARE Version kann sich das Menü des Datenbankassistenten von den Bildschirmausdrucken in unserem Leitfaden unterscheiden. Der

Mehr

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Der große VideoClip- Wettbewerb von Media Markt.

Der große VideoClip- Wettbewerb von Media Markt. Der große VideoClip- Wettbewerb von Media Markt. Zeig was du drauf hast! Am 1. Juli startet eine Aktion, wie sie die Schweiz noch nicht gesehen hat. Unter dem Motto Zeig was Du drauf hast! suchen wir den

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie kann ich E-Mails schreiben? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory E-Mails schreiben können. In myfactory können Sie jederzeit schnell und einfach E-Mails verfassen egal

Mehr

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant? Übersicht Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Einleitung 1 2 der nebenläufigen Programmierung WS 2011/12 Stand der Folien: 18. Oktober 2011 1 TIDS

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

Mehr

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client

Mehr

Kompatibilitätsmodus und UAC

Kompatibilitätsmodus und UAC STEITZ IT-Solutions Kompatibilitätsmodus und UAC Der nachfolgenden Artikel beschreibt, wie Sie die UAC (User Account Control = Benutzerkontensteuerung) für ausgewählte Anwendungen deaktivieren. Mit der

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Allgemeine Informationen zu dieser Anleitung

Allgemeine Informationen zu dieser Anleitung Allgemeine Informationen zu dieser Anleitung Nachfolgend geben wir Ihnen eine kurze Anleitung zum Durchführen einer auf Zähllisten basierenden Inventur im AnSyS.ERP. Bitte beachten Sie hierbei: In dem

Mehr

Echtzeitscheduling (1)

Echtzeitscheduling (1) Echtzeitscheduling (1) Scheduling in Betriebssystemen Ressourcenausteilung (CPU, Speicher, Kommunikation) Faire Ressourcenvergabe, insbesondere CPU Hohe Interaktivität / kurze Reaktionszeit für interaktive

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Herzlich Willkommen bei der BITel!

Herzlich Willkommen bei der BITel! Herzlich Willkommen bei der BITel! Damit Sie auch unterwegs mit dem iphone Ihre E-Mails abrufen können, zeigen wir Ihnen Schritt für Schritt wie Sie Ihr BITel-Postfach im iphone einrichten. Los geht's:

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: [email protected] Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

Updatehinweise für die Version forma 5.5.5

Updatehinweise für die Version forma 5.5.5 Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

MEIN ONLINEBANKING BEI DER EHNINGER BANK EG ERSTE SCHRITTE: PIN/TAN MIT MOBILE TAN

MEIN ONLINEBANKING BEI DER EHNINGER BANK EG ERSTE SCHRITTE: PIN/TAN MIT MOBILE TAN MEIN ONLINEBANKING BEI DER EHNINGER BANK EG ERSTE SCHRITTE: PIN/TAN MIT MOBILE TAN 1 Die Voraussetzungen Um unser Onlinebanking mit mobiletan durchführen zu können, benötigen Sie generell: einen Rechner

Mehr

Grundfunktionen und Bedienung

Grundfunktionen und Bedienung Kapitel 13 Mit der App Health ist eine neue Anwendung in ios 8 enthalten, die von vorangegangenen Betriebssystemen bislang nicht geboten wurde. Health fungiert dabei als Aggregator für die Daten von Fitness-

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003 Nicht kopieren Der neue Report von: Stefan Ploberger 1. Ausgabe 2003 Herausgeber: Verlag Ploberger & Partner 2003 by: Stefan Ploberger Verlag Ploberger & Partner, Postfach 11 46, D-82065 Baierbrunn Tel.

Mehr

Dokumentation Schedulingverfahren

Dokumentation Schedulingverfahren Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................

Mehr

Anleitung für die Version 2.4.1 von online 1. Schritt: Rufen Sie die Website auf...

Anleitung für die Version 2.4.1 von online 1. Schritt: Rufen Sie die Website auf... 1. Schritt: Rufen Sie die Website auf... www.profax.ch oder http://plc.profax.ch (www.profax.de - www.profax.at) auf und wählen Sie Registration für Klassen und Schulen. Wählen Sie bitte die Variante aus,

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x

Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Leitfaden zur Durchführung eines Jahreswechsels in BüroWARE 5.x Zentrale: T: 07121/69509-0 F: 07121/69509-50 Technik: T: 07121/69509-30 ecommerce: T: 07121/69509-20 Software: T: 07121/69509-10 E-Mail Web

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003

Task A Zündung. Task B Einspritzung. Task C Erfassung Pedalwert. J. Schäuffele, Th. Zurawka: Automotive Software Engineering, Vieweg, 2003 Task! evt. parallel zu bearbeitende Ausführungseinheit! Beispiel: Task A Zündung Task B Einspritzung Task C Erfassung Pedalwert Zeit t J. Schäuffele, Th. Zurawka:, Vieweg, 2003 Echtzeitbetriebssysteme

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

iloq Privus Bedienungsanleitung Schließanlagen Programmierung Version 1 - Copyright 2013

iloq Privus Bedienungsanleitung Schließanlagen Programmierung Version 1 - Copyright 2013 iloq Privus Schließanlagen Programmierung Version 1 - Copyright 2013 Kurth Electronic GmbH Kommunikations- & Sicherheitssysteme / Im Scherbental 5 / 72800 Eningen u. A. Tel: +49-7121-9755-0 / Fax: +49-7121-9755-56

Mehr

3.14 Die Programmieroberfläche Programmierung

3.14 Die Programmieroberfläche Programmierung 121 3.14 Die Programmieroberfläche Programmierung Besonderheiten Die Oberflächen der einzelnen Quellen (3S, KW-Software, Siemens-TIA-Portal, logi.cad 3, PAS4000) sind in sich unterschiedlich. Aber auch

Mehr

1. Allgemeines zum tevitel.wq-monitor Seite 3. 2. WQ-Monitor konfigurieren Seite 4

1. Allgemeines zum tevitel.wq-monitor Seite 3. 2. WQ-Monitor konfigurieren Seite 4 tevitel.wq-monitor Inhaltsverzeichnis 1. Allgemeines zum tevitel.wq-monitor Seite 3 2. WQ-Monitor konfigurieren Seite 4 2.1 Einstellungen Message-Server Seite 4 3.2 Einstellungen Warteschlangen Seite 5

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert.

Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert. Der Gutachtenstil: Charakteristikum des Gutachtenstils: Es wird mit einer Frage begonnen, sodann werden die Voraussetzungen Schritt für Schritt aufgezeigt und erörtert. Das Ergebnis steht am Schluß. Charakteristikum

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 20.11.2013 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Wdhlg.: Attributinformationen in

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Projektmanagement in der Spieleentwicklung

Projektmanagement in der Spieleentwicklung Projektmanagement in der Spieleentwicklung Inhalt 1. Warum brauche ich ein Projekt-Management? 2. Die Charaktere des Projektmanagement - Mastermind - Producer - Projektleiter 3. Schnittstellen definieren

Mehr

Zentrale Installation

Zentrale Installation Einführung STEP 7 wird durch ein Setup-Programm installiert. Eingabeaufforderungen auf dem Bildschirm führen Sie Schritt für Schritt durch den gesamten Installationsvorgang. Mit der Record-Funktion steht

Mehr

Starten der Software unter Windows 7

Starten der Software unter Windows 7 Starten der Software unter Windows 7 Im Folgenden wird Ihnen Schritt für Schritt erklärt, wie Sie Ihr persönliches CONTOUR NEXT USB auf dem Betriebssystem Ihrer Wahl starten und benutzen. Schritt 1. Stecken

Mehr

Lösungsskizzen zur Abschlussklausur Betriebssysteme

Lösungsskizzen zur Abschlussklausur Betriebssysteme Lösungsskizzen zur Abschlussklausur Betriebssysteme 24. Januar 2013 Name: Vorname: Matrikelnummer: Studiengang: Hinweise: Tragen Sie zuerst auf allen Blättern (einschlieÿlich des Deckblattes) Ihren Namen,

Mehr

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E S TAND N OVEMBE R 2012 HANDBUCH T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E Herausgeber Referat Informationstechnologie in der Landeskirche und im Oberkirchenrat Evangelischer Oberkirchenrat

Mehr

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS

Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS Aufruf der Weboberflache des HPM- Warmepumpenmanagers aus dem Internet TIPPS Oktober 2015 Tipp der Woche vom 28. Oktober 2015 Aufruf der Weboberfläche des HPM-Wärmepumpenmanagers aus dem Internet Der Panasonic

Mehr

Lieber SPAMRobin -Kunde!

Lieber SPAMRobin -Kunde! Lieber SPAMRobin -Kunde! Wir freuen uns, dass Sie sich für SPAMRobin entschieden haben. Mit diesem Leitfaden möchten wir Ihnen die Kontoeinrichtung erleichtern und die Funktionen näher bringen. Bitte führen

Mehr

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013 Visio 2013 Linda York 1. Ausgabe, Oktober 2013 Grundlagen V2013 2 Visio 2013 - Grundlagen 2 Einfache Zeichnungen erstellen In diesem Kapitel erfahren Sie wie Sie Shapes einfügen, kopieren und löschen was

Mehr

NEWSLETTER // AUGUST 2015

NEWSLETTER // AUGUST 2015 NEWSLETTER // AUGUST 2015 Kürzlich ist eine neue Version von SoftwareCentral erschienen, die neue Version enthält eine Reihe von Verbesserungen und neuen Funktionen die das Arbeiten mit SCCM noch einfacher

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1

Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1 Empfehlungen zur Nutzung der CD zum Buch: Klee & Wiemann: Beweglichkeit und Dehnfähigkeit. Schorndorf: Hofmann, 2005. 1 Starten der CD Nach dem Einlegen der CD in Ihr CD-Laufwerk müsste die CD von selbst

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

TIMI: Technische Informatik für Medieninformatiker

TIMI: Technische Informatik für Medieninformatiker TIMI: Technische Informatik für Medieninformatiker Bachelor-Studiengang Digitale Medien Medieninformatik SS 2004 Niels Pollem Arbeitsgruppe Rechnernetze (Prof. Dr.-Ing. Ute Bormann) Scheduling:

Mehr