Blätter zur Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Blätter zur Vorlesung"

Transkript

1 Blätter zur Vorlesung Betriebssysteme Sommersemester 23 Dr. Michael Schöttner Fakultät für Informatik, Verteilte Systeme Universität Ulm

2 1. Vorschau 1.1 Einordnung & Organisation Grundlage für Vorlesungen: - Systemprogrammierung, - Verteilte Betriebssysteme, - und zur Allgemeinbildung... Praktika & Diplomarbeiten VS: - Verteilte Betriebssysteme, - QoS und virtuelle Präsenz,... Vorlesung 3V+1Ü, ab : - Montag, 14-16h, H21 (wöchentlich), - Freitag, 1-12h, H21 (alle 2 Wochen). Übung im Wechsel mit der Vorlesung: - Freitag, 1-12, H21 (alle 2 Wochen). Übungsbetreuung: M. Schöttner. Sprechstunde: nach Vereinbarung, Zimmer 329, o-27 Informatik. Anrechnung der kombinierten Klausur- und Übungsnote im Rahmen der Diplomprüfung möglich (>5%). Vorlesungsunterlagen: größtenteils von Herrn Prof. Dr. Schulthess übernommen. 2

3 1.2 Definition " An operating system is the software that breathes life into a computer." (Unbekannter amerikanischer Autor) " Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften der Rechenanlage die Grundlage der möglichen Betriebsarten des digitalen Rechen systems bilden und insbesondere die Abwicklung von Programmen steuern und überwachen" (DIN 6629, (1978)) ( Interrupts, Multitasking, Operating...) " Das Betriebssystem macht den Anwendungssystemen die Betriebsmittel zugänglich; insbesondere Verarbeitungsleistung, Speicher und Kommunikationswege." (Peter Schulthess) 3

4 Schema aus "Road Map to A/UX": Programme Befehlsinterpreter System-Call interface Kern Treiber Treiber Treiber Treiber Hardware 4

5 1.3 Inhalt 1. Vorschau Einordnung & Organisation Definition Inhalt Literatur Einführung in Betriebssysteme Geschichte Arten von Betriebssystemen Aufgaben eines Betriebssystems Beispiele von Betriebssystemen Betriebssystemorganisation Monolithisch Geschichtet Mikrokern Virtuelle Maschinen Client / Server Hauptspeicher Einführung Partitionen im Hauptspeicher Verwaltung & Vergabe Overlay & Swapping Virtueller Speicher Beispiele: Linux & Windows NT Automatische Freispeichersammlung Plattenspeicher Aufbau einer Festplatte

6 5.2 Festplatten-Scheduling Speicherverwaltung Dateisysteme Redundanz & Spiegelung Nebenläufigkeit Prozesse und Threads Koroutinen & Fibers Kontextwechsel Ablaufplanung Synchronisierung Lese/Schreibkonflikt Serialisierung mit Signal/Wait: Kritische Abschnitte Wechselseitiger Ausschluss Klassische Problemstellungen Verklemmungen Interprozesskommunikation Ein-/Ausgabe Peripherie Unterbrechungen E/A-Software Namensdienste Namen & Adressen Beispiel: JavaOS Beispiel: Windows NT Konfigurationsverwaltung Internet Domain Name Service Bibliotheken

7 1.1 Programmierschnittstellen Prozedurbasierte Bibliotheken Objektorientierte Bibliotheken Systemaufruf am Beispiel von NT Benutzerschnittstellen Überblick Befehlsinterpreter X Window Microsoft Windows Sicherheitsaspekte Einleitung Zugangskontrolle Zugriffskontrolle Supervisor Betriebsmodus Isolation der Adressräume Angriffsformen

8 1.4 Literatur - Stallings William: Betriebssysteme, Prentice Hall, Pearson Studium, 4. Auflage, Tanenbaum Andrew: Moderne Betriebssysteme, München, Prentice Hall, Silberschatz, Galvin: Operating System Concepts, Addison-Wesley, Nehmer Jürgen und Sturm Peter: Systemsoftware. Grundlagen moderner Betriebssysteme, dpunkt-verlag, Heidelberg, Traub, Stefan: Verteilte PC-Betriebssysteme, Teubner Verlag Solomon, David: Inside Windows NT, Microsoft Press, 2 nd Edition, Custer, Helen: Inside the Windows NT file system, Microsoft Press, Windows Interna: - Herold, Helmut: Linux-Unix-Systemprogrammierung, 2. Aufl., Addison-Wesley, Beck, Michael: Linux-Kernel-Programmierung: Algorithmen und Strukturen der Version 2.2, 5. Auflage, Addison-Wesley,

9 2. Einführung in Betriebssysteme 2.1 Geschichte Erste Generation: Röhren (>1. Stk.) und Klinkenfelder. K. Zuse (irb.cs.tu-berlin.de/~zuse/konrad_zuse). Fest verdrahtete Programme. Aufwendiger Betrieb und Wartung. Für numerische Berechnungen (Tab. für Log). Zweite Generation: Erhöhte Zuverlässigkeit durch Transistoren. Aber sehr teuer (mehrere Millionen EUR). Programme auf Lochkarten (Ass. & Fortran). Stapelbetrieb (Batchsystem): - Manuell: Operateur lädt neuen Job, wenn der Alte abgearbeitet wurde ineffizient. - Automatisch: Kleiner, billiger Rechner liest neue Jobs und speichert diese auf Band. Band dient als Eingabe für den Mainframe. - Sequentielle Verarbeitung der Programme. - Keine Interaktion zw. Programm und Benutzer. 9

10 Dritte Generation: Einführung von integrierten Schaltungen. IBM System/36: - Serie von kompatiblen Rechnern. - Für wissenschaftl. und kommerz. Bereich. - sehr komplexes BS (mehrere Mio. Zeilen Assembler-Code; >1 Entwickler). Fortschritte der dritten Generation: - Spooling (Simultaneous Peripheral Operation On Line): o Aufträge von Lochkarten einlesen und auf Platte zwischenspeichern. o Heute: Ansteuerung von Drucker. - Mehrprogrammbetrieb (Multiprogramming): o Mehrere Jobs im Hauptspeicher. o E/A-Wartezeiten ausnutzen. o Verteilen der CPU. - Time Sharing (Zeitscheibenkonzept): o Erstes System von MIT (1962). o Dialogbetrieb: jeder Benutzer ist über ein Terminal mit dem System verbunden. o Quasi-parallele Ausführung von Prgs. Multitasking o Programmumschaltung (Zeitscheiben). 1

11 Einführung von Unix: - Vorläufer: MULTICS, Ken Thompson schrieb abgespeckte Version UNICS für Einbenutzersysteme. - Dennis Ritchie entwickelte die Sprache C und schrieb UNICS zusammen mit Thompson neu in C: UNIX (8.2 Zeilen C und 9 Zeilen Ass.). - Wurde nachfolgend vielfach portiert. Vierte Generation: Hardware: - large scale integrated circuits (LSI). - Bauelemente mit 1en von Transistoren. - Entwicklung von Mikrocomputern und PCs. Software: - BS überwinden Rechnergrenzen. - Graphische Benutzschnittstellen. - Parallelität durch Threads. Betriebssysteme: - CP/M (8-Bit) für Intel MS-DOS (16-Bit) für Intel 8x86. - Microsoft Windows (16/32-Bit) für 8x86. - Unix (32-Bit) für Workstations (X-Window). - MacOS: Einführung einer graph. Oberfläche. Netzwerkbetriebssysteme und verteilte BS. 11

12 Moderne Entwicklungen Cluster Systeme: - Hochverfügbarkeit durch Redundanz. - Bündelung von Rechenleistung. Multimedia: - Unterstützung von Audio- und Videoströmen. - Dienstegarantien (Quality of Service). Eingebettete Systeme: - Maßgenscheiderte kleine Betriebssysteme. - Typischerweise mit Echtzeitanfoderungen. Interoperabilität: Unterstützung heterogener Umgebungen. 12

13 2.2 Arten von Betriebssystemen Mainframe Betriebssysteme: - Früher in großen Rechenzentren, heute auch Web-/E-commerce-Server, - Große Ein- und Ausgabebandbreiten möglichst viele Prozesse effizient ausführen - Unterschiedliche Betriebsarten: o Stapelbetrieb, z.b. Schadensmeldungen in einer Versicherung o Transaktionsbetrieb, z.b. Banküberweisungen, Flugbuchungen, o Timesharingbetrieb bei zentralen Diensten - Beispielsystem OS/39. Server Betriebssysteme: - Eine Ebene unterhalb der Mainframes. - Bedienen viele Nutzer über ein Netzwerk. - Verteilen Hardware- und Software-Ressourcen. - Für Datei-, Mail-, Web-, Druckservern, - Beispiele: UNIX, Linux, Windows 2/XP. Netzwerk-Betriebssysteme: - Verwaltet gemeinsame Ressourcen im Netz. - Benutzer kennen die Existenz des Netzwerks von Rechnern. - Benutzer können sich an fremden Maschinen anmelden, um Dienste in Anspruch zu nehmen. - Beispiel: Novell Netware. 13

14 Verteilte Betriebssysteme: - Rechnerverbund bleibt Benutzer verborgen. - Wo die Programme ausgeführt werden und wo die benötigten Daten liegen wird durch das BS bestimmt und ist dem Benutzer nicht bekannt. - Benutzer hat den Eindruck einer einheitlichen Computerressource. - Beispiele: Amoeba, Kerrighed, Plurix. PC- Betriebssysteme: - Beschränkt auf einen Benutzer. - Benutzerfreundliche Oberfläche. - Einfache Installation und Wartung. - Unterstützung vieler Peripheriegeräte. Echtzeit-Betriebssysteme: - Verarbeitung von Daten innerhalb bestimmter, üblicherweise enger Zeitgrenzen. - Je nach Toleranz bzgl. Überschreitung von Sollzeitpunkten wird zwischen harter und weicher Echtzeit unterschieden. - Für Überwachungs-, Fertigungsanlagen, - Beispielsysteme: VxWorks, QNX,... Betriebssysteme für eingebettete Systeme: - Besitzen oft Echtzeiteigenschaften. - Optimiert bzgl. Programmgröße, verfügbarer Arbeitsspeicher und Stromverbrauch. - Typischerweise für Mikrocontroller oder PDAs. - Beispiele: OSEK, PalmOS, Windows CE,... 14

15 Betriebssysteme für Chipkarten: - Harte Bed. an Speicher und Rechenleistung. - Oft nur einzelne Funktionen, wie elektronisches Bezahlen, realisiert. - SmartCards gewinnen zusehens an Bedeutung. - Java-orientierte SmartCards mit JVM im ROM- Speicher vorhanden. 2.3 Aufgaben eines Betriebssystems Betriebsmittelzuteilung Betriebsmittel werden vom System zugeteilt: - um Doppelbelegungen zu vermeiden, - zwecks Rückgabe beim Programabsturz, Zuteilung jeweils an ein "Objekt", z.b. an: - Programm, Prozess, Thread, Instanz, User... Hauptspeicher wird benötigt für: - Prozeduraktivierungen auf dem Keller, - Puffer für Dateien und Datenpakete, - Codesegmente & Kontrollblöcke, - Heap-Objekte. Geräte / Devices: - entweder nur exklusiv nutzbar (exklusiv), - oder gleichzeitig nutzbar (sharable), Plattenspeicher wird als Dateien vergeben. 15

16 Bei Bedarf wird der Prozessor zwischen verschiedenen Threads umgeschaltet. Bildschirmoberfläche ist kostbar. Programme erhalten Fenster auf dem Bildschirm Bedienerschnittstelle: Anzeigen von Fehlersituationen. Dialogsteuerung für: - Navigation im (Datei-)System: - Anwenderprogramme. - Systembedienung. 16

17 2.3.3 Abstraktion von der Hardware Für den Anwendungsprogrammierer: Ein Subset von Laufzeitroutinen ist allen Unix Implementierungen gemeinsam: - creat, open, close, read, write, - malloc, fork, wait, waitpid, - socket, bind, printf, scanf... Viele Karten unterstützen Grafikstandard: - DirectX, OpenGL, QuickDraw. Java Programme laufen auf beinahe jedem Rechner, wenn dort eine Virtuelle Java Maschine (JVM) vorhanden ist. Für den Systemprogrammierer: Wenn eine "Hardware Abstraktionsschicht" eingezogen wird, ist es leichter, ein Betriebssystem auf eine neue Rechnerplattform zu bringen. Erhalten bleiben etwa: - Formate im Dateisystem, - Protokolle auf dem Netz, - Algorithmen und Strategien... 17

18 2.3.4 Verzeichnisdienste "Machines use adresses, people prefer names" Übersetzung zwischen Namen und Adressen: Adressen für: - Hauptspeicher, Ethernet, Internet, Disksektoren, E/A-Ports, SCSI-Devices... Suchpfade für Klassen & Bibliotheksmodule. Navigation im Namensraum. Dateiverzeichnisse: - Dateinamen auf Diskadressen abbilden, - Aliases, Shortcuts und Decknamen, - geschachtelte Unterverzeichnisse. Registry in Windows: - hierarchische Datenbank, - Schlüssel und Werte. Auffinden von Namen im Netz: - Namen für Benutzer & Dienste, - Maschinennamen. Namen für Objekte: - Fenster und Dialogelemente, - Ereignisobjekte, - Com-Objekte... 18

19 2.3.5 Fehlerbehandlung & Zugriffsschutz "Post Mortem" müssen die Betriebsmittel eines Programmes wieder freigegeben werden: - Hauptspeicher, - offene Dateien, - Peripheriegeräte, - Bildschirmfenster, - Warteschlangenpositionen... Der Benutzer wünscht eine verständliche Fehlermeldung: - kein Hex-Dump, - kein blauer Bildschirm, - keine allgemeine Schutzverletzung. Schutz: - vor unabsichtlicher Beschädigung des System, - vor böswilligen Einbruchsversuchen, - vor Monopolisierung des Systems, - vor Fehlern im Betriebssystem, - vor Hardwaredefekten. 19

20 2.3.6 Konfigurierung & Startup Konfigurierungsbedarf für: - Benutzerrechte, - Festplatteneinteilung, - Netzwerkportokolle, - Bildschirmauflösung, - Bios-Einstellungen... Automatische Erkennung von Hardware. - Plug & Play vs. Plug & Work, - für Geräte am PCI Bus, - für ISA Geräte? Initialisierung: - der Hardwarekomponenten, - des Betriebssystemkernes, - der Serverdienste. Ausschalten des Systems: - Dokumente sichern lassen, - Dateipuffer auf Disk schreiben, - Druckerwarteschlange schliessen, - Abmelden am Netz, - Services beenden, - Power down! Schlafmodus einleiten. 2

21 2.4 Beispiele von Betriebssystemen VMS: Für Mainframe-Rechner von Digital Equipment. Virtueller Speicher. Hochentwickeltes Dateisystem. Vernetzung über DecNet. Flexible Anbindung von Unix & Macintosh Systemen. MVS: Für IBM Mainframes. Ungeeignet für Arbeitsplatzrechner. Betreung nur durch den Spezialisten. Variantenreiche Jobkontrollsprache. Vernetzung über SNA. Windows 98 & Windows NT: Bill Gates, Microsoft Corp. Betriebssystem für IBM-PCs und dgl. Rechner der 8xxx-Familie. C Schnittstelle zum Betriebssystem. Mehrprogrammbetrieb. 32 Bit Adressen. Vernetzung TCP/IP, Netbeui & Novell Net. Windows 98 für Klientenstationen. Windows NT/2/XP für Workstations und kleinere Server. 21

22 Unix: Portables Betriebssystem für Workstations. Auch für Mainframe-Rechner. Ursprünglich für PDP11. Geschrieben in der Sprache C. Allgemeines Prozesskonzept. Viele Dienstprogramme, . Standardisierungsgremien. X-Window als graphische Bedieneroberfläche. Vernetzung über NFS/TCP/IP... Linux: Public Domain Unix (GPL). OS/2 (IBM): gedacht als Nachfolger von MS-DOS. für Rechner der 8xx-Familie. Mehrprogrammbetrieb. 32 Bit Adressen. LAN-Manager. Presentation Manager. Macintosh OS: Xerox-Star Lisa Macintosh. halbwegs objektorientiert. für Arbeitsplatzrechner mit PowerPC CPUs. für Grafik & DTP. Erste marktgängige Bedieneroberfläche mit Desktop Symbolik. OS & Toolbox im ROM. Vernetzung über AppleTalk & TCP/IP. System X basiert auf Mach Kern. 22

23 Oberon System: Wirth & Gutknecht, ETH Zürich. Kleines Betriebssystem für PCs. Objektorientiert mit Oberon als Sprache. Automatische Freispeichersammlung. Kooperatives Single Tasking. Plurix: Experimentelles verteiltes BS aus Ulm. PC-Cluster mit DSM-Speicher. Transaktionen statt Prozesse. Programmierung in Java. Schnellstart-Option. Code < 2 KByte. 23

24 3. Betriebssystemorganisation 3.1 Monolithisch Anwendungen Dispatcher OS - Routinen Hardware Sammlung von Routinen, ohne Hierarchie, Kapselung und Schichtung. Folgen von Änderungen und Erweiterungen sind schwer abzuschätzen. Beispiel: MS-DOS. 24

25 3.2 Geschichtet Anwendungen Dispatcher OS - Routinen Treiber Hardware Verschiedene Abstraktionsebenen respektive Schnittstellen: - Programmierschnittstelle für Anwendung, - "Service-Provision", - Treiberschnittstelle, - Hardwareschnittstellen. 25

26 Auswechselbar sind unter Umständen: - Betriebssystemkern: Releasewechsel... - CPU-Generation: Intel Pentium III... - Hauptplatine: Bios, Chipsatz, Busse - Prozessortyp: Intel x86, Sun-Sparc, Power PC, - Protokolle: TCP/IP, IPX, AppleTalk - Geräte: Festplatte, Drucker, Grafikkarte... SW-Schichtenmodell: - Anwendungsprogramm, - Laufzeitbibliothek, - Pseudotreiber, - OS-Dienste, - Gerätetreiber. HW-Schichtenmodell: - Busschnittstelle (PCI, EISA, ISA), - Host-Controller (z.b. SCSI, USB), - Peripheriebus (SCSI, USB, FireWire), - Firmware (z.b. in SCSI-Platte), - elektromechanisches Gerät. Beispiele: - THE System, Dijkstra, MULTICS: Ringe mit HW-Schutz. - Oberon,

27 Beispiel: Oberon System - geschichtet Wirth & Gutknecht, 1992: System Edit Net Backup Texte Befehle Text- Frames Menu- Viewers Printer Oberon Viewers Texts Modules Fonts Reals Files Display FileDir Input SCC Diskette Kernel Treiber 27

28 3.3 Mikrokern Anwendungen OS-Dienste Mikrokern Treiber Hardware Zuverlässiger Mikrokern, etwa für: - Nachrichtenvermittlung & Prozessumschaltung, - Speicherverwaltung & Security... Dienste im Adressraum der Anwendung: - Bedieneroberfläche, - Dateiverwaltungen, - Vernetzung... - Beispiel: Mach, L4. 28

29 3.4 Virtuelle Maschinen Nachbildung der zugrunde liegenden HW, so dass mehrere Betriebssysteme gleichzeitig auf einem Rechner laufen können. Erstes System IBM VM/37: - Monitor der virtuellen Maschine: Ausführung auf der realen Hardware, Realisierung von Mehrprogrammbetrieb. - Auf der nächst höheren Ebene werden mehrere virtuelle Maschinen zur Verfügung gestellt. - Exakte Kopien der HW mit Kern- und Benutzermodus, Ein- und Ausgabe, Unterbrechungen und andere Eigenschaften der realen Maschine. Systemaufrufe werden von der virtuellen Maschine abgefangen. Die tatsächliche Ausführung der Systemaufrufe erfolgt auf der realen HW durch den Monitor auf HW-Ebene. Klare Trennung vereinfacht den Entwurf der beiden Komponenten. Abwandlungen: - Virtueller 886 Modus für Pentium-CPUs zur Ausführung von 16-Bit MS-DOS Programmen. - JVM (Java Virtual Machine) interpretiert plattformunabhängigen Bytecode. 29

30 3.5 Client / Server Anw. Services Executive Kern Treiber HAL Hardware Aufteilung in Client- und Server-Prozesse. Zwanglose Erweiterung auf verteiltes System. Keine Privilegien für Dienste im User-Mode. Validierung der Aufrufsparameter zum Dienst im Executive (gültige Handles, Rechte,...). 3

31 3.5.1 Fallbeispiel: Windows NT "Executive" in Windows NT Dienste im sicheren Teil des Systems. Security Monitor Objekt Manager Process Manager Kern LPC Virtual memory Hardware Abstraktion Kernel Mode E/A - Dateien - Cache - Drivers - Network Security Monitor kooperiert mit Security-SS. Object Manager verwaltet OS-Ressourcen. Prozess Manager für Prozesse & Threads. "Local Procedure Calls" für Aufrufe über getrennte Adressräume hinweg. VM für Adressräume und Paging. E/A-Manager: verwaltet und ruft Treiber. (Direkte E/A aus Performance-Gründen) 31

32 Subsysteme in Windows NT Win32 Klient Win32 Klient User Mode Win32 Subsystem Posix Klient Posix Subsystem LPCs OS/2 Klient OS/2 Subsystem MS-DOS Klient Win32 Klient WoW Klient Kernel Mode Virtuelle DOS Masch. User Mode Kommunikation mit Subsystemen über den LPC Manager im Executive. Kommunikation zw. Subsystemen über LPC. Wechsel zum Kernel-Modus via INT x2e. Win32-Subsystem: - DLLs beim Klienten: User32, Kernel32, GDI32, - LPC zum W32-Subsystem-Prozess CSRSS.exe. 32

33 Virtuelle DOS Maschinen Eine Virtuelle Dos-Maschine (VDM) bildet eine reale DOS-Maschine nach: - E/A-Port Zugriffe abfangen & emulieren, - Virtuelle Gerätetreiber in der VDM, - E/A-Unterbrechungen weiterreichen, - 64 KByte für DOS-Programme, - 16 MByte Adressraum für Win16 Programme. 16 MBytes 64 KBytes Adressen & Instruktionsinterpreter 32-Bit Windows Manager & GDI Thunks 32-Bit MS-DOS Emulation Virtuelle Gerätetreiber Windows 3.11 Anwendungen Windows Mgr. & GDI Stubs Windows 3.11 Kern 16-Bit MS-DOS Emulation Pro MS-DOS Programm wird ein Thread in NTVDM Prozess gestartet. 16-Bit Windows-Programme können optional in separaten NTVDMs gestartet werden: - WoW = "Windows on Windows" (16 on 32), - kooperatives Multitasking... 33

34 Koexistenz von 16- & 32-Bit Applikationen 16-Bit 16-Bit 16-Bit Klient Klient Klient Win32 Klient Win32 Klient Krnl386/Gdi/User.exe Thunk-Layer Kernel32 / Gdi32 / User32 / NTdll / Advapi.dll Kernel Mode / native NT-Funktionen Thunk-Layer besorgt Konvertierungen: - Segment:Offset nach Linear 32-Bit Adresse, - (DX,AX)-Register nach EAX-Register, - 16-Bit Stack nach 32-Bit Stack, - und umgekehrt, - etc.... Teile der 32-Bit Funktionen sind noch nicht implementiert und rufen wiederum 16-Bit Prozeduren. 34

35 4. Hauptspeicher 4.1 Einführung Speicherhierarchie: - Cache: o teuer. o flüchtiger Inhalt. o meist mehrstufig organisiert. o Kapazität in Kilobyte (z.b. 512 KB). o Zugriff bei Pentium 4 mit CPU-Takt. - Hauptspeicher: o flüchtiger Inhalt. o schneller Zugriff (z.b. SDRAM 7ns). o Kapazität in Megabyte (z.b. 512 MB). - Platttenspeicher: o persistente Speicherung. o Kapazität in Gigbyte (z.b. 8 GB). o Zugriffszeiten in Millisek. (z.b. 7ms). Hauptspeicher wird: - zugeteilt, - geschützt, - ausgelagert, - freigegeben, - kompaktifiziert. 35

36 Binden von Speicheradressen Programm muß zur Ausführung in den Hauptspeicher geladen werden. Adressbindung zur Übersetzungszeit: - fest verdrahtete Adr. im ausführbaren Prg. - Prg. muß an bestimmte Adresse geladen werden. Konflikte bei Mehrprogrammbetrieb Adressbindung zur Ladezeit: - PC-relative Adressierung oder Binder erzeugt relozierbare Adressen (beginnend bei ). - Positionen der zu relozierenden Adr. in Tabelle. - Lader passt die Adressen an die zugewiesene Speicherposition an. Adressbindung zur Laufzeit: - Relozierung des Programms zur Laufzeit. - benötigt HW-Unterstützung (z.b. Segmente mit Basisregister). MMU Hauptspeicher Basisregister CPU Logische Adresse Phys. Adresse

37 4.2 Partitionen im Hauptspeicher Ziel: mehrere Programme, geschützt voneinander, gleichzeitig im Hauptspeicher halten. Multiprogramming Aufteilung des Hauptspeichers in Partitionen. Partition = Speicherblock für ein Programm Statische Partitionierung Statische Unterteilung des Hauptspeichers in gleich große oder variabel große Partitionen. Feste Partitionen: - einfach implementierbar. - maximale Anzahl Programme festgelegt. - Nachteil: ungenutzter Platz verloren interne Fragmentierung. Unterschiedlich große Partitionen: - gleiche Nachteile wie bei festen Partitionen, - aber etwas höhere Flexibilität. Beispiel: OS-36 MFT. - IBM Betriebssystem für Mainframes. - MFT=Multiprogramming with a Fixed number of Tasks. 37

38 4.2.2 Dynamische Partitionierung Länge & Anzahl der Partitionen sind variabel. Programm erhält genau so viel Speicher wie es benötigt und nicht mehr. interne Fragmentierung wird verhindert Aber neues Probl. externe Fragmentierung: - im Laufe der Zeit entstehen Löcher zw. Part. - insgesamt genügend Speicher vorhanden, - aber Programm paßt in keine Lücke. Lösung: Heap Kompaktifizierung n Hauptspeicher Betriebssystem Hauptspeicher Betriebssystem kompaktieren 38

39 4.2.3 Anwenderprogrammpartition Heap (Halde) für dyn. Speicherverwaltung: - Ressourcen, - (Codesegmente), - dyn. Datenstrukturen. Stack (Keller) für Parameter & lokale Var. A5-Welt des Macintosh: - Globale Variablen des Programmes, - Einsprungtabelle für Prozeduren, - Grafik-Kontext. Sprungtabelle Register A5 Grafik-Kontext Globale Variablen des Programmes high memory frei Halde Keller Register A7 low 39

40 Format von Heapblöcken: Jeder Heapblock enthält einen Header mit Informationen für die Speicherverwaltung: - Flags & Längenfelder, - nächster Heapblock - Typ,... Header normalerweise außerhalb des Blocks. Alternativ Doppelköpfiges Format (Plurix). Variablen Referenzen 4

41 Handles & Masterzeiger: Der Masterzeiger referenziert die Daten. Ein Handle als Zeiger auf einen MasterZeiger. Eventuell verweisen viele Handles auf einen MasterZeiger: ahandle bhandle chandle relozierbarer Block MasterPtr Daten können verschoben werden, ohne alle Handles zu kennen und zu verändern. 41

42 Laufzeitkeller Displaytabelle Spiegelt die verschachtelten Gültigkeitsbereiche des Quellprogrammes wieder: Proc B Proc C Proc A Programmtext Globale Variablen A-Variablen B-Variablen C-Variablen Keller # #1 #2 #3 #4 Displaytabelle Globale Variablen auf lexiklaischer Ebene #. Compiler kennt aktuelle lexikalische Ebene, jedoch nicht die Rekursionstiefe. Nur Variablen im Keller, kein Code. Displaytabelle erledigt nicht: - Aufbewahrung der alten Ebenen, - Prozedurrücksprungadresse,... 42

43 Statische und dynamische Kette = Static & dynamic Chain Statische Verkettung anstelle von Display. Dynamische Verkettung für Rekursion: globale A Proc B Proc C static chain B B C dynamic chain Proc A C B Programmtext C B 43

44 Kellerrahmen ( Stackframe ) Welche Information wird pro Prozeduraufruf im Keller festgehalten? Funktionsresultat Parameter Statische Verkettung Rücksprungadresse Dynamische Verkettung Stackframe Lokale Variablen Registeraufbewahrung Temporäre Zwischenwerte Funktionsresultat nur bei Funktionen. Statische Verkettung falls lex. Ebene >. Aufgaben des Kellers - Speichern von lokalen Variablen - Übergabe von Parametern an eine Prozedur - Rückgabe von Funktionsresultaten - funktioniert nach Prinzip Last in First Out 44

45 Aufrufkonventionen Pascal: - Parameter werden von links nach rechts übergeben - Die aufgerufene Prozedur räumt den Keller auf - Funktionsresultate werden über den Keller zurückgegeben C: - Parameter werden von rechts nach links übergeben - Die aufrufende Prozedur räumt den Keller auf - Funktionsresultate werden in Registern zurückgegeben Bei RISC-Prozessoren - Parameterübergabe fast immer in Register - Möglichkeit, Register zumzunummerieren 45

46 Intel: Kellerrahmen (Stackframe) Aufbau: Parameter EBP ESP Rücksprungadresse altes EBP Lokale Variablen Adressierung: - Parameter relativ zu EBP mit pos. Index. - Lokale Var. relativ zu EBP mit neg. Index. Beispiel C: void add(int x, int y) { int result; }... result = x + y; return result; add(5, 7) push EBP mov EBP,ESP sub ESP,4 mov EAX,[EBP+8] add EAX,[EBP+12] mov [EBP-4],EAX mov EAX,[EBP-4] mov ESP,EBP pop EBP ret push 7 push 5 call add add ESP,8 46

47 Beispiel Pascal: function add(x,y: int) begin int result; result := x + y; add := result; push mov sub mov add mov mov mov EBP EBP,ESP ESP,4 EAX,[EBP+12] EAX,[EBP+8] [EBP-4],EAX EAX,[EBP-4] [EBP+16],EAX end;... add(5, 7) mov ESP,EBP pop EBP ret 8 push push 5 push 7 call add pop eax 47

48 4.3 Verwaltung & Vergabe Speicherverwaltung Bitvektor - Problem: Wahl der Granularität. - je kleiner G., desto größer wird Bitvektor. - interner Versch. steigt mit Größe des Granulats. Freispeicherliste - freie Speicherblöcke verketten. - Zeiger für die Freispeicherliste im leeren Block unterbringen. - eventuell mehrere Listen verwenden. Linearer Heap - freie & belegte Blöcke sind dicht aneinander gereiht (Verkettung über Längenfeld). - optimale Ordnung der Blöcke ist schwierig. - interne Zeiger sind überflüssig. - z.b. Mac OS & Plurix. Buddy-System - Speicher besteht aus 2 kmax Einheiten. - jeweils eine Liste für Blöcke der Größe 2 i - kleiner Stücke entstehen aus (fortgesetzter) Halbierung größerer Stücke. - benachbarte kleinere Stücke werden bei der Freigabe wieder vereinigt. 48

49 - Ablauf Anforderung: o Aufrunden auf nächste Zweierpotenz o Zugriff auf erstes freies Stück der Liste o Falls Liste leer (rekursiv): Zugriff auf Liste der nächsten Größe Stück entfernen & halbieren Hintere Hälfte (=Buddy) in zugehörige Liste einhängen - Ablauf Freigabe: o Buddy bestimmen o falls Buddy belegt, freigewordenes Stück in die Liste einhängen o falls Buddy frei Vereinigung o Vorgang iterieren, bis Buddy belegt oder bei der max. Größe angekommen. - Beispiel: alloc 3MB alloc 8k alloc 12MB free 12MB alloc 3,5MB free 3MB free 8k free 3,5MB 49

50 4.3.2 Speichervergabe Gute Strategie kommt mit kleinem Heap aus. Kriterien: Verschnitt & Geschwindigkeit. Die beste Strategie zu finden, ist auch post festum ein schwer lösbares Problem. First fit : - nimmt ersten freien Block der groß genug ist. - evt. teilen, um ungebrauchten Platz zu sparen. Best fit : - sucht den Block, der am wenigsten Speicherverschnitt verursacht. - Vorteil: keine Zerschneidung großer Stücke. - Nachteil: langsam; neigt bei Zerschneiden dazu sehr kleine unbrauchbare Stücke zu erzeugen. Worst fit : nimmt den größten Block, damit noch was übrig bleibt. Buddy-Technik : - bei Bedarf wird ein zu großes Element geteilt. - später werden kleine benachbarte Blöcke wieder vereinigt. - interner und externer Verschnitt vorhanden. 5

51 4.4 Overlay & Swapping Overlay Technik Notwendig, wenn das Programm größer als der Hauptspeicher ist. Idee: Nicht benötigte Programmteile werden durch andere Programmteile überlagert. Realisierung: - ein Wurzelsegment muß immer im HS sein. - Overlays werden vor dem Binden festgelegt. - Unterstützung durch: o Betriebssystem (z.b. MSDOS), o Compiler (z.b. Turbo Pascal Units). Hauptspeicher n Overlay- Bereich Wurzelsegment Betriebssystem 51

52 4.4.2 Swapping Swapping = Aus- und Wiedereinlagern von Programmen/Partitionen auf Disk. Notwendig im Multiprogrammbetrieb, falls nicht genügend Hauptspeicher vorhanden. Zeitaufwendig, da immer ganze Partition ausund eingelagert wird. Evt. erfolgt Einlagerung an anderer Adresse. Strategien: - Auslagern nicht rechenbereiter Prozesse - Prioritäten berücksichtigen. 52

53 4.5.1 Grundprinzip 4.5 Virtueller Speicher Scheinbare Hauptspeicher-Vergrösserung. selten benötigte Speicherbereiche auslagern Realisierungsformen: HS unterteilen in - variabel große Segmente = Segmentation. - gleich große Seiten (pages) = Paging. - evt. beides kombiniert (z.b. Intel). Seiten im log. Adressraum werden auf phys. Kacheln (page frames) im HS abgebildet. Einfach virtualisierter Speicher: Ein virt. Adressraum für mehrere Programme: Progr. 1 Hintergrundspeicher Progr. 2 Logischer AR M M U Physikalischer AR System 53

54 Mehrfach virtualisierter Speicher: Hintergrundspeicher Prg.-1 Prg.-2 System M M U Physikalischer AR Jedes Programm besitzt einen eigenen virt. Adressraum. Adressübersetzungstabelle muss beim Prozeßwechsel umgeschaltet werden. Teile des Betriebssystemadressraumes auch für die Anwendungsprogramme zugreifbar. MMU = Memory Management Unit, HW- Einrichtung zur Adressübersetzung. 54

55 4.5.2 Adressübersetzung Einstufige Übersetzung bei Segmentierung Abbildungsprinzip. z.b. 32 Bit virtuelle Adressen + 16 Bit Segmentindex. Segmenttabellen speichern vollst. Adressen. Seg. können an bliebigen Adr. beginnen. #Segment Offset 16 Segment-Index 32 Offset Start Limit Segmenttabelle reale Adresse 55

56 Einstufiger Übersetzungsvorgang bei Paging Abbildungsprinzip. z.b. 2 Bit virtuelle Adresse, 4 KByte Seiten. virtuelle Adresse 2 Seitentabellen-Index 12 Offset Seitentabelle reale Adresse Bem.: aufeinanderfolgende Seiten müssen nicht unbedingt auf fortlaufende Kacheln abgebildet werden. 56

57 Mehrstufige Adressübersetzung bei Paging Eine Übersetzungstabelle pro Prozeß. Adresskontext umschalten. Seitentabellen der Ebenen 1+i können evt. ausgelagert werden. virtuelle Adresse Kontextregister Offset Kontexttabelle Ebene 1 Ebene 2 Seitentabellen Ebene 3 57

58 Typisches Format eines Eintrages in der Seitentabelle (Intel Pentium): Page Frame/Kachel - Adresse 2 12 Avail Nutzbar für Betriebssystem dirty accessed PCD PWT U/S W/R P beschrieben Use-Bit Seite hat Cache Disabled Cache durchschreiben User Seite, nicht Supervisor Seite beschreibbar Präsenz Bit, Seite vorhanden Kacheladresse nur gültig, wenn die Seite im Speicher vorhanden ist. Auffinden der Seite im Sekundärspeicher. 58

59 Uebersetzungspuffer (TLB) TLB = "Translation Lookaside Buffer". TLB puffert früher übersetzte Adressen. Nur wenige Einträge: P4 (4), IA64 (128). Falls kein Treffer im TLB erfolgt, wird hardwaremässig auf die Seitentabellen im Hauptspeicher zugegriffen (teuer). Hohe Trefferrate (Hit ratio) wichtig. Cache benützt nur physikalische Adressen: - nicht sichtbar für die Software! - mit physikalischer Adresse Eindeutigkeit: virtuelle Adresse TLB Seitentabellen Betriebssystem physikalische Adresse Daten Cache Haupt- Speicher TLB Programmierung: - Komplett löschen bei Adressraumwechsel. - 1 Eintrag entfernen beim Einlagern einer Seite. 59

60 Assoziativer Speicher (ähnlich einem Cache). - direkt indexiert (mapped) oder voll assoziativ: virtuelle Adresse virtuelle Adresse Kacheladdresse Kacheladdresse - oder 2 Wege Set-assoziativ. virtuelle Adresse 21 6 Kacheladdr. Kacheladdr. 6

61 Invertierte Seitentabellen Für sehr grosse virtuelle Adressenbereiche. Für CPUs mit 64-Bit Adressen, z.b. Sun Sparc, Intel Itanium, Dec Alpha, Bit Adressraum: ~ 2 52 Einträge in Seitentabelle, ~ für 4 KB Seiten & 8 Byte pro Eintrag, ~ 32 Terabyte nur für Seitentabellen. Besser ein Eintrag pro physikalische Kachel als ein Eintrag pro logischer Seite. Parallele Suche in grossem TLB. Bei Fehlanzeige im TLB: - Firmware aufrufen, - oder OS via Interrupt aufrufen (TLB Fault), - über Hashtabelle zur physikalischen Adresse, - Hashtabelle aktualisieren. Bei Fehlanzeige in der Hashtabelle: - sekundäre Seitentabelle konsultieren, - evtl. Tabellen und Seiten auf Platte, - Hashtabelle aktualisieren, - Seite einlagern. Neue MMU für 64-Bit Intel-Architektur. 61

62 4.5.3 Ersetzungsalgorithmen Prinzip der Seitenersetzung: Ist eine Seite nicht im HS (page fault), so wird sie mit Seitenersetzungsverfahren eingelagert. Ist der HS erschöpft muss zuvor eine Seite auf Disk ausgelagert werden, damit Platz frei wird. Ein-/Auslagern teuer Ersetzungsalgorithmus sollte Seitenfehler minimieren. Optimale Seitenersetzung: Ersetze die Seite, die zukünftig am längsten nicht mehr benötigt wird. Zukunft unbekannt theoret. untere Grenze Beispiel für HS mit 3 Kacheln: a b c d c a e d b c a auslagern Seitenfehler für Seite D 62

63 Not recently used (NRU): Flags in der Seitentabelle: - USE-Bit falls die Seite referenziert wurde, - DIRTY-Bit falls die Seite verändert wurde. USE-Bit periodisch zurücksetzen (~16 ms). Auslagerung nach Klassen: A: USE-Bit = false, Seite unverändert B: USE-Bit = false, Seite verändert C: USE-Bit = true, Seite unverändert D: USE-Bit = true, Seite verändert Fall B beschreibt eine Seite, die in einem früheren Intervall verändert wurde und noch zurückgeschrieben werden muss. Auslagerungspriorität: A > B > C > D First-in, First-out (FiFo). Einfache Liste der eingelagerten Seiten. Die am längsten residente Seite wird ersetzt. Nachteil: - Auch häufig genutzte Seiten werden entfernt. - ungünstig bei zyklischen Zugriffsmustern. 63

64 Belady s Anonomalie: Mehr Seitenfehler trotz mehr Kacheln: tritt u.u. bei FIFO-Strategie auf. 4 Kacheln 11 Seitenfehler: Kacheln 13 Seitenfehler: Optimal: 4 Kacheln 9 Seitenfehler:

65 Verfahren des zweiten Versuches: "Second chance page replacement algorithm". Verbesserung der FiFo-Strategie. a used alte Seiten 2nd Chance b used c d used unused auslagern a e unused used neue Seiten Falls USE-Bit gelöscht, dann Seite auslagern. Falls USE-Bit gesetzt: - USE-Bit zurücksetzen, - Seite hinten erneut einordnen, zweite Chance Mehr Verwaltungsaufwand für die Liste als bei einfachem Fifo. Probl.: evt. lange Suche nach Auslagerungs- Kandidat. 65

66 Uhrzeigerverfahren Ähnlich wie Verfahren des zweiten Versuchs: i un used j un used k unused h un used l unused g used a used f used b used e used d used c unused Ringliste der Speicherseiten absuchen. Einen Zeiger im Ring umlaufen lassen. Falls Use-Bit gelöscht, dann Seite auslagern. Falls Use-Bit gesetzt, zurücksetzen. Eventuell mehr als zwei Chancen. 66

67 67 Least recently used (LRU) Am längsten unbenutzte Seite auslagern. Theoretischer Ansatz: - nur in Hardware realisierbar, - 64 Bit Zeitstempel in Kacheltabelle halten, - Zeitpunkt des letzten Zugriffs eintragen, - bei jedem Zugriff aktualisieren kostspielig. Realisierung von LRU mit N*N Matrix: - N phys. Kacheln N-Bit Vektor pro Kachel. - Zugriff auf Kachel k: o Bits der Zeile k auf 1 o Bits der Spalte k auf - älteste Seite = Zeile mit kleinstem Binärwert. - Bsp.: 4 Kacheln Zugriff:

68 LRU-Simulation in Software: - pro Kachel ein Zähler, - periodisch werden die Zähler gealtert, - Kachel mit niedrigstem Zähler auslagern. Arbeitsweise des Zählers: Zähler vor Verschiebung 1) Rechtsverschiebung 2) USE-Bit wird vorne eingefügt 1 herausgeschobenes Bit entfällt Leistungsaspekte Jedes Prog. benötigt Mindestanzahl Kacheln. Allokationsalgo.: gleichverteilt, proportional, prioritätenabhängig,... Lokale Strategie: - Bei einem Seitenfehler werden nur Seiten des betroffenen Prozesses ausgelagert. - Die Proz. haben Speicherbereich fester Größe. - Vorteil: andere werden nicht beeinträchtig. - Nachteil: Speicherbedarfs schwer schätzbar. 68

69 Globale Seitenersetzungsverfahren: - Tritt ein Seitenfehler auf, so stehen die Seiten aller Prozesse zur Disposition. - Die Proz. haben Speicherbereich var. Größe. - Vorteil: mehr Flexibilität. Trashing Prozeß hat weniger Seiten zur Verfügung als er ständig nutzt sehr häufig Seitenfehler. Trashing: Prozeß verbringt die meiste Zeit mit dem Ein- und Auslagern von Seiten. Mögliche Ursachen: - Lokale Verfahren: Zahl der Seiten zu gering. - Globale Verfahren: ein Prozeß braucht zu einem Zeitpunkt sehr viele Seiten, wodurch die Bereiche aller anderen sehr klein werden. Abhilfe: - Eventuell Prozeß mit niedriger Priorität ganz auslagern Speicher wird frei - Zuordnen ausreichend vieler Kacheln Problem: Bestimmen dieser Anzahl Lösungsansatz: Working-Set-Modelle 69

70 Working-Set-Modell Lokalitätsprinzip: - Programm greift in einem kleinen Zeitraum t nur auf einen kl. Teil seines Adreßraums zu. - Räumliche Lokalität: nach Zugriff auf Adr. a ist ein Zugriff in der Nähe von a wahrscheinlich. - Zeitliche L.: nach Zugriff auf Adr. a ist ein erneuter Zugriff (in Kürze) auf a wahrscheinl. - Gründe: sequentielle Ausführung, Schleifen,... Bem.: Lokalität ist Grundlage für Caching. Approximation durch Working-Set-Modell: - Working Set: in t benutzte Seitenmenge. - Problem: richtige Wahl von t. - Lösungsansatz: Timer & Referenzbit - Bem: o t bzgl. der Rechenzeit des Proz. o Working Set Size ändert sich ständig. 7

71 4.5.4 Shared Memory Kacheln gemeinsam nutzen: - Datenaustausch zw. Prozessen, - Redundanz von Code vermeiden. Speicherbereich kann an verschied. logischen Adressen eingeblendet werden: shared Hintergrundspeicher shared Logischer AR M M U Physikalischer AR System System Muß beim Auslagern berücksichtigt werden betrifft auch bei lokalen Strategien andere! Copy-On-Write: - Speicher nur zum Lesen gemeinsam nutzen. - schreibt ein Proz., so wird die zugehörige Seite kopiert Änderungen für andere unsichtbar. - für Unix fork, globale Variablen in Windows DLLs,... 71

72 4.5.5 Fallstudie: Intel i386 Adressierung im Protected Mode Segmentierung und Paging kombinierbar: GDTR Segmentselektor LDTR Lokale Deskriptortabelle Globale Deskriptortabelle virtuelle Adresse lineare Adresse SEGMENTIERUNG PAGING CR3 Page Directory Page Table physikalische Adresse 72

73 Intel Arbeitsregister ab i386 Für Anwendungsprogramme zugänglich, Arbeitsregister verknüpft mit bestimmtem Segmentregister, aber umsteuerbar. Funktionsbezogene Arbeitsregister: - Stack, Code, - Daten, Extra-Daten, - Flags (mit IO-Privilege Level). SS ESP SP CS EIP IP DS EAX AX AL EBX BX BL ECX CX CL EDX DX DL ES ESI SI FS EDI DI GS EBP BP Eflags Flags 73

74 Intel Steuer- & Kontrollregister Verwendung: Erweiterte Adressierung im Protected Mode, Zugriffsschutz & Maschinenzustand Prozessorsteuerung (Control [..3]). SS CS DS ES FS GS TR LDTR IDTR GDTR CR CR1 CR2 CR3 SS-Basis/-Limit CS-Basis/-Limit DS-Basis/-Limit Segment- Deskriptor- ES-Basis/-Limit caches FS-Basis/-Limit GS-Basis/-Limit TSS-Basis/-Limit LDT-Basis/-Limit IDT-Basis/-Limit GDT-Basis/-Limit Debug, Test 74

75 Segmentregister bzw. -selektor hält Index in die globale oder die lokale Deskriptortabelle. Gleichzeitig mit dem Segmentregister wird implizit der Segmentdeskriptorcache geladen. Dabei geschehen unter Umständen mehrere Hauptspeicherzugriffe. Auch für das aktuelle Task-State Segment und die lokale Deskriptortabelle werden Deskriptoren gepuffert (gecached). Segmentdeskriptorcache nicht zugreifbar. 4(5) Kontrollregister: CR CR1 CR2 CR3 CR4 PG... TS, EM, MP, PE reserviert Lin. Pagefault-Adresse PageDirectory Adr. CPU Erweiterungen CR: Paging, Taskswitch, Coproc., Protected Mode. 75

76 Segmentdeskriptoren Die Originaldeskriptoren liegen in der lokalen oder der globalen Deskriptortabelle. Segmentdeskriptorcaches unsichtbar in CPU. Potential für einen segmentierten virtuellen Speicher ohne Seiteneinteilung: - für jedes Objekt einen Segmentdeskriptor, - anstatt eines Zeigers nur Segment-Selektor, - gleichzeitig 8 lokale & 8 globale D. - evtl. Segment-Deskriptoren in LDT und GDT ein- & auslagern und Selektoren ergänzen. Schutzfunktion bei Segmentierung: - Zugriffsmodus (exec, read, write ), - Protection Level (..3)=(privileged.. non-priv.) - Segmentlänge im Deskriptor. Die Segmentregister arbeiten im Protected Mode als 16 Bit Segmentselektoren: Tabellenindex LDT GDT Requ. Priv. Level

77 Formate von Segmentdeskriptoren Deskriptor für Applikationssegmente: Granularität 32/16 Bit, Reserve, OS use, Present, Protect..3, Application-Deskr., Typ Basis 15.. Limit "Historium" aus der Intel 286 Architektur. Granularität der Länge: 1 Byte / 4K Page. 32 Bit oder 16 Bit Instruktionen & Adressen. Beim Zugriff auf ein ausgelagertes Segment erfolgt ein Interrupt an das Betriebssystem. Nur Deskriptoren mit gleicher oder niedrigerer Sicherheitsstufe dürfen geladen werden (CS). 77

78 Applikations-Segmente DT-Bit=1: Kennung für Applikationsseg. #11: EXE (code/not data) #1: E/C (downward,conforming), #9: W/R (write data, read code), #8: A (accessed). 1 Typ P Bit#11=true (EXE-Bit): Code - Codesegment, darf ausgeführt werden, - darf auch gelesen werden, falls Bit9=true (W/R), - falls Bit#1=true (conforming), ist Ausführung durch ein unterprivilegiertes Segment gestattet. Bit#11=false (EXE-Bit): Data - Datensegment, nicht ausführbar, - schreiben erlaubt, falls Bit9=true (W/R), falls Bit#1=true (abwärts), erstreckt sich das Segment von Basisadresse nach unten (Stack). Bit#8=true (Access-Bit): - dieses Segment wurde benützt, - nützlich für die Speicherauslagerungsstrategie. 78

79 Intel386 System-Segmente Haben das DT-Bit gelöscht. Call-Gate Deskriptor (Typ = 12): - beschreibt den Einsprung in geschützte Routine, - normalerweise in anderem Segment (far call), - referenziert einen weiteren Segmentdeskriptor, - ändert kurzzeitig die Privilegierungsebene, - übernimmt bis zu 128 Parameterbytes: present, privilege, typ12 Zieloffset Zielsegment # Zieloffset 15.. DWcnt Interrupt- & Trap-Gate Deskr. (Typ = 14/15): - beschreibt den Einsprung in Interruptroutine, - 8 Byte Einträge in Interrupt-Deskriptortabelle, - IDT-Basis/Limit geladen über LIDT-Instruktion, present, privilege, typ14/15 Zieloffset Tables Zielsegment # Zieloffset 15.. Tables Trap-Gate Deskriptoren (Typ = 15) arbeiten ähnlich, jedoch ohne Interrupts zu maskieren. 79

80 Task-Gate Deskriptor (Typ = 5): - referenziert ein Task-State Segment (TSS), - evtl. mehrere Task-Gates für ein TSS, - enthält Privilegierungsstufe: present, privilege, typ=5 Tables TSS Zielsegment # Task-Switch falls: - Far-Call oder Far-Jump, falls Sprungzielselektor Task-Gate oder TSS, - Interrupt oder Exception, falls zugehöriger IDT- Eintrag auf Task-Gate verweist. - IRET von. nested Task. 8

81 Task-State Segment Deskriptor (Typ = 9/11): - Enthält akt./geretteten Prozessorzustand (TSS), - Segmentselektor für lokale Deskriptortabelle, - Basisadresse für Seitentabellendirectory, - Stacks der Privilegierungstufen,1,2, - aktuell sichttbare Prozessorregister, - Zugriffsmaske für die E/A-Ports, - Link zum vorherigen Tasksegm., - aktives TSS mit Typ=11. Task-State Segment TSS-Limit IO-Permission Bitmap OS Zeux IO-Bitmap Register Stacks,1,2 PrevTSS TSS-Base Task-Register 81

82 Zugriffsschutz-Mechanismen Zugang über Gate-Deskriptoren. Max. vier Privilegierungsebenen, zum Bsp.: 3: Anwendungsprogramme, 2: Laufzeitumgebungen, GUI... 1: Gerätetreiber, : Kernel Privilegierungscode: CPL im aktuellen Codesegment, RPL im Selektorargument, DPL im Deskriptor, IOPL in Flags. Zur privilegierteren Ebene nur über ein Gate: Call, Trap, Interrupt, Task, TSS, Ausnahme: Conforming Deskriptors. 82

83 4.6 Beispiele: Linux & Windows NT Linux Unterteilung des virtuellen Adreßraums: - User Mode: -3GB. - Kernel Mode: 3-4 GB. Zonen des physikalischen Adreßraums: - ZONE_DMA: für ISA Geräte. - ZONE_NORMAL: Standardzone. - ZONE_HIGHMEM: > 896 MB RAM. - Zonen-Information siehe auch Befehl dmesg. 4 GB 3 GB virtueller Adreßraum Kern physikalischer Adreßraum ZONE_HIGHMEM User 896 MB ZONE_NORMAL 16 MB ZONE_DMA Dreistufige Seitentabellenstruktur: - Entwickelt für 64-Bit Alpha. - IA 32 unterstützt nur zweistufige Tab. Eintrag im Page-Directory wird als mittlere Seitentabelle mit nur einem Eintrag behandelt. 83

84 Kachelverwaltung: - mit Hilfe der Buddy-Technik, - freier Block schnell auffindbar, - mildert externe Fragmentierung, - aber interne Fragmentierung problemat., - Kacheln des Kerns werden nicht ausgelagert. Slab Allocator: - gruppiert Objekte gleichen Typs in Caches - ein Cache ist in mehrere slabs unterteilt. - Zum Bsp.: voll, partiell gefüllt, leer,... - pro slab eine oder mehrere Kacheln. - Allokation in den Größen 2 x (x>5). - Mildert interne Fragmentierung. - Info: cat /proc/slabinfo Seitenersetzung: - Modifizierter Clock Algorithmus. - Use-Bit erweitert durch 8-Bit Altersvariable. - Wird bei jedem Anpassen des Zeigers erneuert. Insgesamt komplizierte Speicherverwaltung. Weitergehende Informationen unter:

85 4.6.2 Windows NT Unterteilung des Adreßraums: - User Mode: -2GB. - Kernel Mode: 2-4 GB. Zustände der Seiten eines Prozesses: - Verfügbar: ungenutzte Seiten. - Reserved: logischer Adreßbereich reserviert. - Commited: Kacheln bzw. Platz in Paging Datei wird alloziert. - Vorteil: Kacheln möglichst spät allozieren. Kacheln je nach Zustand in eigener Liste page frame database Seitenersetzung: - variabel großer Working Set; Standardwerte für Minimum und Maximum. - lokale Strategie: o FIFO bei Multiprozessor-Systemen. o Clock bei Einzel-CPUs. - Anpassung des Working Set (WS): o Wenn genügend Kacheln vorhanden sind wächste der WS bei einem Seitenfehler. o Wenn HS knapp wird, so werden die WSs geschrumpft (ältere Seiten auslagern). - Clustering: Beim Einlagern einer Seite werden Nachbarseiten mit eingelagert. 85

86 4.7 Automatische Freispeichersammlung = Garbage Collection Explizite Speicherrückgabe durch den Programmierer ist fehleranfällig und mühsam. Manche Prog.sprachen sammeln Speicherbereiche, die nicht mehr adressierbar sind auto. wieder ein (Java, Oberon,.NET,...). Motivierung & Voraussetzungen Freigabe von Speicher ist fehleranfällig: - dangling Pointers - Code notwendig zum Abbauen komplexer Strukturen - bei modularer Programmierung werden Kontrollstrukturen benötigt (müssen explizit programmiert werden) - Nicht Freigabe von Speicher ist ebenfalls eine Fehlerquelle (Memory leaks) Voraussetzungen: - Sämtliche Referenzen auf einen Speicherblock müssen auffindbar sein. - Typsichere Sprache dringend empfohlen. 86

87 Assignment-Listen: Heap Blöcke Nil Nil Die Freispeichersammlung sammelt nun alle Blöcke mit leerer Assignment-Liste ein. Heap-Kompaktifizierung: - Verschieben von allozierten Blöcken - Zeiger mit Hilfe der Assignment-Liste anpassen. Beispiel: Plurix Backchain. 87

88 Grundtechnik 2 Phasen Modell - 1. Phase: Erkennung von referenzierbaren und nicht mehr referenzierbaren Objekten (Garb. Detection) - 2. Phase: Freigabe des Speichers von nicht mehr referenzierbaren Objekten (Garbage Reclamation). Nicht mehr referenzierbare Objekte erkennen: es existiert kein Pfad zwischen dem Objekt und einer Zustandsvariablen (Root-Set). Zustandsvariablen: - globale/statische Variablen, - lokale & Modulvariablen. Jeder (allozierte) Block führt eine Liste mit Zeigern, welche auf ihn zeigen. Im Falle einer Allozierung (New...) wird der zugeordnete Zeiger eingetragen. Wird ein gültiger Zeigerinhalt einem anderen Zeiger zugewiesen (assigned), so wird auch dieser Zeiger eingetragen. Wird eine Zeigervariable freigegeben, so muß sie aus der Assignment-Liste entfernt werden. Das kann schwierig werden. 88

89 4.7.1 Mark & Sweep Der Sammelalgorithmus markiert alle noch erreichbaren Blöcke im Heap: Z Garbage Z Z Nicht markierte Blöcke sind dann frei (bzw. Garbage) und können eingesammelt werden. für jede Zustandsvariable s: Markiere(s); für jedes Objekt o, für das gilt o.mark = : Speicherfreigabe(o) Markiere(s): wenn s.mark = 1 dann beende Prozedur s.mark := 1; für jedes von s referenzierteobjekt o: Markiere(o) 89

90 Ausgehend von einer Menge von Wurzelzeigern werden alle noch aktiven (live) Zeiger und deren Objekte gefunden. Das Verschieben von Blöcken zur Gewinnung von größeren Bereichen (Kompaktieren) ist möglich aber mühsamer. Die Freispeichersammlung muss in einem Stück zu Ende laufen. Manipulation an Zeigern durch das Anwenderprogramm würden die Freispeichersammlung verwirren. Die hierzu erforderlichen Symbol- und Typentabelle wird vom Compiler erzeugt. 9

91 4.7.2 Compilerunterstützung Referenzen innerhalb eines Blocks müssen identifizierbar sein, benötigt wird: - Offset und Typ der globalen Zeigervariablen, - Offset und Typ der lokalen Zeigervariablen, - Identifikation der Prozedurframes im Stack, - Zeigerfelder in dynamisch allozierten Records. X ^Y B A ^X ^Y Global Stack X Y Y ^Y ^X ^X ^Y ^Y Heap Global Frame Proc-A Frame Proc-B Frame Record-X Type Record-Y Type Tabelle ^Y ^X ^Y ^Y ^X ^Y 91

92 4.7.3 Kopierende Freispeichersammlung Die Objekte werden solange von einer alten Region in eine neue kopiert bis der Rootset nur noch Referenzen in die neue Region hat. Ein kopiertes Objekt darf nicht mehr in die alte Region zeigen. Ein Objekt wird zusammen mit den Objekten kopiert auf welche es zeigt. Eventuell Zugriffe auf die alte Region mit MMU abfangen. Alte Region Neue Region 92

93 5. Plattenspeicher 5.1 Aufbau einer Festplatte Physikalischer Aufbau Platten: - magnetisierbare Schicht. - rotieren mit U/min. - unterteilt in konzentrische Spuren (Tracks). - Spuren sind wiederum in Sektoren unterteilt. - äußere Spuren mit bis zu 4% mehr Sektoren. - Zylinder = Menge aller Spuren, die mit fester Armposition gelesen werden können. Kamm mit Leseköpfen. Adressierung: - über Zylinder, Kopf, Sektor (CHS), - oder über logische Block Nummer (LBA) 93

94 5.1.2 Aufbau eines Sektors typischerweise 512 Bytes pro Sektor: entsteht durch phys. bzw. Low-Level-Formatierung. SYNC IAM GAP1 SPD SYNC IDAM ID ECC GAP2 SYNC DAM DATA ECC GAP3 Wichtige Felder: - ID: Zylinder; Head und Sektor - ECC: Error Correction Code - DATA: zur Informationspeicherung - GAP4: Nach letztem Sektor eines Zylinders Aufbau des Bootsektors: Position ist (Zylinder, Kopf, Sektor 1) Wird durch BIOS beim Systemstart geladen und angesprungen. Bootlader (446 Bytes) Partitionstabelle Signatur (2 Bytes) 94

95 Fehlerbehandlung: Disks sind fehleranfällig - Köpfe schweben über Oberfläche. - Staubkorn kann zum Headcrash führen. - Teilweise fehlerhafte Blöcke bei Auslieferung. Sector Forwarding: - Controller hat Liste schlechter Blöcke und leitet Zugriffsversuch auf fehlerhaften Block (unsichtbar für BS) auf einen Reserveblock um. - Auswirkungen auf Disk-Scheduling! - Reserveblöcke in allen Zylindern und / oder in einem Reservezylinder. 95

96 5.1.3 Partitionstabelle Beschreibt logische Laufwerke (Volumes): Offset Größe Inhalt Partition Partition Partition Partition 1 Arten von Partionen: - Primäre: max. vier Stück möglich bei PCs, - Erweitert: primäre Part. mit log. Unterpart., - Logisch: einer erweiterten Partition zugeordnet. Nicht alle Partitionierungsprgramme arbeiten gleich Vorsicht! Vorteile: - verschiedene Dateisysteme auf einer Festplatte, - mehrere Betriebssysteme auf einer Disk, - Trennung von System & Benutzerdaten, - Besonderheit in Linux: Swap-Partition. Namensgebung: - Windows: Laufwerksbuchstaben c:, d:,... - Unix: interner Name: z.b. /dev/hda2. 96

97 Aufbau eines Partitionseintrages Offset Größe Inhalt 1 Boot Flag (8h aktiv; h inaktiv) 1 3 Beginn der Partition 4 1 System Kennung (z.b. 1: DOS 12-Bit FAT; 4: DOS 16-Bit FAT ) 5 3 Ende der Partition 8 4 Startsektor als logischer Sektor 12 4 Größe der Partition in Sektoren Probleme bei großen Festplatten Sektoren zu 512Bytes = 8 Gigabyte Sektoren zu 512Bytes = 2 Terrabyte Mounting: Mounting: Einblenden einer Partition in einem Verzeichnis des Dateisystems. Windows-Diskmanager, Unix: mount mount 97

98 5.2 Festplatten-Scheduling Aufgabe des BS: effiziente Nutzung der Disk: - Suchzeit: Kopf auf Zylinder positionieren. - Rotationsverzögerung bis Sektor unter Kopf. Positionierung teuer: - Möglichst sequentiell schreiben & lessen. - Schreiben auf einer modernen IDE-Disk: sequentiell: ~ 45 MB/s; verstreut: ~ 1 MB/s. Strategien zur Kopfpositionierung: - Zufallsstrategie (Random): Aufträge werden in zufälliger Reihenfolge ausgewählt. - FCFS (First Come First Serve): Abarbeitung der Aufträge in der Ankunftsreihenfolge. - Prioritätsstrategie: Die Reihenfolge wird entsprechenden der Priorität der Aufträge erstellt. - SSTF (Shortest Seek Time First): Auftrag mit kürzester Armpositionierung zuerst - SCAN (Fahrstuhlstrategie): Der Plattenarm bewegt sich in eine Richtung, bis alle Anforderungen abgearbeitet sind. Erst anschließend ist Bewegung zurück oder in andere Richtung erlaubt. Beispiel: Start bei 53; Sequenz: 98, 183, 37, 122, 14, 124, 65, 67 98

99 FCFS (First Come First Serve): - Kopfbewegung über 64 Zylinder. SSTF (Shortest Seek Time First): - Kopfbewegung über 236 Zylinder. - Mögliches Aushungern. 99

100 SCAN (Fahrstuhlstrategie): - Kopfbewegung über 28 Zylinder. Anmerkungen: - FCFS erfordert im Mittel (Gleichverteilung) ein Überfahren von 1/3 der Spuren. - SCAN, und SSTF bringen vor allem bei starker Last Vorteile, denn im Grenzfall ist nur eine Spur weit zu springen. - SCAN und SSTF benachteiligen die Randspuren. - SSTF ist i.a. am besten, kann jedoch zum Verhungern von Aufträgen führen. 1

101 5.3 Speicherverwaltung Sequentielle Natur einer Platte erfordert andere Verfahren als im Heap: - Armbewegungen sind kritisch, - kleines Abbild im Hauptspeicher, - optimale Suchverfahren für Verzeichnisse Ausgangssituation: fast alle Dateisysteme unterteilen Partition in feste Blockgröße: - Kompromiß zw. Zugriffsgeschwindigkeit und Fragmentierung bei Wahl der Blockgröße. - Typische Werte:,5 32 KB (je nach Disk) Freispeicherverwaltung Bit-Vektoren Partition in Blöcke fester Größe unterteilen. Jeweils ein Bit zeigt an, ob ein Block frei ist oder nicht (=belegt,1=frei). 1 GB Disk, 1 KB pro Block Bitmap. 1,25 MB für Bewertung: - fortlaufende Blöcke einfach identifizierbar. - u.u. große Bitmap bei kleinen Blöcken. - Bitmap im virtuellen Speicher halten. 11

102 Verkettete Freispeicherliste Finden von N zusammenhängenden Blöcken schwieriger. Ermitteln N aufeinanderfolgendener Blöcke erfordert Durchlaufen von mind. N Blöcken. Ggf. effizienter als Bitmap, da nur freie Blöcke gespeichert werden müssen. 12

103 Freispeicherverwaltung mit Zählen Verkettete Liste. Speichern von Zeiger und Anzahl unmittelbar nachfolgender freier Blöcke in einem freien Block. Vereinfacht die Suche nach N aufeinanderfolgenden Blöcken

104 Freispeicherverwaltung mit Gruppieren Speichern der ersten N freien Blöcke im ersten Block. N-1 dieser Blöcke sind frei. Im N-ten Block sind weitere N freie Blöcke gespeichert - usw. Beispiel: N=4 Speichern von Zeiger und Anzahl unmittelbar. 14

105 Beispiel: Macintosh Vergabeeinheiten: Logischer Block (512 Bytes) phys. EOF Belegungsblock Erweiterungsquantum Log. Blöcke à 512 Bytes werden normalerweise auf einen phys. Sektor abgebildet. Die Belegungseinheit (Allocation Block) ist jeweils mindestens 2 logische Blöcke. Dies reduziert die Größe der Vergabetabellen. Die Zuteilung erfolgt aber in Erweiterungsquanten (Clumps) von mehr als einer Belegungseinheit: - typisch sind 4 Belegungseinheiten, - teilweise erfolgt Rückgabe nach Close, - fördert zusammenhängende Dateiplazierung. 15

106 5.3.2 Speicherallokation Allokation von Blöcken für Dateien. Ziele: - effektive Ausnutzung der Festplatte (Disk), - schneller Dateizugriff. Zusammenhängende Allokation Jede Datei belegt zusammenhängende Blöcke. Problem bei der Expansion von Dateien. Platzverschwendung (externe Frag.). Einfach Implementierung. Effektiver Zugriff. Datei Start Länge Test.java 2.profile 6 2 Plan 16 3 News 19 6 Mail

107 Verkettete Allokation Datei als verkettete Liste von Blöcken. Beliebige Anordnung der Blöcke einer Datei. Expansion von Dateien einfach. Keine Platzverschwendung. Speichern von Zeigern in Blöcken. Bei einem beschädigtem Block geht die ganze Datei verloren. Zugriffsgeschw. abhängig von Zersplitterung. Z.B. FAT (leicht abgewandelt). Datei Start Länge Test.java

108 Multilevel-Index Allokation Limitierte Dateigröße bei einem Indexblock: - 1 Block = 512 Byte - Z.B. 1 Zeiger = 4 Bytes - max. 128 Zeiger Datei max. 64 kb Verketten von Indexblöcken. Multilevel Index: - Beispiel: 2 Level - 128*128 Zeiger Zeiger - max. Dateigröße = 8 MB mehrere Levels z.b. in Unix I-Nodes (Typen: Dateien, Verzeichnisse, Links,...). Verwaltungs- Information Direkte Blöcke Blöcke mit 1er Indirektion Blöcke mit 2 Indirektionen 18

109 5.4 Dateisysteme Anforderungen: Persistenz, Zugang per Name, Schutz durch Zugriffsrechte,... Logische Formatierung = Initialisierung einer Partition mit einem Dateisystem. Datei (File): - Def.: Behälter zur dauerhaften Speicherung von beliebigen Informationen (Daten & Prgs). - Dateistruktur abhängig vom Dateityp. - Attribute: Name, Typ, Grösse, letzte Änderung, Zugriffsschutz,... Verzeichnis (Directory): - Vom Dateisystem verwaltete Datei zur Strukturierung externer Speichermedien. - Problem: Organisation der Dateinamen o flacher Namensraum alle Dateienamen müssen systemweit eindeutig sein. o hierarchische Organisation besser. Verweis (Link, Shortcut): - Direkter Zugriff, ohne navigieren zu müssen. - Links in Unix: o fest: Verweis auf I-Node. o symbolisch: Verweis auf Dateinamen. - Problem beim Löschen: ungültige Links. 19

110 5.4.1 Beispiel: Dateizugriff Unter Windows NT: #include <string.h> #include <windows.h> int main() { HANDLE DWORD char hfile; dwwritten; *data= hello world ; hfile = CreateFile( "c:\\test.txt", GENERIC_WRITE, // write access, NULL, // share mode & security CREATE_ALWAYS, // creation mode FILE_ATTRIBUTE_NORMAL FILE_FLAG_NO_BUFFERING, NULL // template file ); WriteFile(hFile, &data, strlen(data), &dwwritten, NULL ); // file handle // data + len // #bytes written // overlapped I/O } CloseHandle(hFile); 11

111 5.4.2 FAT16 Allokation durch abgesetzt Verkettung in FAT = File Allocation Table. Dateizuordnungstabelle: - auf den ersten Spuren einer Festplatte, - sicherheitshalber oft repliziert, - für jeden Block einen Eintrag. Alle Belegungseinheiten (Blöcke) einer Datei sind über die File Allocation Table verkettet: - = leerer Block. - $FFF7 = schadhafter Block. - $FFFF = letzter Block einer Datei. fff7 4 7 fff7 8 a ffff b ffff #1 #2 #3 #4 #5 #6 #7 #8 #9 #a #b Verzeichnis zeigt auf den ersten Block einer Datei, bzw. den ersten Eintrag in der Tabelle. Verzeichnisse sind ebenfalls Dateien. Größe einer Zuordnungseinheit: - variabel, aber fest für eine Partition. - üblich sind 512, 124, 496 Bytes. 111

112 FAT16: DOS, Win 3.x - 16-Bit max Cluster, - max. 2 GB pro Partition bei 32KB Cluster. FAT32: Windows 98/Me - 32-Bit keine 2 GB Beschränkung, - weniger Verschnitt durch kleinere Cluster. VFAT16/32: virtual FAT; lange Dateinamen. Weitere Eigenschaften: - FAT bietet keine Schutzmechanismen. - aber Daten unter vielen BS zugänglich. - optionale Kompression möglich. Aufbau eines FAT16 Dateieintrages: Sind in Verzeichnisdateien untergebracht. Offset Größe Inhalt 8 Dateinamen Sonderfälle für das 1. Zeichen: h: leerer Eintrag E5h: Eintrag wurde gelöscht 8 3 Dateinamen-Erweiterung 11 1 Attribute: Archiv-Bit, read-only, Verzeichnis/Datei, versteckt 12 1 Reserviert 22 2 Uhrzeit der Erstellung 24 2 Datum der Erstellung 26 2 Start Cluster 28 4 Dateilänge 112

113 5.4.3 I-Nodes in Unix I-Node Zentrale Struktur für Dateien. Aufbau eines I-Nodes: - mode (16-Bit): Dateityp und Berechtigungen. - link count : Anzahl harter Links auf die Datei. - owner gid : Projektgruppe des Eigentümers. - owner uid : User-ID des Eigentümers. - file size : Größe der Datei in Bytes. - Zeiger auf Daten- und Indexblöcke. - Datumseinträge,... I-Node mode link count owner uid owner gid file size... direct blocks (12) single indirect double indirect triple indirect index blocks data blocks Multilevel-Index Allokation (dreifach): - Direkte Datenblöcke, - und Extent-Blöcke per Index. 113

114 Dateityp: - Verzeichnis, - reguläre Datei, - Special File für Block Device, - Special File für Character Device, - Special Files für Pipes und Sockets. Verzeichnisse: - Implementiert als Dateien. - Kennzeichnung im Typfeld. - Eintrag: Dateinnamen & I-Node-Nummer. - Zusätzliche Attribute in I-Nodes der Dateien. - Beispiel: Verzeichnisstruktur für /usr/ms Wurzelverz. I-Node #6 /usr (Block 132) I-Node #26 1. Modus 6. Modus 1.. Grösse 1.. Grösse 4 bin ps... 7 dev ms lib 51 sf 9 etc 3 rg 6 usr 8 tmp Implementierung in Linux ext2. Journaling Dateisysteme (mit Logging): ReiserFS, ext3,

115 Plattenstruktur: Boot- Block Super- Block I-Nodes... Datenblöcke... - Boot-Block: Bootprogramm. - Super-Block: o Verwaltungsinfos: Blöckgröße, Liste freier Blöcke, Liste freier I-Nodes,... o Wird im Hauptspeicher gehalten. - I-Nodes: Liste fortlaufender I-Nodes. - Datenblöcke: folgen im Anschluß an I-Nodes. Zugriffsrechte Mit jeder Datei wird Besitzer und Gruppe, zu der eine Datei gehört abgespeichert. Als Gruppe wird normalerweise die primäre Gruppe des Besitzers verwendet. Ferner gibt es neun Zugriffsbits (r,w,x), für den Besitzer, die Gruppe und den Rest. Zugriffsbits bei Verzeichnissen: - r: Inhalt darf aufgelistet werden, - x: mit cd darf in das Verz. gewechselt werden, - x+w: neue Dateien dürfen angelegt werden. 115

116 Beispiel Zugriffsbits: Besitzer, Gruppe, Rest drwxr-xr-x 2 ms users 124 Feb 1 1:39 Mail/ -rwxr-x--- 1 ms users 224 Feb 1 1:36 hello.c -rw ms users 13 Feb 12 9:39 test Typ+Rechte #Links Größe Datum Name Spezialbit: Setuid Problembeispiel: - Nur root darf auf die Passwortdatei zugreifen. - User sollten gelegentlich ihr Passwort ändern, dürfen aber nicht auf die Datei zugreifen. Lösungsansatz: - Passwortprogramm gehört root und hat sein Setuid-Bit gesetzt. - Wird es vom User gerufen, so läuft es nicht etwa mit der Zugriffsberechtigung des Users, sondern mit derjenigen des Eigentümers (z.b. root). - Nur der Eigentümer kann das Setuid-Bit setzen (und immer auch root). - Es geht nicht um die Ausführungsberechtigung von /bin/passwd, sondern um den Zugriff auf /etc/passwd. - Verfahren patentiert (durch Dennis Ritchie). ls l zeigt bei den Benutzer-Zugriffsbits ein s (statt eines x) an. 116

117 Spezialbit: Setgid Bei der Ausführung des Programms wird immer die GID der Datei verwendet (und nicht die GID des aktuellen Benutzers). ls l zeigt bei den Gruppen-Zugriffsbits ein s (statt eines x) an. Bei Verzeichnissen bewirkt dieses Bit, daß neu angelegte Dateien der Gruppe des Verz. angehören (nicht der Gruppe des Benutzers). Spezialbit: Sticky Bewirkt bei Verzeichnissen, auf denen alle Benutzer Dateien ändern dürfen, daß nur eigene Dateien gelöscht werden dürfen. Zum Beispiel für /tmp. ls l zeigt bei allen gültigen Zugriffsbits ein t (statt eines x) an. 117

118 5.4.4 NTFS Allgemeine Eigenschaften Fehlertoleranz: - Transaktionskonzept (all-or-nothing). - Logging: undo/redo nach Absturz. - RAID: Diskfehler tolerieren. Sicherheit: - Zugriffskontrolle, - Verschlüsselung (EFS). Unterstützung für große Disks & Dateien 64-Bit für Blocknummern Mehrere Datenströme pro Datei Zugriff über datei:stream Alle Informationen des Dateisystems werden als Datei gespeichert, auch Metadaten. Optionale Kompression möglich. Volumes Unterteilung der Partition in Clusters. Cluster besteht aus einem oder mehreren fortlaufenden Sektoren. 118

119 Struktur eines Volumes: PBS MFT System- Files File Area PBS (Partition Boot Sector): - Boot-Programm (optional). - Sektoren pro Cluster. - Plattengeometrie,... MFT (Master File Table): - MFT ist auch eine Datei. - entspricht I-Node Tabelle. - pro Datei/Verzeichnis ein Eintrag. - beschreibt die Lage der Datenblöcke. Systemdateien: - MFT2: erste drei Zeilen der MFT - Log-Datei: Änderungen an MFT protokollieren - Volume-Datei: Größe & Name des Volumes, Versionsnummer der Part. - Bitmap-Datei: freie & belegte Cluster. - Boot-Datei: o Größe eines Clusters, o und eines MFT-Eintrags, o sowie Boot-Code (Kopie von PBS). - Bad-Cluster-Datei: vermerkt defekte Cluster. 119

120 Aufbau eines MFT-Eintrages: - Sammlung von Attributen. - standard info : verschied. Datumseinträge. - security descriptor : für Zugriffskontrolle. standard info file name security descr. data starting VCN 4 starting LCN no. of clusters VCN 3 4 VCN 1 2 VCN data data LCN LCN kleine Dateien wird direkt in MFT abgelegt. - große Dateien belegen mehrere Einträge in MFT (Base-Record enthält nur Zeiger). Adressierung: - über Cluster-Nummern (CN). - virt. CN (VCN): Adressierung in einer Datei. - log. CN (LCN): Adressierung in einer Partition. 12

121 Attribute: - Jede Datei ist ein Satz von Attributen. - Sämtliche Elemente, wie z.b. der Dateiname, die SicherheitsID, die Daten sind Dateiattribute. Aufbau eines Verzeichnisses: - Sammlung von Referenzen auf Dateien. - Dateinamen im Verzeichnis repliziert. - Referenziert über Position in MFT. - Sequentielle Suche in kleinen Verzeichnissen (die in einem MFT-Eintrag Platz finden). - Für umfangreiche Verzeichnisse ein B*-Baum indiziert nach Namen der Dateien. - Aber kein B*-Baum über alle Dateien auf einem Volume. Fehlertoleranz Nur die Integrität der MFT gewährleistet. Jede Modifikation an der MFT wird in eine Transaktion gekapselt. Transaktionen können wiederholt und rückgängig gemacht werden. Hierzu werden Update-Operationen einer TA in einer Logdatei protokolliert (Undo+Redo). Mehr Infos: Helen Custer, Inside Windows NT File System, Microsoft Press,

122 5.4.5 Memory-Mapped Files (Teil einer) Datei wird in den virtuellen Adreßraum eingeblendet. Speicherzugriffe auf diesen Bereich werden wie Dateizugriffe behandelt. Implementierung: - logischen Adreßraum reservieren. - Seitentabellendeskr. zeigen auf Disk-Blöcke. - bei einem Seitenfehler wird von Disk geladen. - Zurückschreiben beim Schließen der Datei. Beispiel: Unix #include <unistd.h> #include <stdio.h> #include <fcntl.h> #include <sys/mman.h> void main() { char * p; int fd; } fd = open("txt", O_RDWR); p = mmap(, getpagesize(), PROT_READ PROT_WRITE, MAP_PRIVATE,fd, ); printf("%8x\n", p); munmap(p, getpagesize()); close(fd); 122

123 5.5 Redundanz & Spiegelung RAID: - Redundant Array of Inexpensive Disks. - mehrere Levels def. von Universität Berkeley. - Software- und Hardware-Lösungen vorhanden. - Hardware sollte ebenfalls dupliziert werden. RAID Level : - keine Redundanz der Daten. - Daten werden auf mehrere Platten verteilt hohe Lese- und Schreibleistung. RAID Level 1: - z.b. Windows NT. - benötigt zwei Festplatten. - wird auch als Spiegeln bezeichnet. - Gesamtkapazität entspricht einer Platte. - Schreiboperationen immer auf beiden Disks. RAID Level 4: - Platten werden nicht mehr komplett gespiegelt. - Festplattenkapazität wird besser ausgenutzt. - Redundanz durch Checksumme (XOR). - Nachteil: Parity Platte ist Flaschenhals. RAID Level 5: - Paritätsinfo verteilt über alle Festplatten. - z.b. Windows NT. 123

124 6. Nebenläufigkeit 6.1 Prozesse und Threads Begriffliches Nebenläufig.: paralleler od. verzahnter Ablauf Parallelität: simultaner Ablauf. P1 P2 P3 P1 P2 P3 1 Prozessor 3 Prozessoren Ziele: Wartezeiten ausnutzen und den Eindruck der Gleichzeitigkeit erwecken. Programm: statische Darstellung eines Algo. Prozeß = Adreßraum + Thread(s) 124

125 Task = Aufgabe, die durch einen oder mehrere Prozesse erledigt wird. Thread (Leichtgewichtsprozeß, Ausf.-Spur): - gehört zu einem Adreßraum, - teilt sich Daten, Code u. BM, - separater Registersatz & Laufzeitkeller, - beschreibt dyn. Ablauf der Verarbeitung. Instruktionsteil Programm zähler Gemeinsame Daten Multithreading: mehrere Threads pro Prozeß Multitasking: Mehrere Tasks werden (scheinbar) gleichzeitig ausgeführt. Preemptives Multitasking: BS kann einer Task CPU jederzeit entziehen. Kooperatives Multitasking: Tasks müssen Prozessor freiwillig freigeben. 125

126 6.1.2 Prozeßmodelle Sequentiell: viele Module und ein Thread (~ Modula-2): Nebenläufig: - Viele Threads u. ein gemeinsamer Adreßraum (Light-Weight Process), - Viele Threads und pro Thread ein eigener Adreßraum (trad. Unix-Prozeß). Terminologie in Literatur nicht einheitlich. 126

127 Verwaltung durch einen Prozeßkontrollblock: - Charakteristika, - Zustandsinformation, - Verwaltungsdaten für BS. ID Programmname Speicherinformation Betriebsmittel Priorität User -ID Prozeßzustände: blockiert neu start debloc bereit freigeben zuordnen warten läuft stop beendet 127

128 Unix Viele Prozesse mit eigenem Adreßraum, aber jeweils mit nur einem Thread. Moderne Varianten bieten mehrere Threads pro Proz. (z.b. spezielle Bibliothek in Linux). Erzeugen von Prozessen durch fork : - Vater-Sohn-Beziehung, - erzeugt Kopie des aktuellen Prozesses. Hintergrundprozesse werden als Daemon bezeichnet (z.b. Spooler). Prozeßzustände in Unix: 128

129 Windows NT Prozeß: - ein oder mehrere Thread(s), - keine Verwandtschaft zw. Prozessen, - in BS-Verwaltung als Objekt implementiert. Dienste als Hintergrundprozesse: - siehe Dienste in Systemsteuerung, - kontrolliert durch Service Control Manager. Taskmanager zeigt Prozeßliste. Threadzustände: 129

130 Prozeß starten durch CreateProcess : #include <windows.h> main() { STARTUPINFO si; // window stuff PROCESS_INFORMATION pi; // handles } CreateProcess( MyProg.exe, // Programm (Pfad), // command line NULL, // process attributes NULL, // thread attributes FALSE, // inherit handle CREATE_NEW_CONSOLE, NULL, // env. Block NULL, // curr. Directory &si, // startup info. &pi // process info. );... 13

131 6.1.3 Multithreading pro Thread ein separater Adreßraum ist teuer: - Start ist aufwendig, - Kontextwechsel ist teuer (Cache & TLB), - kontextübergreifende Komm. ist langsam. mehrere Threads in einem Adreßraum Verwaltung durch Thread-Kontrollblöcke: ID Programmzähler Register Priorität Ausführungszeit Typische Einsatzgebiete: - Blockierendes Warten auf Ereignisse, - Benutzerschnittstelle am Leben erhalten, - gleichzeitige Bearbeitung von unabhängigen Aufgaben innherhalb eines Programmes. 131

132 Beispiel: Thread in Windows NT: #include "stdio.h" #include "windows.h" DWORD loop = 5*1*1; HANDLE hevent; HANDLE hchild; DWORD WINAPI Child( LPVOID lpparm ) { while (loop>){ --loop; }; printf("'child' signalisiert:\n"); SetEvent(hEvent); return ; } int main(int argc, char* argv[]) { hevent =CreateEvent(NULL,,, NULL); // defaultsecurity, autoreset, nonsignalled, noname hchild =CreateThread(NULL, 8, &Child, &loop,, ); // defaultsecurity, stack, procaddr, tparam, noname } printf( "'main' wartet auf Signal.\n" ); result =WaitForSingleObject( hevent, INFINITE ); printf( "Signal ist angekommen!\n\n" ); 132

133 Threads in Java: Sprachunterstützung für Threads. Java Virtual Machine bietet: - Green threads: emuliert durch JVM. - Native threads: abgebildet auf Betriebssystem. Thread-Funktionen in java.lang.thread: - Starten: start(); - Unterbrechen: suspend(); - Aufwecken: resume(); - Verzögern: sleep(); - Abbrechen: stop(); - Warten auf Beendigung: join(); Beispiel: class ExampleThread extends Thread { int param; ExampleThread (int p) { param = p; } public void run() { // was soll der neue Thread ausführen? } } public static void main(string[] args) { ExampleThread t = new ExampleThread(42); t.start(); } r 133

134 6.2 Koroutinen & Fibers Koroutinen in Modula-2: Explizit zwischen Prozessen wechseln: TRANSFER(VAR FromProz, ToProz: PROCESS) IOTRANSFER( VAR Handler, Interrupted: PROCESS; IntVec: CARDINAL); NEWPROCESS( proc : Proc; addr : ADDRESS; size : CARDINAL; VAR new : PROCESS); NEWPROCESS reserviert Speicher für Stack des neuen Proz. (addr=beginn & size=größe). IOTRANSFER erlaubt Interrupt-Handler in Modula-2 zu schreiben. Fibers in Windows NT: Für BS unsichtbare Threads. Anwendung verwaltet Fibers in eigener Regie und übernimmt Scheduling. API: CreateFiber, SwitchToFiber, 134

135 6.3 Kontextwechsel Dispatcher: Modul welches Kontextwechsel implementiert. Beim Umschalten auf einen anderen Thread muß der aktuelle Kontext gesichert werden: - hierzu dienen diverse Felder im PCB/TCB, - teuer ist das Umschalten des Adreßraumes Caches & TLB spülen - Beschleunigung durch HW-Unterstützung (z.b. Intel Tast State Segment). Gründe für einen Kontextwechsel: - Interrupt von HW, - Rechenzeit abgelaufen, - Warten auf Betriebsmittel, - freiwillige Abgabe der CPU. Umschalten muß teilweise verhindert werden, z.b. bei HW-Zugriff in Treibern. Reentranter Code, falls Umschalten erlaubt: - durch mehrere Threads gleichzeitig nutzbar. - keine Zustandsinformation in globalen Var. Bem.: Compiler berücksichtigt auch Kontextwechsel, aber Klassen- und Modulkontexte. 135

136 Ablauf: P1 P2 schlafend schlafend laufend laufend Status von P1 sichern Status von P2 laden Status von P2 sichern Status von P1 laden schlafend laufend 136

137 6.4 Ablaufplanung Scheduler: - regelt die Zuteilung des Prozessors - wählt nächsten Threads aus der Ready-Queue. Verdrängung = entziehen der CPU Ziele: - faire CPU Verteilung, - Wartezeiten bestmöglichst ausnutzen, - Verweilzeit von Programmen minimieren, - mögl. viele Threads pro Zeitintervall bedienen, - Antwortzeit f. interaktive Benutzer minimieren. Scheduler tritt in Aktion wenn ein Thread: - startet, - terminiert, - freiwillig die CPU freigibt, - auf ein Betriebsmittel wartet, - seine Zeitscheibe voll ausgenutzt hat Strategiealternativen ohne / mit Prioritäten ohne / mit Verdrängung (Preemption) unabhängig / abhängig von Bedienzeit 137

138 First Come First Served (FCFS) Bearbeitung der Threads in der Reihenfolge ihrer Ankunft in der Bereitliste. Prozessorbesitz bis zum Ende oder freiwilligen Aufgabe. Beispiel: - Laufzeit: t(t1)=24, t(t2)=3, t(t3)=3 - Ankunftsreihenfolge: T1, T2, T3 - durchschnittliche Wartezeit: (+24+27) / 3 = 17. T1 T2 T Ankunftsreihenfolge: T2, T3, T1 - durchschnittliche Wartezeit = 3! T2 T3 T Probleme: - Konvoi-Effekt = schnelle Threads hinter einem langsamen. - CPU-lastige Threads halten I/O-lastige auf. 138

139 Shortest Job First (SJF) Thread mit der kürzesten Bedienzeit wird als nächster bis zum Ende oder freiwilligen Aufgabe bearbeitet. Bevorzugt kurze Threads. Bedienzeit muß bekannt sein, lang laufende Threads können verhungern. Beispiel: - Laufzeit: t(t1)=7, t(t2)=4, t(t3)=1, t(t4)=5 - Ankunftszeiten: at(t1)=, at(t2)=1, at(t3)=2, at(t4)=3. - non-preemptive: durchschn. Wartezeit = 6,75 T1 T3 T2 T preemptive: durchschnittliche Wartezeit = 3,5 T1 T2 T3 T2 T4 T

140 Round Robin (Zeitscheibenverfahren) Ziel: gleichmäßige Verteilung der CPU. Bearbeitung der Threads in der Ankunftsreihenfolge. Nach Ablauf einer vorher festgesetzten Frist (z.b. 2-5ms) findet eine Verdrängung statt. Einreihung des Threads nach Ablauf des Zeitquantums in die Ready-Queue (sofern nicht blockiert). Verbreitete Strategie. Problem: richtige Wahl der Zeitscheibe. Beispiel: - Laufzeit: t(t1)=53, t(t2)=17, t(t3)=68, t(t4)=24 - Ankunftszeiten: at(t1)=, at(t2)=1, at(t3)=2, at(t4)=3. - Zeitscheibe = 2. T1 T2 T3 T4 T1 T3 T4 T1 T3 T

141 Prioritäts-Scheduling Jeder Thread erhält eine Prioritätsnummer. Threads mit der höchsten Priorität wird aus der Ready-Queue selektiert. Bem: SJF ist Prioritäts-basiertes Verfahren mit Priorität = erwartete Burst-Zeit. Implementierung: mehrere Ready-Queues: - Vordergrund- und Hintergrundprozesse, - oder für jede Priorität eine Warteschlange. Gruppen gleicher Priorität TCBs Problem Aushungern (Starvation): ein Thread mit niedriger Priorität bekommt die CPU nicht zugeteilt, da immer Threads mit höherer Priorität rechenbereit sind. Lösung: Altern (Aging): Priorität steigt mit der Wartezeit. 141

142 Problem: Prioritätsinvertierung Zustand blockiert wartet auf Thread C Prio=12 Ressource besitzt Thread A Prio=4 Thread B Prio=8 Zustand bereit Zustand rechnend - Thread C verhungert, trotz höchster Priorität. - Thread B dominiert die CPU. - Dadurch kommt Thread A nicht zum Zuge und kann daher die Ressource nicht freigeben. Thread C auf unbestimmte Zeit blockiert. - Lösung Altern mit der Wartezeit: o Priorität von Thread A steigt langsam an. o Sobald sie >8 ist, löst sich das Problem. 142

143 6.4.2 Strategien für Echtzeitsysteme Echzeitsysteme müssen def. Zeitschranken einhalten, auch in Fehlersituationen. Für krit. Anwendungen (z.b. Kernkraftwerk). Threads erhalten Sollzeitpunkte (Deadlines). - Voraussetzung: Laufzeit vorab bekannt. - Unterscheidung bei Sollzeitpunkten zwischen: o Harter Echtzeit: Verletzung bedeutet Ausfall des Systems (nicht tolerierbar). o Weicher EZ: Qualitätseinbußen bei Verletzung, aber in Grenzen tolerierbar. Keine Desktop-Betriebssysteme, sonder mehr für eingebette Systeme (z.b. OSEK). Offline-Scheduling Scheduling vor der eigentlichen Ausführung zur Vermeidung von Scheduling-Overhead. Vorberechnung eines vollständigen Ausführungsplans in Tabellenform. Einfacher Tab.zugriff während Ausführung. Sinnvoll für harte Echtzeitanforderung. 143

144 Earliest Deadline First (EDF) Verbreitete Strategie. Threads mit Ausführungsfristen. Thread mit engster Frist wird bevorzugt. Beispiel: Earliest Deadline First - Laufzeit: t(t1)=4, t(t2)=5, t(t3)=3 - Fristen: f(t1)=1, f(t2)=7, f(t3)=17 - non-preemptive; gleiche Ankunftszeit. T2 T1 T preemptive: Ankunftszeiten: at(t1)=, at(t2)=1, at(t3)=2. T1 T2 T1 T Dynamischer Einplanbarkeitstest notwendig, wenn ein neuer Thread hinzukommt. CPU Auslastungsgrenze 1%. 144

145 Rate Monotonic Scheduling (RMS) Zur Beschreibung periodischer Systeme: - hohe Priorität für Aktivitäten mit hoher Freq. - niedrige Prio. für Akt. mit kleiner Frequenz. Ende der Periode entspricht Deadline. Voraussetzung: Threads sind unabhängig voneinander. Vorteil: minimale Verzögerung hochfreq. Aktivitäten Nachteil: Zerstückelung niederfrequenter Akt. wegen höherer Anzahl von Kontextwechseln zu Threads mit höherer Priorität. Situation, die durch Verzögerung eines höher priorisierten Threads, zu einem gültigen Ablauf führen, sind nicht lösbar. CPU Auslastungsgrenze 82,8%. Nicht optimal, aber große Bedeutung in Echtzeitsystemen. 145

146 6.4.3 Mehrprozessor-Aspekte Wahllose CPU-Zuteilung schlecht. Hat Thread t zuletzt Prozessor p genutzt, so besteht die Chance, dass noch wesentliche Teile seines Adressraums im Cache von p vorhanden sind. Einführung der Prozessor-Affinität: TCB wird um zuletzt benutzte CPU erweitert. Nachteil: Aufweichung von Prioritäten Leerlaufproblem Falls alle Threads warten ist die CPU frei In dieser Zeit läuft ein Leerlauf-Thread: - darf nicht anhalten, - hat geringste Priorität, - muß jederzeit verdrängbar sein. Im Leerlauf können diverse Aufgaben bearbeitet werden: - Prüfungen, - Garbage Collection, - Heap Kompaktifizierung. 146

147 6.4.5 Scheduling in Unix -m -1 Systemprozesse n Benutzerprozesse Benutzerprozesse haben eine statische Basispriorität von (erhöhbar mit nice ). Dynamische Priorität: - jede Sekunde angepaßt nach der Formel: dyn_prio := base_prio + recent_cpu_usage / 2 - Prozessornutzung gemessen in Uhr-Ticks. - Vorher wird schrittweise vergessen, wie groß die Prozessornutzung war: recent_cpu_usage := recent_cpu_usage / 2 starke CPU-Nutzung schlechten Priorität. 147

148 Idee: - Rechenintensive Prozesse werden benachteiligt. - I/O-intensive Prozesse werden bevorzugt! - Sie belegen den Prozessor nur kurz, um einen E/A-Auftrag abzusetzen. - Man erreicht dadurch eine hohe Parallelität zwischen den aktiven Rechnerkomponenten (CPU und Peripherie). Round Robin (z.b. 1ms bei BSD Unix) als Scheduling-Strategie. Linux: Verwendet eine Mischung aus verschiedenen Schedulingklassen. - SCHED_FIFO: FiFio-Strategie. - SCHED_RR: Zeitscheiben-Verfahren. - SCHED_OTHER: traditionelles Unix-Verfahren Scheduling für alle Klassen mit mehreren Queues, je nach Priorität. SCHED_FIFO und SCHED_RR: - statische Priorität. - für Echtzeitprozesse. - reserviert für Superuser. - FiFo unlimitierte CPU-Zeit. 148

149 6.4.6 Scheduling in Windows NT Verdrängendes, auf Zeitscheiben basierendes Scheduling mit Prioritäten: - Workstation-Zeitscheibe: 2-3 ms. - Server-Zeitscheibe: ms. 32 Prioritätsklassen (32 FiFo-Queues): - Leerlaufthread:. - Variable Priorität: Echtzeitpriorität (statisch). höchste (31) geringste (16) höchste (15) Echtzeitpriorität geringste () variable Priorität 149

150 Richtige Echtzeitfähigkeiten nicht vorhanden, sondern nur höhere Prioritäten. Prioritätsklasse berechnet sich aus der Prozeßklasse und dem relativen Thread-Prioritätslevel (von 2 bis +2). Anpassung von Prioritäten durch Scheduler: - Priorität wird um 1 erniedrigt, falls Zeitscheibe komplett verbraucht. - Wenn E/A-Auftrag beendet ist, auf den ein Thread gewartet hat, so wird dessen Priorität erhöht (1-8 Level) = Priority Boost. - Nach einem Priority-Boost, wird nach jedem Ablauf einer Zeitscheibe, die Priorität wieder um 1 erniedrigt, bis zum Ausgangswert. Prioritätserhöhung, wenn der Thread lange (~ 3 sec.) in der Bereitliste war: - vermeidet Verhungern. - und Prioritätsinversion. Zeitscheibe kann für Vordergrundprozesse angepaßt werden ( Systemsteuerung): doppelt oder dreifach lange Zeitscheiben. CPU-lastige Threads neigen zu niedrigeren Prioritäten und I/O-lastige zu höheren. Prioritätsklasse über Taskmanager anpaßbar. en 15

151 7. Synchronisierung 7.1 Lese/Schreibkonflikt = race condition: wenn nebenläufige Threads auf gemeinsamen Variablen schreiben, so ist das Ergebnis nicht deterministisch: Thread-1 Thread t Synchronisierung der nebenläufigen Threads macht das Resultat deterministisch: Thread-1 wait() Thread-2 signal() 2 t 1 1 Bemerkung: - Nebenläufigkeit führt zu einer implizitzen oder expliziten gegenseitigen Beeinflußung. - Synchronisierung notwendig. 151

152 7.2 Serialisierung mit Signal/Wait: Oft muß ein Thread warten, bis ein anderer Thread einen vorgesehenen Punkt erreicht: - warten auf richtige Drehzahl der Platte, - warten auf vorherige DB-Transaktion, - Berechnung im Koprozessor, - nachstehendes Beispiel "Warten auf Puffer", - warten bis der Partner einen kritischen Bereich verlassen hat Wartefunktion wait(event) suspendiert den aktuellen Thread solange bis das Ereignis event gemeldet wird. Die Funktion signal(event) meldet das Ereignis event. Der signalisierende Thread läuft ungehindert weiter. Ein signal-aufruf lässt maximal einen wartenden Thread weiterlaufen. Wartet keiner, so geht der Aufruf verloren. Mit jeder Ereignisvariablen ist auch eine Queue für wartende Thread verknüpft. Eventuell gleichzeitig auf verschiedene Ereignisse warten: - WaitForMultipleObjects(, &Handles, ). 152

153 7.3 Kritische Abschnitte = Critical Regions: Programmabschnitte, die auf gemeinsame Variablen zugreifen und deshalb einer Synchronisierung bedürfen. Unterschiedliche Programmabschnitte können dieselben Variablen nutzen. => Nicht der Programmabschnitt sondern das Variablenobjekt wird geschützt. Ziel: wechselseitiger Ausschluss (mutual exclusion) = max. 1 Thread in krit. Abschnitt. Fehlerhafte Lösung: while (busyflag) {}; -> busyflag=true; count++; busyflag=false; <- while (busyflag) {}; busyflag=true; count++; busyflag=false; - Dies ist keine Lösung, weil "Testen & Setzen" des Flags hier wieder nicht atomar geschieht. Bem.: Threadprioritäten u. U. verletzt. Das Schlüsselwort "synchronized" definiert in Java einen Kritischen Abschnitt: - einzelne Anweisung oder Anweisungsgruppe, - statische oder dynamische Methode, - ganze Klasse. 153

154 7.3.1 Programm "Incrementer.java": Zwei Threads inkrementieren gemeinsame Variablen: - auf dem Umweg über eine Zwischenvariable, - Variable "asyn" ohne Synchronisierung, - Variable "sync" mit Synchronisierung: public class Incrementer extends Thread{ static Incrementer lnx,rxz; static long sync=; static long asyn=; long count=1*1; }} public static void main(string[] s){ lnx = new Incrementer(); rxz = new Incrementer(); lnx.start(); rxz.start(); } public void run(){ long zwisch; // force non atomic while (count-- > ) { zwisch=asyn+1; asyn=zwisch; synchronized(lnx) { zwisch=sync+1; sync=zwisch;}; } System.out.println("asyn: " + asyn); System.out.println("sync: " + sync); Synchronisierung ist in Java nur auf Objekte möglich. Hier z.b. auf Objekt "lnx" - ersatz weise für die Variablen (asyn, sync). 154

155 Ausgabe von Incrementer z.b.: asyn: sync: asyn: sync: 2 Wenn eine Inkrementierung unterbrochen wird und der andere Thread ebenfalls inkre mentiert geht eine Inkrementierung verloren. lost update problem Ausnahmsweise und je nach Last und Laune des Betriebssystems läuft das Programm auch ohne Verlust: asyn: sync: asyn: 2 sync: 2 155

156 7.4 Wechselseitiger Ausschluss Peterson's Algorithmus Realisiert wechselseitigen Ausschluß nur abgestützt auf sequentiellen Speicherzugriff: Program Peterson; var latest: (first,secnd); p1tries, p2tries: Boolean; Process Process1; begin repeat p1tries:= true; latest:= first; while p2tries and latest=first do { loop} ; KritischeRegion1; p1tries:= false; OtherStuff1 until false; end { Process1 }; Process Process2; begin repeat p2tries:= true; latest:= secnd; while p1tries and latest=secnd do { loop} ; KritischeRegion2; p2tries:= false; OtherStuff2 until false; end { Process1 }; Begin p1tries := false; p2tries := false; parbegin Process1; Process2 parend end { Peterson }. 156

157 Fall A: p1 kommt zuerst und p2 kommt später. p2 muss warten bis p1 die Warnungsvariable p1tries freigibt. p1tries latest p2tries Fall B: p2 kommt als einziger und muss nicht warten bis p1 die Warnungsvariable p1tries freigibt. p1tries=false latest p2tries Bemerkung: - auf mehrere Threads erweiterbar. - benötigt keine HW-Unterstützung. - SW-Erweiterungen ebenfalls unnötig. 157

158 7.4.2 Atomare Maschinenoperationen Viele CPUs haben Test&Set-Instruktionen: - für atomare bzw. unteilbare Bustransaktion, - lesen eines Speicherwortes, - Speicherwort schreiben: Speicher Bus Prozessoren & DMA Unteilbare Bustransaktion: - reservieren des Speicherbusses, - kein Zugriff durch andere CPUs, - Cache-Konsistenz gewährleisten, - keine Interrupts an der eigenen CPU, - kein Zugriff durch DMA oder Bus-Master. Assembler-Fragment (hypothetisch): locked WORD ; = nicht gesperrt wait: TestSet 1 ; testen und setzen JumpH wait ; loop while high Bei Uniprozessoren genügt es meist, Unter brechungen zu unterdrücken: Intel (CLI, STI). 158

159 7.4.3 Semaphor-Variablen sem> sem= Warteschlange Wartende Threads zu Semaphor. Binäre Semaphore mit Werten oder 1. Zählende Semaphore mit Werten.. n. Semaphor-Operationen: - Initialisieren: InitSem( semvar ), - Prüfen: P( semvar ), - "Versenden": V( semvar ), - Originalsprache Holländisch, - vorgeschlagen durch E. Djikstra. P(semVar) & V(semVar) sind etwa aequivalent zu Wait(ev) & Signal(ev). Allerdings verpuffen unerwartete Signale hier nicht. 159

160 Beispiel: Synchronisierung mit Semaphor Semaphor-Variable dient hier dazu, die Anzahl Nutzer einer Ressource zu beschränken: #include <windows.h> #define userlimit = 2; HANDLE hsem; void SomeUser() { // =P(); WaitForSingleObject(hSem,INFINTE); // kritischer Abschnitt use_resource(); // =V(); semaphor,release-cnt., before-cnt. ReleaseSemaphore(hSem,1,NULL); END SomeUser; int main() { // security descr., start-cnt., max.-cnt., name hsem=createsemaphore(null,, userlimit,null); } 16

161 Realisierung atomarer Semaphoroperationen Semantik für P(semVar): if semvar > then semvar:=semvar-1 else { warten auf V(semVar) } Semantik für V(semVar): if { kein Prozess wartet auf semvar } then semvar:=semvar+1 else { wartenden Prozess anstossen } P und V als atomare bzw. unteilbare Operationen realisieren, sonst entstehen Nicht- Determinismen: Zur Realisierung von Semaphor-Variablen verwendet man i. d. R. eine Interruptsperre oder besondere Test&Set-Instruktionen. Für den Fall von scheinbarer Nebenläufigkeit auf einem Uniprozessor genügt es die Priorität der P & V-Routinen soweit zu erhöhen, daß eine Unterbrechung nicht mehr möglich ist. 161

162 7.4.4 Monitore C. A. Hoare und P. B. Hansen, Sprachkonstrukt für Synchronisierung serially reusable Module Die Monitor-Prozeduren garantieren: - nur ein Thread jeweils im Monitor, - kein externer Zugriff auf Monitorvariablen, - auto. Freigabe des Monitors beim Rücksprung: Shared Resource Monitor- Modul Proc Proc Im Vergleich dazu sind Semaphore etc. lowlevel Sprachelemente: - Risiko von Programmierfehlern, - ohne P() kein gegenseitiger Ausschluß, - ohne V() eventuell Verklemmung. 162

163 Incrementer-Monitor Beispiel in "Concurrent Pascal": monitor Incrementer; var zaehler: integer; procedure PlusEins; { P(IncSem) implizit } begin zaehler:= zaehler+1 end { PlusEins }; { V(IncSem) implizit } procedure PlusZwei end; begin zaehler := end { Incrementer }. Die Laufzeitumgebung sorgt mit Unterstützung des Compilers dafür, daß sich nur ein Thread im Monitor befindet. Realisiert eine geschützte kritische Region oder auch mehrere verbundene. Passives Programmelement ähnlich wie Modula-2 Module: - Kapselung ("Information hiding"), - Module-Initialisierung. 163

164 Erweiterung: Warten im Monitor Zusätzlich zum impliziten P & V auch noch Signal & Wait in Monitoren drin erlaubt. monitor PrintMon; var printerbusy: Boolean; printerfree: Condition; procedure ReservePrinter; begin if printerbusy then wait( printerfree); printerbusy:= true end { ReservePrinter}; procedure ReleasePrinter; begin printerbusy:= false; signal( printerfree); end { ReleasePrinter}; begin printerbusy:= false end { PrintMon}. 164

165 Warten im Monitor würde zur Blockierung führen. wait(<condition>) bewirkt deshalb eine Verdrängung des Threads nach aussen. Aus didaktischen Gründen nicht einfach wait( printerfree). Diskussion um verschachtelte Monitoraufrufe: - bleiben eingekellerte Monitore blockiert? - oder wird ein Monitor beim Aufruf des nächsten freigegeben? Signal( thiscondition ) nur am Prozedurende: - Aufruf aktiviert anderen Thread im Monitor - und aktueller Thread verläßt Monitor. wenn Awaited( thiscondition) dann Resume(thisCondition) sonst Release(thisMonitor); 165

166 7.4.5 Message Passing Eine Nachricht ist eine Verallgemeinerung eines Signales. Sie enthält neben der Ereignis-Information auch noch Daten. Empfänger wartet auf eine Nachricht: receive() anstelle von wait(). Sender sendet eine Nachricht: send() anstelle von signal(). Typisch besonders in Verteilten Systemen: - RPC, Remote Procedure Call, - RMI, Remote Method Invocation, - Socket-gestützte Kommunikation... Socketkommunikation mit den Urfunktionen ("Primitives"): - Send( SocketID, Message), - Receive( SocketID, Message), - Blocking/Nonblocking Send Alternativ: Kommunikation mit Hilfe eines gemeinsamen Speicherbereichs (lokal oder verteilt) bzw. gemeinsamer Variablen. 166

167 7.5 Klassische Problemstellungen Erzeuger/Verbraucher-Problem int buffer[n]; // Puffer int in,out; // Pufferzeiger semaphore full=, empty=n, mutex=1; Erzeuger: int item_w; for (;;) { produce(&item_w); P(empty); P(mutex); buffer[in]=item_w; in=(in+1)%n; V(mutex); V(full); } // noch Platz im Puffer? // Eintritt in krit. Abschnitt // ein weiterer Eintrag belegt Verbraucher: int item_r; for (;;) { P(full); P(mutex); item_r=buffer[out]; out=(out+1)%n; V(mutex); V(empty); consume(item_r); } // Daten im Puffer? // Eintritt in krit. Abschnitt // ein Eintrag wird frei 167

168 Schutz eines Puffers zwischen vielen parallelen Konsumenten- und Produzententhreads. Bem.: Bei nur je einem Konsumenten und Produzenten können die Event-Variablen noch als Boolean realisiert werden Leser/Schreiber mit Semaphore N Leser oder 1 Schreiber parallel erlaubt. int readcount=; // Anzahl aktiver Leser semaphore mutex=1, wrt=1; Leser: P(mutex); readcount++; if (readcount==1) P(wrt); V(mutex); reading(); P(mutex); readcount--; if (readcount==) V(wrt); V(mutex); Schreiber: P(wrt); writing(); V(wrt); // kein Leser aktiv? // mit Schreiber sync. // kein Leser mehr aktiv? // Schreiber zulassen // jeweils nur 1 Schreiber 168

169 7.5.3 Dining Philosophers N Philosophen sitzen um einen Tisch; sie denken und wollen Spaghetti essen. Zum Essen benötigt jeder zwei Gabeln gleichzeitig. Lösungsansatz 1: - Funktioniert, aber wenig Parallelität Philosoph i: think(); P(mutex); take_fork(i); take_fork((i+1)%5); eat(); put_fork(i); put_fork((i+1)%5); V(mutex); // linke Gabel nehmen // rechte Gabel nehmen // linke Gabel ablegen // rechte Gabel ablegen 169

170 Lösungsansatz 2: - state : THINKING, HUNGRY, EATING. - Essen nur mögl., wenn kein Nachbar gerade isst. - N Semaphore S[]: blockieren hungriger Philosophen, falls Gabeln in Gebrauch. - LEFT=(i-1)%N; RIGHT=(i+1)%N; take_ Philosoph i: think() take_forks(i); eat(); put_forks(i); // beide Gabeln aufnehmen // beide Gabeln ablegen take_forks(i) { P(mutex); state[i]=hungry; test(i); // Versuch beide Gabeln zu nehmen V(mutex); P(S[i]); // blockiere, falls Gabeln nicht frei waren } put_forks(i) { P(mutex); state[i]=thinking; test(left); // will linker Nachbar Gabel? test(right); // will rechter Nachbar Gabel? V(mutex); } test(i) { // beide Gabeln frei? if (state[i]==hungry && state[left]!=eating && state[right]!=eating) state[i]= EATING; V(S[i]); } 17

171 7.6 Verklemmungen Verklemmung (engl. Deadlock): zwei oder mehrere Threads sind blockiert, weil sie Ressourcen besitzen, die von einem anderen blockierten Thread benötigt würden. Verklemmungsgefährdete Ressourcen: Hauptspeicher, Drucker, Bandstationen,... Beispiel: System mit drei Bandstationen Drei Threads verlangen erst eine Bandstation und später noch eine zweite. Günstiger Verlauf, die Threads terminieren: T1 T2 T3 r1 r2 r3 wartet auf Bandstation 171

172 Ungünstig, kein Thread terminiert: T1 T2 T3 r1 r2 r3 wartet auf Bandstation Deadlock ist möglich, aber nicht zwingend Wartegraph Ein gerichteter Graph mit den Threads als Knoten und Wartebeziehungen als Pfeile heißt Wartegraph (engl. wait-for graph). Eine Verklemmung ist charakterisiert durch einen Zyklus im Wartegraphen: T3 T1 wartet auf wartet auf direkter Deadlock T2 T1 wartet auf wartet auf indirekter Deadlock T2 172

173 7.6.2 Notwendige Bedingungen Ist eine dieser Bedingungen verletzt, so ist keine Verklemmung möglich: 1. wechselseitiger Ausschluss: Die betroffene Ressource ist nicht gemeinsam benutzbar. 2. Halten und Warten: Wartender Thread besitzt eine Ressource, während er auf weitere wartet. 3. Keine Verdrängung: Ressourcen können einem Thread nicht entzogen werden. 4. Zirkuläre Wartesituation Gegenmaßnahmen Vorbeugen (prevention). Vermeiden (avoidance). Entdecken (detection). Auflösen (resolution). Bemerkung: - die meisten Betriebssysteme ignorieren dieses Problem (Unix & Windows NT). - NT: Timeout bei WaitForSingleObject. 173

174 7.6.4 Verklemmungsvorbeugung Methoden um zu verhindern, dass eine der vier Verklemmungsbedingungen zutrifft. Summenbelegung (preclaiming): - sämtliche jemals benötigten Ressourcen werden einmalig zu Beginn angefordert. - unökonomisch & Bedarf schwer abschätzbar. Totalfreigabe bei jeder Belegung: - auch hier wird eine Anforderung aus einem besitzlosen Zustand vorgenommen und somit eine zirkuläre Wartesituation vermieden. Thread Belegen (r1, r2) Freigeben (r1, r2) Belegen (r3) Freigeben (r3) Belegen (r1, r2) evt. zwangsweise Belegung gemäß vorgegebener Ordnung: - Zyklen werden durch das Einhalten einer vorgegebenen Ordnung vermieden. 174

175 - Beispiel: Ressourcen seien geordnet (r1, r2,...) Thread -1 Thread -2 Belegen ( r1 ) Belegen ( r3 ) Belegen ( r2 ) Belegen ( r3 ) Belegen ( r4 ) Belegen ( r5 ) Verklemmungsvermeidung Für jede einzelne Ressourcenanforderung wird entschieden, ob dadurch ein Deadlock auftreten kann. Voraussetzung: Restanforderung aller Threads muss bekannt sein. Im ungünstigsten Fall werden alle Restanforderungen gleichzeitig gestellt. Könnten diese zu einem Zeitpunkt alle erfüllt werden, so heißt die aktuelle Situation sicher, andernfalls unsicher. 175

176 Beispiel: Bankier Algorithmus (Dijkstra) Jeder Thread nennt die maximale Anzahl Bandstationen, die er benötigt (max[i]=kreditrahmen). Jeder Thread leiht sich eine Anzahl Stationen aus (loan[i] =N E Für Ressourcen mit mehrfachen Instanzen. Wie ein Bankier beurteilt das BS die Kreditwürdigkeit der einzelnen Threads (max) und verteilt entsprechend die Ressourcen (loans). Sicherer Zustand (12 Stationen): Anleihe Kredit Thread A 1 4 Thread B 4 6 Thread C 5 8 Verfügbar 2 Deadlock unsicher sicher Vergabe einer Station an B ist zulässig. Vergabe an A oder C ist unzulässig und führt zu einem unsicheren Zustand. 176

177 Unsicherer Zustand (12 Stationen): Anleihe Kredit Thread A 1 4 Thread B 4 6 Thread C 6 8 Verfügbar 1 Für keinen der beteiligten Threads kann die Terminierung garantiert werden. Hoffentlich gibt bald einer der Threads wieder eine Einheit zurück. Beurteilung: Verhinderung von Verklemmungen trotz Bedingungen 1 bis 4. Feste Anzahl von Benutzern und verfügbaren Ressourcen (Defekte nicht einkalkuliert). Allozierung und garantierte Rückzahlung in endlicher Zeit genügt nicht für Echtzeit- Systeme. Vor.: Threads voneinander unabhängig. Bedarf muß zu Beginn der Verarbeitung angemeldet werden. 177

178 7.6.6 Verklemmungsentdeckung Sind die Restanforderung nicht bekannt, so kann keine Vermeidung durchgeführt werden. Bei Entdeckungsstrategien erlauben das Auftreten von Deadlocks. Der Bankier-Algorithmus kann auch hier eingesetzt werden, wenn die Restanforderungen durch die akt. Anforderungen ersetzt werden. Es müssen alle Threads einbezogen werden. Aufruf: bei jeder Belegung, periodisch, im Leerlauf, bei Verdacht, Verklemmungsauflösung Durchbrechen einer zirkulären Wartesituation. Falls ein Entzug von Ressourcen nicht möglich ist, so muss mindestens ein Prozeß / Thread abgebrochen werden. 178

179 7.7 Interprozesskommunikation Klassifikation Synchron/asynchron: - synchron: Sender wird bis zur Auslieferung der Nachricht blockiert. - asynchron: Sender arbeitet sofort weiter. Gepuffert/ungepuffert: - gepuffert: u.u. mehrere Nachrichten bündeln. - ungepuffert: direktes Empfangen/Übetragen. Verbindungsorientiert/verbindungslos: - verbindungsorientiert: expliziter Verbindungsaufbau vor der Kommunikation notwendig. - verbindungslos: Zieladresse in jeder Nachricht; Multicast und Broadcast mögl. Meldungs-/autragsorientiert: - Meldung: Sender wird bis zur Bestätigung der Meldung blockiert. - Auftrag: Sender wird bis zur Beendigung des Auftrages blockiert. Kommunikationsarten: - nachrichtenbasiert: Socket, RPC, RMI, Corba,... - speicherbasiert: (Distributed) Shared Memory. 179

180 7.7.2 Beispiel: Linux Interprozesskommunikation (IPC) in Unix- Systemen umfasst: - Warten auf externe Signale - Steuerung nebenläufiger Prozesse, - Übergeben von Daten und Nachrichten, - Synchronisierung des Ressourcenzugriffs. Dazu wird eine Vielfalt von Mechanismen unterstützt: Resource Sharing Synchroni- Sierung Verbindungslose Nachrichten Verbindungs orientierte Nachrichten im Kern zwischen Prozessen im Netz Datenstrukturen, Shared Memory Puffer Dateien Semaphore, Semaphore, CLI/STI File Locking, (NFS Files) Queues Lock Datei Signale Unix-Domain Datagr., Signale, Queues UDP Sockets (Named) Pipes, Unix-Domain Streams TCP Sockets Zusätzlich System V IPC: Message Queues, erweiterte Semaphore und Shared Memory. Der Linux Kern läuft in einem Adressraum und im kooperativen Multitasking Modus. Damit vereinfachen sich die IPC-Verfahren. 18

181 Kommunikation über Signale Signale sind kurze wichtige Meldungen. 32 vordefinierte Systemsignale: - SIGTERM: Terminierungsaufforderung, - SIGKILL: ultimative Terminierung, - SIGUSR1: für Anwendungen,... Signalverarbeitung durch Handler: - Default-Handler im Kern. - für Anwendungen optional: #include <stdio.h> #include <signal.h> // Signal auslösen mit: kill SIGUSR1 pid void myhandler(int parm) { printf( received SIGUSR1\n ); } int main() { struct sigaction action,old; action.sa.flags=; sigemptyset(&action.sa_mask); action.sa_handler=myhandler; } // Signaltyp, neuer Handler, alter Handler sigaction(sigusr1, &action, &old); sleep(6); sigaction(sigusr1, &old, NULL); 181

182 Kommunikation über Dateien Konkurrierende Schreibzugriffe auf Dateien werden durch Open/Close-Routinen geregelt. Eventuell nur im Read-Only Mode öffnen. Wird die Datei im Multiple Writer Modus geöffnet, so riskiert man Inkonsistenzen. Sperren ganzer Dateien: - per Lock Datei. - Oder mit Aufruf flock(). Sperrung von Dateibereichen: int sys_fcntl( unsigned int filedeskriptor, unsigned int command, /* F_GETLK,... */ struct flock * filelock ) ; Datenstruktur im Betriebssystem: FileDeskriptor FileLock FileLock FileLock struct flock: - Lesesperre, Schreibsperre, Dateibereich, PID. 182

183 Kommunikation über Pipes Klassische IPC Methode unter Unix. Für Kommunikation zw. verwandten Proz. Implizite Erzeugung einer anonymen Pipe mit der Befehlszeile: % ls -l more Nutzung einer benannten Pipe (named pipe) mit Befehlszeilen: % mkfifo nmpip % ls -l >nmpip & more <nmpip Lesen und Schreiben auf eine benannte Pipe wie auf eine Datei (halbduplex). Zusätzlich jedoch mehrfache Leser und Schreiber möglich: named pipe writers readers 183

184 Beispiel: Unix-Pipe zwischen Vater und Sohn #include <stdio.h> #include <unistd.h> int main() { char data[8]; int rb; // nr of read bytes in pipe_ends[2]; // handles: read=; write=1 } pipe(pipe_ends); if (fork()==) { // child process close(pipe_ends[1]); // code write port rb=read(pipe_ends[], data,8); data[rb]= \ ; // terminate string printf ("%s\n",data); close(pipe_ends[]); // close read port } else { // father process close(pipe_ends[]); // close read port write(pipe_ends[1],"hello",5); close(pipe_ends[1]); // close write port } 184

185 7.7.3 Beispiel: Windows NT Vielfältige Mechanismen: - Mutex, Events, Semaphore, - Named Pipes, Mailslots, - Shared Memory, - LPC & RPC. Local Procedure Call Prozeduraufruf über Adressraumgrenzen hinweg, abgebildet auf Nachrichtenübertragung. LPC Varianten: a) Nachricht an Port-Objekt im Server, b) Zeiger auf gemeinsamen Speicher senden, c) "Quick LPC". Nachrichtentransport zum Port-Objekt im Server-Subsystem (Fall a,b): OpenConnection Connection Port Klient connected service reply Server Subsystem service request 185

186 Quick LPC: Komponenten, jeweils pro Klient: - 64 KB gemeinsamer Speicher, - eigener Server-Thread, - ein Event-Paar. Vermeidet Communication-Ports mit Queues. Nachrichten und Daten in Shared-Memory. Executive signalisiert die Events. Bewertung: - schnelle Signalisierung, - Speicheroverhead für die Threads. Klient Server Subsystem 186

187 8. Ein-/Ausgabe 8.1 Peripherie PC Busstrukturen: CPU USB IDE UDMA AGP Host-PCI Brücke PCI-ISA PCI ISA Speicher - Host-PCI Brücke (auch Nordbrücke) als Daten- Drehscheibe zw.: Frontside-, PCI-, AGP-Bus. - PCI: 32/64 Bit; Bandbreite: Mbyte/s. - PCI-ISA Brücke (auch Südbrücke) zur Anbindung von USB-, IDE-, ISA-Bus. - ISA: 8/16 Bit; Bandbreite: 8-16 Mbyte/s. 187

188 Datenübertragung: Programmed I/O: - CPU überträgt wortweise Daten aus dem Hauptspeicher in Datenregister des Gerätes. - wird in der Regel nicht verwendet, da teuer. Direkter Speicherzugriff: - DMA für ISA-Geräte - Busmaster für PCI-Geräte. - CPU initiert nur den Transfer. CPU RAM Gerät Steuerung: CPU startet einen E/A-Auftrag. Nach Beenden eines E/As muss der Prozessor informiert werden: - Polling: CPU kann Statusregister des Geräts gelegentlich prüfen, was aber ineffizient ist. - Interrupt: Am Ende des E/As löst das Gerät eine Unterbrechung aus (üblicher Ansatz). 188

189 8.2 Unterbrechungen Ein Programm wird unterbrochen zugunsten einer Aufgabe mit höherer Priorität: Der Zustand des unterbrochenen Programmes wird aufgezeichnet und nach Abschluß der Unterbrechung wiederhergestellt. Mit der Ausführung des unterbrochenen Programmes wird später unmittelbar nach der Unterbrechungstelle fortgefahren: Anwenderprogramm Unterbrechungsroutine Device Ret.-Adr. Flags Stack 189

190 Lesen & Schreiben aus externen Gerätepuffern: - Tastatur, Serielle Datenleitung, - Festplattenkontroller, - Netzwerkkarte, - Strahlrücklauf... Behandlung von internen Fehlersituationen: - allgemeine Speicherschutzverletzung, - ungültige Maschineninstruktion, - Paritätsfehler im Hauptspeicher, - arithmetische Fehlersituation, - ausgelagerte Speicherseite, - Debugging... Explizite Anforderung von DOS-Diensten: - Assemblerinstruktion INT <intcode>, - DOS-Dienste über INT 21h. BIOS-Dienste anfordern: - INT 1h Videokarte - INT 11h Konfiguration feststellen - INT 12h RAM-Speichergrösse feststellen - INT 13h Disketten & Festplatten steuern - INT 14h Serielle Schnittstelle steuern - INT 16h Tastatur steuern - INT 17h Parallelschnittstelle - INT 1Ah Uhrzeit, PCI & PCMCIA(PC) 19

191 8.2.1 Maskieren von Interrupts Aufruf von Interrupts möglichst nicht rekursiv zulassen, da schwer handhabbar. Zu Beginn einer Interrupt-Sequenz sind die Interrupts automatisch ausgeschlossen. Anschliessend wird der Interrupt bestätigt und nachfolgende Interrupts kommen durch: - IRET oder POPF beim Rücksprung der Routine, - EOI-Befehl an den Interrupt-Kontroller. Interrupts im Prozessor expizit maskieren: - CLI löscht Interrupt-Enable Bit im Statusreg., - STI setzt das Bit wieder. Möglichkeiten der Interruptmaskierung: - Enable-Bit im CPU-Statusregister, - Mask-Register im 8259A-Kontroller, - auch NMI kann maskiert werden (Port $7). 191

192 8.2.2 Interrupttabelle Externe und interne Unterbrechungen wählen jeweils einen aus 256 Tabelleneinträgen aus: Slave Master 8259A 143! # NMI INTR INTA Vektor# IRQ-Pin# Programmierter Offset 255 Interrupt Entry CPU IDTR Index in die Tabelle: - für interne U. durch CPU-Hardware, - für externe U. durch Interrupt-Kontroller, - Ausnahme: NMI direkt auf Eintrag #2. Startadresse der Interrupttabelle: - Real-Mode: ab Speicherstelle, - Protected M.: via IDTR-Register. Maximal 256 Einträge: - Real-Mode: jeweils 4 Byte als Segment:Offset, - Protected: 8 Byte Interrupt-Deskriporen. 192

193 8.2.3 Externe Unterbrechungen Externe Interrupts von der Hauptplatine: - IRQ-: Timer-Interrupt, - IRQ-1: Tastatur-Interrupt, - IRQ-2: sekundärer Interrupt-Kontroller (wird nicht ausgelöst) - IRQ-8: Echtzeit-Uhr (RTC), - IRQ-13: Koprozessor. Externe Interupts vom ISA-Bus: - IRQ-[3.. 7, , 14,15], - IRQ-[3, 4, 5] für COM1, COM2, LPT1 evtl. im CMOS-Setup anders zuordnen, - für Disks, Netzwerkadapter, Soundkarten, SCSI- Kontroller, Videokarten, Steuerungen,... Interrupts vom PCI-Bus werden durch die PCI-Bridge auf ISA-Interrupts abgebildet. PCI erlaubt "Shared Interrupts". 193

194 8.2.4 Verketten mit Interrupt-Routine Eine neuer Interrupt-Handler wird eingetragen und ruft am Ende die bisherige Routine auf. Interrupt-Return (IRET): - Flags vom Stack herunterholen, - und ins Flag-Register laden, - Rücksprungadresse holen. Die bisherige Routine erwartet ein Flagwort auf dem Stack: - Assemblereinschub "asm pushf end" lädt dieses. Das Schlüsselwort "Interrupt" sorgt für ein "IRET" am Ende der eigenen Prozedur. Interrupttabelle : Flags neue Int.- routine IRET Flags alte Int.- routine IRET 194

195 Programmbeispiel "TimerChain.pas" Zählt die Systemuhr mit. Prozedurvariable für alten Handler. Ausgabe: ca. 1 Punkt pro Sekunde:... Done (*$F+ Force far jumps *) program TimerChain; uses Crt, Dos; var oldhandler : procedure; ticks : integer; procedure MyHandler; Interrupt; begin ticks := ticks + 1; if ( ticks mod 18 )= then write( '.' ); asm pushf end; (* simulate flags on stack *) oldhandler; (* chain to old Handler *) end; begin ticks:=; GetIntVec( 8, addr(oldhandler) ); SetIntVec( 8, addr(myhandler) ); repeat until ticks=182; SetIntVec( 8, addr(oldhandler) ); writeln( 'Done' ); end. 195

196 8.2.5 Timer-Interrupt Alte Int.Routine aufbewahren & ersetzen. Prozeduradressen übergeben. Interrupt-Kontroller explizit mit EOI auf Port[$2] zurücksetzen. (*$F+ Force far jumps *) program MilliTimer; (* provides a Millisecond timer *) uses Crt, Dos; const millisec = div 4; var oldhandler : procedure; ticks : real; procedure SetTimer( Handler: pointer; period: integer); begin Port[$43] := $34; (* select timer, function 2 *) Port[$4] := period mod 256; (* Low byte *) Port[$4] := period div 256; (* High byte *) SetIntVec( 8, Handler); end; procedure MyHandler; Interrupt; begin ticks := ticks + 1; port[$2] := $2; (* EOI to 8259 *) end; begin ticks:=; GetIntVec( 8, addr( oldhandler ) ); SetTimer( addr( myhandler ), millisec ); repeat until keypressed; SetTimer( addr( oldhandler), (* is Maximum*) ); writeln( ticks/1:8:3, ' sec' ); end. 196

197 Ziele: 8.3 E/A-Software Komplexität und Heterogenität der Geräte verbergen. Geräteunabhängigkeit: - E/A-Schnittstelle soll unabhängig vom Gerät implementiert werden können. - einheitl., geräteunabhängige Namensstrukturen. Virtualisierung von Geräten. Fehlerbehandlung. Pufferung von Daten. Zugriffskontrolle. E/A-Software Struktur: Anwendungen User-Level E/A-Software E/A-Subsystem Gerätetreiber Hardware 197

198 8.3.1 User-Level E/A-Software Bereitstellung von Bibliotheksfunktionen: - open, read, write, close,... - printf, ioctl,... Systemaufruf zur Ausführung eines Betriebssystemdienstes Bilden der notwendigen Parameterstruktur. Spooling: (z.b. Drucker) - Unterstützung paralleler E/A auf Geräte, die nicht gleichzeitig mehrfach nutzbar sind. - Alle Aufträge werden in Spooling-Verzeichnis abgelegt. - Spezieller Daemon-Prozess selektiert Aufträge und führt E/A auf Gerät durch E/A-Subsystem im Kern Bereitstellen einheitl. Geräteschnittstellen für Gerätetreiber: - Standard-Interfaces für Geräte-Kategorien: z.b. Block- und zeichenorientierte Geräte. - Verwaltung der Namen von Dateien & Geräten. Scheduling von E/A-Aufträgen (z.b. HDD). Zugriffskontrolle. 198

199 Konfiguration/Initialisierung der Geräte. Zuordnen & Freigeben von Geräten. Puffern: - Eingaben: verzögert an Anwendung Puffern. - Ausgaben: unterschiedliche Geschwindigkeit von Erzeuger & Verbraucher Daten kopieren. Fehlerbehandlung und berichte Gerätezugriff Gerätezugriff in Unix Gerät: - Abstraktion=Datei (im Verzeichnis /dev ) - spezieller I-Node, - werden wie Dateien angesprochen, - nicht direkt zugreifbar für Standard-Benutzer. Blockorientierte Geräte - Speicherung der Informationen in Block- Einheiten, z.b. 124 Bytes. - Beispiel: Festplatten. - Kommandos: read, write. Zeichenorientierte Geräte - Erzeugen bzw. Akzeptieren von Zeichenströmen - Beispiel: Tastatur - Kommandos: get, put. 199

200 Gerätezugriff in Windows NT Gerät: - Abstraktion=Objekt, - tauchen nicht im Dateisystem auf. - nicht direkt zugreifbar für Standard-Benutzer. Kommandos: Öffnen, Lesen, Schreiben und Schließen, wie bei Dateien. Aber verschiedene Geräteklassen (z.b. Netzwerk, Modem, Grafik, Drucker) mit jeweils spezifischen Laufzeitfunktionen. Komplizierte Treiberarchitektur (~ 1. Fkt. im Kern für Treiber-Entwickler vorhanden) Pufferung Eingangspufferung Ungepuffert: Problem häufige Prozeßwechsel teuer (z.b. pro Tastendruck) Puffern im Anwendungsadressraum: - Vorteil: kein Umkopieren - Nachteil: Speicherseiten der anfragenden Anwendung müssen zugreifbar sein. vielleicht ist gerade ein anderer Prozeß aktiv. 2

201 Doppeltes Puffern: Daten müssen umkopiert werden, aber sonst keine Probleme. User Kern ungepuffert doppeltes Puffern Ausgangspufferung Benutzer übergibt mit write Daten an Kern. Kern übernimmt die Daten in seinen Puffer. Der Prozeß kann seinen eigenen Puffer sofort weiterverwenden. Problem: Leistung. Beispiel: Datenübertragung über Netzwerk: Computer-1 Computer-2 User Kern Netzwerkkarte 21

202 8.3.5 Gerätetreiber Treiber laufen in der Regel im BS-Kern: - greifen direkt auf HW zu. - haben höchste Privilegstufe. - Fehler führt zum Systemabsturz. - benötigen klar definierte Schnittstellen. Aufgaben eines Gerätetreibers: - Prüfen und Übersetzen der Parameter, - Statusüberprüfung, Starten d. Geräts, - Absetzen einer Befehlssequenz, - Fehlerbehandlung. API: Funktionen zum Öffnen, Schreiben, Lesen, Schliessen,...: - verbirgt gerätespezifische Details, - exportiert beim Laden des Treibers, - Schnittstelle durch E/A-Subsystem definiert. Gerätekontrollblock: zum Speichern von Zustandsinformationen pro Gerät. Gerätetreiber (abstrakt): Geräte- Kontroll- Block API Gerätetreiber inkl. Interrupt- Behandlung 22

203 Windows NT Treiber Windows Driver Model (WDM): - Treiber werden dynamisch geladen, - PnP- und Power-Management, - geschichtetes Treibermodell, - Dateien mit Endung.sys, - in \system32\drivers. - Einstieg DriverEntry. I/O-Manager (Kernmodul) kommuniziert mit Treibern nur asynchron über sogenannte I/O Request Packets (IRPs). IRP ist variable große Datenstruktur für die Unterstützung eines Treiber-Schichtenmodells Vordefinierte Funktionscodes: Create, Close, Read, Write,... Stackeintrag IRP_MJ_WRITE Length ByteOffset IRP Header. Stack Header IoStatus * SysBuffer * Mdl * UserBuffer Cancel 23

204 Treiber kann beim Abschluss eines IRPs die Priorität des wartenden Threads erhöhen. Treiber kommunizieren untereinander ebenfalls asynchron: Driver -2 Driver -1 I/O-Manager Driver - Gerät Aber auch direkte Aufrufe zwischen Treibern möglich: - nicht empfohlen. - Funktionen exportieren (wie bei DLLs). - Importieren eines anderen Treibers bedeutet, daß dieser auto. mitgeladen wird. 24

205 WDM-Treiberstapel: FDO behandelt typischerweise I/O IRPs. PnP & Power-IRPs traversieren ganzen Stack. PDO wird durch den Bus-Treiber erzeugt. FDO's und Filter werden in "AddDevice" erzeugt (Parameter ist PDO). IRP Upper Class Filters Upper Device Filters FDO Functional Device Object Lower Class Filters Lower Device Filters PDO Physical Device Object DevNode Mehr Infos in Systemprogrammierung II. 25

206 Linux Treiber Treiber: - statisch mit Kern gebunden - oder dynamisch ladbares Modul. Modul: - muss zwei Funktionen exportieren: int init_module(void); void cleanup_module(void) ; - Treiber registriert sich mit register_chrdev. - hierbei Fkt. in definierter Struktur exportieren. Zuordnung über Spezialdateien in /dev: - Major-Number: identifiziert Treiber. - Minor-Number (-255): Geräte-ID. Typ+Rechte Maj.,Min. Name brw-rw root disk 3, Aug 31 1:31 hda brw-rw root disk 3,1 Aug 31 1:31 hda1 crw-rw-rw- 1 root tty 2,176 Aug 31 1:31 ptya Kein Schichtenmodell wie in Windows NT. Nebenläufigkeit: - verschiedener Warteschlangen im Kern, - entspricht Koroutinen, - kein Threads. Rubini, Alessandro: Linux Device Drivers, O Reilly, 2nd Edition,

207 8.3.6 E/A- Aufrufe Synchroner Aufruf (blockierend): - Aufruf kehrt erst zurück, wenn E/A fertig. - Anwendung wird verdrängt und am Ende des Systemaufrufs wieder aktiviert. - Blockierende E/A ist für Entwickler einfacher Realisierung durch separaten Thread. Asynchroner Aufruf (nicht-blockierend): - kehren sofort zum Aufrufer zurück. - Programm selbst kann E/A-Wartezeiten berücksichtigen - Ergebnis als Nachricht oder Callback-Aufruf. Aufrufer Async. Aufruf Request -Queue Element I/O- Task Callback BS Completion - Code 27

208 Beispiel: Windows NT Beispiel: asynchrones Schreiben in eine Datei void CALLBACK Compl( DWORD dwerrorcode, DWORD dwwritten, OVERLAPPED *poverlapped. ); int main() { HANDLE OVERLAPPED char hfile; ov; *data= hello world ; hfile = CreateFile( "a:\\test.txt", GENERIC_WRITE, // write access, NULL, // share mode & security CREATE_ALWAYS, // creation mode FILE_ATTRIBUTE_NORMAL FILE_FLAG_OVERLAPPED, NULL // template file ); ov.offset = ; // file-pos ov.offsethigh = ; WriteFileEx(hFile, &data, strlen(data), &ov, &Compl); CloseHandle(hFile); } 28

209 9.1.1 Begriffliches 9. Namensdienste 9.1 Namen & Adressen people prefer names, machines use addresses Namen in Betriebssystemen: - WWW, ,... - Rechner, Benutzer,... - Dateien, Verzeichnisse,... - Geräte, Dienste, Fenster,... - Packages, Klassen, Methoden,Variablen,... Gründe für Benennung: - Erklärung, - Lokalisierung, - Identifizierung. Namenskonvention: Regeln für den Aufbau von gültigen Namen: - UNC: \\fix\public - URL: - Java: class Test1 aber class 1Test - Dateien: FAT16 Dateinamen mit 8+3 Zeichen Namensraum: Menge aller gültigen Namen, die eine Namenskonvention erfüllen. 29

210 Binden: Beziehung zw. Namen und Adresse Strukturierung von Namen: - Flach: unstrukturiert, beliebige Zeichenfolge. - Hierarchisch: syntaktisch strukturiert. Flache Namen: - Eindeutigkeit schwer prüfbar - Bsp.: Schulthess, Schoettner, Wende Hierarchische Namen: - - c:\winnt\system32\drivers Namensdienst: Datenbasis, welche die Zuordnung von Namen zu Adressen speichert. Namensauflösung: - Dynamisch zur Laufzeit, - Statisch zur Übersetzungszeit, - Rückwärtsrichtung: z.b. Debugger. 21

211 9.1.2 Lokale Namensdienste Benutzerverwaltung: - Flacher Namensraum, - Benutzer- und Gruppennamen. Dateisysteme: - Flache Dateinamen, - Hierarchische Pfadnamen, - Unix: eine Wurzel \, Microsoft: A:, C:,

212 Software-Komponenten: - JVM: Java Packages, Klassen, - BS: DLLs, Shared Libraries,... - COM-Laufzeitbibliothek: COM-Objekte. GUI-Elemente und Betriebsmittel: - Flache Namen, - Betriebsmittel: Prozesse, Semaphore,... - GUI-Elemente: Fenster, Controls, Ressourcen. Compiler: - Buchführung in Symboltabellen, - Sichtbarkeitsregeln für Namen (Scopes), - Namenskonventionen abhängig von Sprache. Lader: Zuordnung Klasse & Deskriptor,... Konfigurationsverwaltung: - Flache Namen, - Benutzerkonfiguration: z.b. Desktop, - Maschinenspez. Einstellungen (z.b. IP-Adresse) 212

213 9.1.3 Verteilte Namensdienste Ziele: - Effizienz, - Datenschutz, - Selbstkonfigurierung, - Verfügbarkeit & Skalierbarkeit. Verzeichnisdienste (z.b. X.5, NDS, ADSI): - ähnliche Funktionalität wie ein Telefonbuch, - Durchsuchen mit partiellen Informationen mögl. - bieten hohe Flexiblität, aber oft eingeschränkte Skalierbarkeit. Verteilte Dateisysteme (z.b. NFS, Coda): - Logische Zusammenfassung lokaler Dateiverzeichnisse verschied. Rechner eines Netzes. - Mount-Tabellen erforderlich mit u.u. aufwendiger Administrierung. - Konsistenzprobleme bei Replikation Globale Namensverwaltungen (z.b. DNS): - Delegation v. Zuständigkeiten f. Unterbereiche. - Hierarchische Organisation des Namensraumes. - Ausfallsicherheit durch Replikation. - Rekonfiguration ist aufwendig. - Effizienz durch Vorhalten. 213

214 9.2 Beispiel: JavaOS Root Temp Gerät Interface Alias Software Config nicht- persistent persistent Java System Database (JSD): - Hierarchischer Namensraum, - Sammlung von benannten Objekten, - Nachfolger sind horizontal verknüpft, - Objekt durch Pfadnamen eindeutig bestimmt. Format eines Eintrages: Name(String) Status (Drafted, Published,...) Parent Entry Link Sibling Entry Links Child Entry Link Lock Manager Generation Number + Entry-Specific Properties 214

215 9.3 Beispiel: Windows NT Objekt-Manager mit zentralem Namensdienst: - Funktionen in NTOSKRNL.EXE, - Objekte werden nur zum Auffinden über den Namen identifiziert, danach über ein Handle, - Nicht alle Objekte sind im User-Mode sichtbar. Format eines Eintrages: Object Header Name(String) Directory Security Descriptor Open Handle Counter Permanent/Temporary Kernel/User mode Type Pointer... Object Body Type Object Namen von Laufwerken (A:) sind intern durch Aliase realisiert: \ Device DosDevices Floppy... A: \Device\Floppy 215

216 9.4 Konfigurationsverwaltung Einführung Konfigurieren ist keine triviale Aufgabe: - Viele Ebenen: Hardware, System, Benutzer, - Viele Werkzeuge: BIOS-Setup, BS-Tools,... Hardware: - ISA: Interrupt-Nummer durch Jumper, - PnP: dynamisches Aushandeln von Ressourcen. Plug and Play: - max. 31 Geräte pro PCI-Bus, - max. 255 PCI Busse (hierarchisch), Byte Konfigurationsadressraum, - BIOS handelt Interrupts & Speicher aus. BIOS-Setup: - Festplatten (logische Geometrie), - Chipset Einstellungen (Timing für Speicher). BS-Konfiguration: - Treiber: Parameter, Ladezeitpunkt,... - Protokolle: Bindungen, IP-Adresse,... - Benutzerkonten: Rechte, Gültigkeitsdauer,... Benutzereinstellungen: - Desktop (Ordner, Erscheinung,...), - Anwendungsspez.: -Adresse,

217 9.4.2 Beispiel: JavaOS Informationen über Maschinen und Benutzer auf einem zentralen Server gespeichert. Bootphase nutzt nur Teilbaum Machine Durch das Anmelden eines Benutzers werden Teile aus User eingeblendet. Config User Machine Users Groups Platforms Identifiers Profiles Werkzeug: JavaOS Configuarion Tool (JCT). JCT erzeugt ein Master Client File (MCF). 217

218 9.4.3 Beispiel: Windows NT Registry Registry: Zentrale Konfigurationsdatenbank. Aufbau: - Persistente Daten: system.dat & user.dat, - Flüchtige Infos im HS (z.b. laufende Prozesse). Programme greifen massiv auf Registry zu: - Netscape Gold 3. starten: ~ 1.4 Zugriffe, - Dokument in Winword öffnen: ~ 2 Zugriffe. Zugriff auf Registry über: - Systemaufrufe, - Werkzeuge: regedit.exe, - Dateien mit Endung *.reg. 218

219 Probleme der Registry: - wächst durch Relikte von entfernten Prog., - unübersichtlich, da zu wenig standardisiert, - falsche Einstellung führen u.u. zum Absturz, - je größer die Registry wird, desto langsamer wird das BS Neuinstallation des Rechners. Systemkonfiguration in der Registry: - Suchpfade: zusätzlich zu PATH HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths - DLLs: HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs - Deinstallationsprogramme: HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall - Drucker: HKCC\System\CurrentVersion\Control\Print\Printers - Treiber: HKLM\System\CurrentControlSet\Services Anwendungskonfiguration: - Empfehlung: HKLM\Software\<Firmen-Name>\<Programm-Name>\<Version> Benutzereinstellungen: - Pfad der Benutzerprofile: HKLM\Software\Microsoft\Windows\CurrentVersion\ProfileList - Anpassen von Anwendungen: HKCU\Software\<Firmen-Name>\<Programm-Name> 219

220 Beispiel: Schlüssel und Wert anlegen #define NAME "Software\\Abteilung VS\\PlurixServer" main() { HKEY hnewkey; // handle to new key char *sznewkey=name; // name of new key char *szcont = "zeux"; // name of value DWORD dwdisposition; // performed action RegCreateKeyEx( HKEY_LOCAL_MACHINE, // root-key sznewkey, // new key, // reserved "", // unused class str REG_OPTION_NON_VOLATILE,// persistent KEY_ALL_ACCESS, // access rights NULL, // security &hnewkey, // handle to new key &dwdisposition // performed action ); RegSetValueEx( hkey, // handle to key "String", // name of value, // reserved REG_SZ, // type of value (LPBYTE)szCont, // string data strlen(szcont)+1 // string length ); } RegCloseKey(hNewKey); 22

221 9.5 Internet Domain Name Service DNS wurde 1987 eingeführt (RFC 134). Verwaltet den Internet Namensraum. Merkmale: - hierarchisch strukturiert, - ersetzt zentrale Hosts-Tabellen, - verwaltet Millionen von rel. stat. Adressen, - Zuordnung von DNS-Namen & IP-Adressen. Organisation des Namensraumes: - organisatorisch innerhalb der USA, - geographisch auf der restlichen Welt. Root COM EDU GOV DE UNI-X UNI-Y INST-A Host A Host B 221

222 Domain-Namen: - Zeichenketten durch. konkateniert, - ortsunabhängig & immer absolut zur Wurzel. DNS Namer-Sever: - Namensdaten primär aus lokalen Domäne, - zusätzlich Adressen anderer Name-Server. Namensdaten werden in Zonen unterteilt: - Zonen def. administrative Einheiten, - Zonen-Konfigurationsdatei enthält Adresse & Namen von anderen Name-Servern. Verfügbarkeit: - Replikation auf mind. zwei unabh. Servern, - primäre und sekundäre Zonen-Server, - Vorhalten von Anfragen mit TTL (TimeToLive) Beispiel: Domains und Zonen au nz gov com edu Zone au Domain au 222

223 Im Schnitt wird eine Name durch zwei Resolutionsschritte aufgelöst Name Server my.mac.gov.au? siehe au Name Server gov.au au Name Server mac.gov.au gov.au Name Server mac.gov.au Anfrage Antwort my.mac.gov.au Name Server Anfrager siehe auch: 223

224 1. Bibliotheken 1.1 Programmierschnittstellen Viele Schnittstellen auf verschied. Ebenen: - HW: Register memory-mapped od. port-basiert. - Treiber: o nutzen Kernfunktionen. o Implementieren vordef. Schnittstelle. - Kern: o Aufruf aus User-Mode per SW-Interrupt. o Funktionsnummer indiziert in Fkt.-Tab. - System-DLLs: o prüfen Parameter, zusätzl. Fkt. o führen Kernaufruf durch. - User-DLLs & Dienste: zusätzliche Fkt. Anwendungen Middleware User-DLLs Dienste user-mode kernel-mode System-DLLs Kern Treiber Hardware 224

225 1.2 Prozedurbasierte Bibliotheken Als Arbeitserleichterung für Programmierer. Programmierschnittstelle zum System (API). Beispiele: - DirectX: Multimedia & Spiele, - "Win32" Betriebssystemdienste, - Open GL: Open Graphics Language, - RPC: Remote Procedure Call, Statische Bibliotheken Bibliotheken werden mit einem Programm in einer Datei gebunden: winword.exe excel.exe Linux: test.a.4 Windows: mybib.lib Vorteile: immer alle Funktionen vorhanden. Nachteile: - längere Ladezeiten, - Speicherverschwendung, - schlechte Erweiterbarkeit. 225

226 1.2.2 Dynamische Bibliotheken Gemeinsam nutzbar durch mehrere Prozesse. Unterstützt in allen Betriebssystemen: - Apple Shared Library Manager für MacOS. - Dynamic Link Libraries für Windows. - Shared Libraries in Linux. Linux: libc.so.6..1 Windows: gdi32.dll winword.exe excel.exe Eine DLL ist eine Bibliothek, die zur Laufzeit (beim Programmstart) geladen und mit dem Programm verbunden (gelinkt) wird. Vorteile: - nur benötigte Bibliotheken laden, - gute Erweiterbarkeit, - Speicherersparnis. Nachteile: - Es können Laufzeitfehler durch unabsichtlich gelöschte Bibliotheken entstehen. - Meist verschied. Versionen einer Bibliothek im System (teilw. unbenutzt) DLL hell. 226

227 1.2.3 Fallstudie: Windows DLLs Aufruf einer Biblioheksfunktion Konsolenapplikation in C: #include "windows.h" int main(int argcount, char* argvec[]){ return MessageBoxA( NULL, "Boxtext(s)", "Boxtitel", MB_OK); } Zeigt eine MessageBox (ASCII-Variante): #include "windows.h": - includiert rekursiv weitere *.h-dateien, - für Signaturen und Typeninformation, - für "MessageBoxA", "NULL" und "MB-OK"... Compiler erzeugt ein Objektmodul mit einer Importtabelle für den Linker, u.a.: -... External... imp 227

228 Erzeugungsschritte eines C-Programmes: *.c Compiler *.h *.obj Linker *.lib *.exe Lader *.dll run Dateierweiterungen für Windows. Static Library (*.LIB): - Bindung durch Linkage Editor, Dynamic Link Library (*.DLL): - Bindung zum Ladezeitpunkt, - Bindung zur Laufzeit. 228

229 Inspektion von Dateien mit Dumpbin: Dumpbin analysiert *.obj, *.lib, *.dll, *.exe. Unsere *.exe Datei enthält eine Importtabelle für benötigte Bibliotheken, diese werden vom Lader eingebunden. C:\>dumpbin linkstatic.exe /imports... USER32.dll C Import Addr Table 42414C Import Name Table 1BE MessageBoxA... KERNEL32.dll 42417C Import Addr Table 4243C Import Name Table 19D HeapDestroy 19B HeapCreate CA GetCommandLineA 174 GetVersion 7D ExitProcess 51 DebugBreak 152 GetStdHandle 2DF WriteFile 1AD InterlockedDecrement 1F5 OutputDebugStringA 13E GetProcAddress 1C2 LoadLibraryA 1B InterlockedIncrement 124 GetModuleFileNameA 29E TerminateProcess

230 Laden einer DLL zur Laufzeit: Vorgehen in 3 Schritten: - Laden der Dymaic Link Library (User32.dll), - Suchen der Funktion (MessageBoxA), - Rufen der Funktion. #include "windows.h" int main(int argc, char* argv[]){ HANDLE hlib; FARPROC hbxproc; } hlib = LoadLibrary("User32.dll"); hbxproc = GetProcAddress( hlib, "MessageBoxA"); return hbxproc(null, "Boxtext(d)", "Boxtitel", MB_OK); Programmierung einer DLL: Funktionen explizit exportieren: #include <windows.h> BOOL WINAPI DllMain( HINSTANCE hinstdll, DWORD fdwreason, LPVOID lpvreserved ) { return TRUE; } // handle to DLL module // reason for calling function // reserved void declspec(dllexport) PrintString(char *str) { MessageBox(GetFocus(),str, "MyDLL", MB_OK); } 23

231 1.2.4 Fallstudie: Linux Shared Libraries Name der Bibliothek: - z.b. libhello.so Präfix lib (optional). - Suffix.so : (Shared Library). - gefolgt von Major-Versionsnummer. - anschließend Minor-Versionsnummer. - und schließlich noch Release-Nummer. Name für Linker: symbolischer Link auf die Bibliothek ohne Versionsnr., z.b. libhello.so Name für Lader: symbolischer Link soname mit Major-Versionsnr. z.b. libhello.so.1. Bessere Handhabung von verschiedenen Versionen, als bei Windows DLLs. Fkt. müssen nicht explizit exportiert werden. Standard-Speicherort: /lib, /usr/lib,... Beim Laden des Programms werden Shared Libraries automatisch gesucht & geladen: - Pfade in Var. LD_LIBRARY_PATH. - Pfade mit : konkateniert. Suche nach Bibiotheken langsam -> Cache in /etc/ld.so.cache (verwaltet mit ldconfig). 231

232 Beispiel: libhello.c: /* libhello.c - demonstrate library use. */ #include <stdio.h> void hello(void) { printf("hello, library world.\n"); } demo.c: /* demonstrate direct use of the "hello" routine */ #include "libhello.h" int main(void) { hello(); return ; } Übersetzen, Binden & Starten: gcc -fpic -c libhello.c # compile library # (-fpic position independent code) gcc -shared -Wl,-soname,libhello.so. # create library -o libhello.so... libhello.o lc # -lc link library ln -sf libhello.so... libhello.so. ln -sf libhello.so. libhello.so gcc -c demo.c -o demo.o # set up soname # set up linker name # compile demo prg gcc -o demo demo.o -L. llibhello # bind demo prg # (-L lib search path for linker) LD_LIBRARY_PATH="."./demo Inspektion von Dateien mit ldd. # test program 232

233 Laden einer Shared Library zur Laufzeit: Vorgehen wie bei Windows: #include <stdlib.h> #include <stdio.h> #include <dlfcn.h> // Shared Libs. dynamisch laden int main(int argc, char **argv) { void *handle; double (*cosine)(double); // Funktions-ptr. char *error; // Fehler-String // RTLD_LAZY=Symbole dyn. auflösen handle = dlopen ("/lib/libm.so.6", RTLD_LAZY); if (handle==) { fputs (dlerror(), stderr); // Fehler des letzten Aufrufs exit(1); } } cosine = dlsym(handle, "cos"); error = dlerror(); if (error!=null) { fputs(error, stderr); exit(1); } printf ("%f\n", (*cosine)(2.)); dlclose(handle); // GetProcAddress // Fkt. aufrufen // Shared Lib. freigeben Übersetzen des Programms: gcc -o test test.c -ldl 233

234 1.3 Objektorientierte Bibliotheken COM = Component Object Model, Verwendet unter Microsoft Windows. Grundlage für viele weitere Dienste: OLE, OCX, ActiveX, DCOM. Merkmale: - Objekte in DLLs oder Programmen, - sprachunabhängig (C++, Java, Basic,...). Grundidee: Zusammenfassen von Funktionen eines Serverobjektes zu Einheiten (Interfaces). Klient COM- Objekt Realisierung: Def. lediglich Speicherlayout von Interfaces. Layout entspricht dem einer abstrakten C++ Klasse. 234

235 COM-Speicherlayout: IfcPtr virtualtable private Daten func-1 func-2 func-3 Objekt- Code C++ Notation: class Interface1 { public: virtual void func1()=; virtual void func2()=; virtual void func3()=; } class MyObject : public Interface1 { void func1(); void func2(); void func3(); } Aufruf einer Interface-Methode: C++: C: o = new MyObject; o->func1(); o->vtbl->func1(); 235

236 Instanziierung: Können nicht mit new instanziiert werden. Obj. über COM-Laufzeitbibliothek erzeugen. Objekte durch UUID eindeutig identifizierbar. UUID = Universal Unique Identifier (128-Bit Zahl mit guidgen.exe erzeugen). Ablauf der Instanziierung: Server Klient COM- Objekt Class- Factory (1) CoCreateInstance (4) (3) LoadLibrary (4) CreateInstance COM-Bibliothek (2) Registry Für den Klienten bleibt transparent, ob das Objekt in einer DLL oder einem Programm untergebracht ist. 236

237 Interfaces: Sind durch UUID eindeutig identifizierbar. Konventionen: - jedes COM-Objekt muss mindestens das Interface IUnknown implementieren - und von IUnkown abgeleitet sein. interface IUnknown { HRESULT QueryInterface(REFIID riid, void **Obj); ULONG AddRef(); ULONG Release(); } In-Process-Server: COM Objekte in einer DLL: - Im selben Adreßraum (DLL). - COM-Bibliothek lädt die DLL bei Bedarf. Beispiel: ein eigenes Interface: class CTest : public IUnknown { public: CTest(); STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); virtual STDMETHODIMP Print(char *str); }; 237

238 Beispiel Klassenfabrik: class CTestClassFactory : public IClassFactory { public: CTestClassFactory(); STDMETHODIMP QueryInterface(REFIID, PPVOID); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void); }; STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, PPVOID); STDMETHODIMP LockServer(BOOL); Beispiel Registrierung: Zusätzlich notwendige Funktionen in DLL: - DllGetClassObject: o liefert Zeiger auf die Klassenfabrik, o zum Erzeugen von Objekten. - DllCanUnloadNow: o teilt mit, ob die DLL noch benötigt wird. o wird periodisch vom System gerufen. 238

239 Local- Server: COM-Objekte in einem separatem Programm (EXE) residieren in fremden Adressraum. Server: - eigenständiges Programm, - Kommunikation über RPC, - registriert seine Klassenfabrik beim Start. Für Interfaces eines fremden Adreßraumes, werden Proxy-Stub-Objekte geladen: - Signatur gemäß RPC Notation, - Erzeugung mittels MIDL-Compiler, - es gibt vordef. Interfaces: IStream, IStorage,... Klient Proxy-DLL Server COM- Objekt Class- Factory Ablauf der Instanziierung: - Klient ruft CoGetClassObject - COM-Bib. lädt LocalServer und Proxy-Dll - Klient ruft CreateInstance der ClassFactory - LocalServer gibt Klient Zeiger auf Interface 239

240 1.4 Systemaufruf am Beispiel von NT DWORD CreateEventDirect( HANDLE *SemaphoreHandle, // result handle DWORD DesiredAccess, // access bits UNICODE *ObjectName, // name of evt-object ULONG ManualReset, // after use ULONG InitialState // initial value { asm { mov eax, x23; // # of NtCreateSemaphore lea edx,[ebp+x8]; // parameters (skip 2 W) int x2e; // _KiSystemService } } // end assembly, end CE void main() { HANDLE hevt; // the desired handle DWORD status; // status code DWORD acc = EVENT_ALL_ACCESS; } // create an event-object via software-interrupt INT 2e : status = CreateEventDirect(&hEvt, acc, NULL, 1, 1); if (status!=status_success) printf(" error \n"); else printf("success, handle: %x\n", hevt); // or create an event-object via kernel32.dll : hevt = CreateEventW(NULL, 1, 1, NULL); // W=wide if (hevt==null) printf(" error \n"); else printf("success, handle: %x\n", hevt); // kernel-mode unicode strings typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE; typedef UNICODE * PUNICODE_STRING ; // used length // max. length of buffer // WCHAR buffer 24

241 Im NtOSkernel.exe findet sich eine Funktion mit einer Signatur wie CreateEventDirect: NTSTATUS NtCreateSemaphore( OUT HANDLE *SemaphoreHandle, IN ACCESS_MASK DesiredAccess, IN PUNICODE_STRING ObjectName, IN ULONG ManualReset, IN ULONG InitialState ); Diese Funktion NtCreateSemaphore wird indirekt gerufen: - über den LPC Manager. - da in einem anderen Adressraum, - über einen Software-Interrupt (int x2e), CreateEventDirect präpariert die Parameter auf dem User-Stack: - zusätzlicher Parameter: Funktionsnummer, - zusätzlicher Parameter: Zeiger auf Stackframe, LPC kopiert diese dann in den Kernel-Stack. Alternativ wird derselbe Effekt erreicht durch Aufruf von CreateEventW in Kernel32.dll. Die DLL übernimmt die Vorbereitung der Parameter und ist komfortabler zu benutzen. Bem.: es wird hier nur der NT-Kern, aber kein Server-Prozess gerufen. 241

242 11. Benutzerschnittstellen 11.1 Überblick Ziel: Interaktion mit dem Benutzer Gliederung nach Art der Interaktion: - Batchorientierte Systeme, - Interaktive Betriebssysteme, - Transaktionsorientierte Systeme. Unterscheidung nach Ein-/Ausgabegeräten: - Automaten, - Textbildschirm, - Grafikbildschirm, - Sprachausgabe & -erkennung. Textbildschirm / Konsole Historisch: Fernschreiber (Teletype) - Eingabe: Tastatur, - Ausgabe: serielle Leitung, - Programme: TTY (Unix & Windows). Textbildschirm: - ASCII-Zeichensatz, - 8*25 Zeichen oder besser, - Farbe möglich, aber keine Grafik. 242

243 Konsole: ASCII-basierte Interaktion - MS-DOS: command.com - Windows: cmd.exe - Linux: o verschiedene Shells (z.b. bash), o virtuelle Konsolen mit ALT-Fx; xterm Zugang über Netzwerk mit Telnet oder SSH: - Remote-Login Dienst, - Übertragung über TCP, - Terminal-Typen: z.b. VT1, - Windows: telnet.exe, TTermPro - Linux: telnet, SSH. Konsole Anwendung VT1- Treiber Pseudo- Terminal Telnet- Client Telnet- Server Internet 243

244 Graphische Benutzerschnittstellen Pixelbasierte Ansteuerung des Bildschirms. Fenster: - virtualisieren Bildschirmfläche. - meist rechteckig, aber nicht zwingend. - Anordnung überlappend oder gekachelt. Mehrere Applikationen können auf dem Bildschirm verwaltet werden. Grundelemente eines Fensters: - Rahmen mit Verstellelementen, - Titelleiste mit Menü, - Klientenbereich, Ausgabe von Text und Grafik innerhalb eines Fensterrahmens. Steuerelemente (Controls) ebenfalls Fenster. Eingabe per Maus & Tastatur. Symbole (Icons) statt langer Befehle. Vorteil: verwandtes Aussehen und Bedienung für verschiedene Programme. 244

245 11.2 Befehlsinterpreter Befehlsinterpreter: - Nimmt Befehle und Parameter entgegen, - Eingebaute Kommandos sind a priori bekannt, - Zusätzliche Befehle durch externe Programme. Syntax: <Kommando> <Param1>... <Pn> - Erstes Token wird als Kommando interpretiert, - Parameter: Trennung mit Space oder Komma, - Optionen: meist gekennzeichnet durch -, --, /, - Parameter & Optionen in argv[]. Kommandos unter Microsoft Windows: - Interpreter: cmd.exe (Win9x: command.com). - Befehle sind nicht case-sensitiv. - Diverse eingebaute Kommandos help. - Externe Befehle: o Programme (.exe), o Dateien mit bekannter Verknüpfung, o Suchpfade (beachte PATH-Variable). Kommandos unter Unix: - Diverse Interpreter: bash, ksh,... - Befehle sind case-sensitiv. - Eingebaute Befehle: Syntax & bekannte Befehle abhängig von Shell. - Externe Befehle: Ausführbare Dateien, 245

246 Standard Ein-/Ausgabe Jedes Programm besitzt geöffnete Dateien auf Tastatur (stdin) und Bildschirm (stdout). stdin, stdout zeigen auf Gerät: - CON : Windows - /dev/tty : Linux Umleiten der Eingabe: <Datei. Umlenken der Ausgabe: >Datei & >>Datei. Mehrere Kommandos in einer Kette: c 1 c 2 : Ausgabe von c 1 ist Eingabe für c 2 ( Pipe). Umgebungsvariablen Konfiguration von Programmen & System. Zugriff in Programmen & Konsole möglich. Steuerung in Konsole (Windows): - Setzen & Löschen: SET Name=Wert - Ausgabe: echo %name% Verwendung unter Linux (bash): - Setzen & Löschen: export Name=Wert - Ausgabe: echo $name Konfiguration in Linux abhängig von Shell. 246

247 Stapeldateien (BAT-Dateien) Zusammenfassung mehrerer hintereinander auszuführender Kommandos (NT). Ziel: Automatisierung bestimmter Abläufe. Zugriff auf Argumente durch: %1 %2 Anweisungen (siehe Hilfe help ): - ECHO: Ausgabe, - PAUSE: Tastendruck abwarten, - GOTO: Sprung zu Marke ":NAME", - ERRORLEVEL: Fehlerstufe von Prg.aufruf, - IF, FOR, CALL, usw. OFF REM das ist ein Kommentar IF p%1 == pparam ECHO kein Parameter! Tutorials: 247

248 Erweitertes Scripting Windows Scripting-Host interpretiert mehrere Sprachen: VB-Script, Java-Script, Perl... Einsatzgebiete: - Automatisierung von Abläufen, - Erweiterung von Programmen & Systemen. Merkmale: - weniger Aufwand, da kein Compiler notwendig, - Erweiterung von Programmen & Systemen, - umfangreiche Sprachkonzepte. - basiert auf COM. Aufruf über: - cscript Programm Konsolausgabe, - wscript Programm Windows-Ausgabe, - oder direkt durch die Erweiterung ".vbs". Nutzung von eingebauten Obj. z.b. WScript Zugriff auf externe Obj. mit CreateObject. Beispiel: Ausgabe des Namens des aktuellen Benutzers: Set net = Wscript.CreateObject("Wscript.Network") MsgBox(net.UserName) 248

249 11.3 X Window Projekt Athena (MIT 84), derzeit Ver. X.11. Trennung von Programm (X Klient) und Ausgabegerät (X Window Server). Struktur: Window Server: - verwaltet Bildschirm, Tastatur & Maus, - kann mehrere Klienten bedienen, - Rückmeldung an App. (selektiv), - Grundoperationen auf Fenstern, - Ausgabe von Basisfiguren, - Schriften, Farbtab.,... X Klient (Anwendung): - Grafikausgaben & Ereignisverarbeitung, - zu einem oder mehreren Servern verbunden. 249

250 Window Manager: - eine X Window Server Anwendung, - einmal gestartet pro X Window Server, - definiert Look & Feel (z.b. olwm, fwm,...). X Protokoll: - Kommunikation zw. X Klient und X Server. - asynchrone Verarbeitung. - TCP, bzw. IPC lokal. X Lib: - C-Bibliothek. - realisiert X-Protokoll. - Verbindungsauf- und abbau. - Eingabeereignisse in Warteschlange, - Ausgabefunktionen: Text und Grafik. X-Toolkits: - erleichtern Entwicklung GUI-basierter Prgs. - objektorientiert Bib., z.b. Qt (KDE). Desktop Systeme: - erweiterten X Window Manager, - gleiches Look and Feel für Programme - z.b. KDE, Gnome,... 25

251 Umlenkung des Displays: xterm display : Berechtigung für lokales Display: xhost (setzen) xhost (löschen) Kommando-Interpreter unter X-Window: 251

3. Betriebssystemorganisation

3. Betriebssystemorganisation 3. Betriebssystemorganisation 3.1 Monolithische Betriebssysteme Sammlung von Routinen, ohne Hierarchie, Kapselung und Schichtung. Jede Prozedur kann beliebige andere aufrufen und Datenstrukturen ändern.

Mehr

Blätter zur Vorlesung Sommersemester 2004. Betriebssysteme. Prof. Dr. P. Schulthess Dr. M. Schöttner & al.

Blätter zur Vorlesung Sommersemester 2004. Betriebssysteme. Prof. Dr. P. Schulthess Dr. M. Schöttner & al. Blätter zur Vorlesung Sommersemester 2004 Betriebssysteme Prof. Dr. P. Schulthess Dr. M. Schöttner & al. Verteilte Systeme, Informatik, Universität Ulm 1. Vorschau 1.1 Einordnung & Organisation Voraussetzungen:

Mehr

C. Betriebssystem-Strukturen C.1 Monolithische Betriebssysteme

C. Betriebssystem-Strukturen C.1 Monolithische Betriebssysteme C. Betriebssystem-Strukturen C.1 Monolithische Betriebssysteme Sammlung von Routinen, ohne Hierarchie, Kapselung und Schichtung. Jede Prozedur kann beliebige andere Prozeduren aufrufen und Datenstrukturen

Mehr

Beweglicher Kamm: mit Schreib-/Leseköpfen, dicht über Magnetschicht, langsam beweglich (10 ms). Sektoren à 512 Bytes (netto).

Beweglicher Kamm: mit Schreib-/Leseköpfen, dicht über Magnetschicht, langsam beweglich (10 ms). Sektoren à 512 Bytes (netto). H. Plattenspeicher H.1 Aufbau einer Festplatte H.1.1 Physikalischer Aufbau Staubdicht versiegelt. Eine oder mehrere rotierende Platten: 5.400-15.000 U/min., magnetisierbare Schicht, unterteilt in konzentrische

Mehr

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung Zusammenfassung Kapitel 4 Dateiverwaltung 1 Datei logisch zusammengehörende Daten i.d.r. permanent

Mehr

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at

Memory Management. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at Memory Management Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1 Speicherverwaltung Effektive Aufteilung und Verwaltung des Arbeitsspeichers für BS und Programme Anforderungen

Mehr

9. Plattenspeicher und Dateien

9. Plattenspeicher und Dateien 9.1.1 Physikalischer Aufbau Staubdicht versiegelt. 9. Plattenspeicher und Dateien 9.1 Aufbau einer Festplatte Eine oder mehrere rotierende Platten: - 5.400-15.000 U/min,.magnetisierbare FeO-Schicht, meist

Mehr

Rechnernutzung in der Physik. Betriebssysteme

Rechnernutzung in der Physik. Betriebssysteme Rechnernutzung in der Physik Betriebssysteme 1 Betriebssysteme Anwendungsprogramme Betriebssystem Treiber BIOS Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich:

Mehr

Willkommen zur Vorlesung. Betriebssysteme. Sommer 2008, CS 5250. Universität Ulm Prof. Dr. Peter Schulthess Institut für Verteilte Systeme

Willkommen zur Vorlesung. Betriebssysteme. Sommer 2008, CS 5250. Universität Ulm Prof. Dr. Peter Schulthess Institut für Verteilte Systeme Willkommen zur Vorlesung Betriebssysteme Sommer 2008, CS 5250 Universität Ulm Prof. Dr. Peter Schulthess Institut für Verteilte Systeme A. Vorschau A.1 Organisation Vorlesung 3 SWS: (ab 15.4.2008): - Dienstag,

Mehr

6.2 FAT32 Dateisystem

6.2 FAT32 Dateisystem 6.2 FAT32 Dateisystem Dateisystem für Windows 98 einige Unterschiede zum Linux-Dateisystem EXT2: keine Benutzeridentifikation für Dateien und Verzeichnisse! Partitionen werden durch Laufwerke repräsentiert,

Mehr

Betriebssysteme Kap A: Grundlagen

Betriebssysteme Kap A: Grundlagen Betriebssysteme Kap A: Grundlagen 1 Betriebssystem Definition DIN 44300 Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften dieser Rechenanlage die Basis der möglichen Betriebsarten

Mehr

Betriebssysteme K_Kap11B: Files, Filesysteme Datenstrukturen

Betriebssysteme K_Kap11B: Files, Filesysteme Datenstrukturen Betriebssysteme K_Kap11B: Files, Filesysteme Datenstrukturen 1 Files als lineare Liste File angeordnet als verkette Liste von Blöcken Jeder Block enthält Zeiger zum Nachfolger Zeiger = Adresse des Blocks

Mehr

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Name: Matrikel-Nr: Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008 Bitte schreiben Sie leserlich und antworten Sie kurz und präzise. 1. Zeichnen Sie das Schichten-Modell eines Computersystems und markieren

Mehr

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1

B.4. B.4 Betriebssysteme. 2002 Prof. Dr. Rainer Manthey Informatik II 1 Betriebssysteme Betriebssysteme 2002 Prof. Dr. Rainer Manthey Informatik II 1 Bekannte Betriebssysteme Windows 2000 CMS UNIX MS-DOS OS/2 VM/SP BS 2000 MVS Windows NT Solaris Linux 2002 Prof. Dr. Rainer

Mehr

6 Speicherverwaltung

6 Speicherverwaltung 6 Speicherverwaltung 6.1 Hintergrund Ein Programm muß zur Ausführung in den Hauptspeicher gebracht werden und in die Prozeßstruktur eingefügt werden. Dabei ist es in mehreren Schritten zu modifizieren.

Mehr

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel Aufgabe 1 (5 Punkte) (Multiple Choice) Beantworten Sie folgende Fragen durch Ankreuzen der richtigen Antwort. Für jede falsche Antwort wird ein Punkt abgezogen (es werden minimal 0 Punkte vergeben). Welche

Mehr

8. Swapping und Virtueller Speicher

8. Swapping und Virtueller Speicher 8. Swapping und Virtueller Speicher Der physikalische Adreßraum wird weiter abgebildet auf Arbeitsspeicher und Plattenspeicher. Prozesse (deren benutzte Seiten) die nicht laufen (und bald nicht laufen)

Mehr

Halt! Wo bin ich überhaupt?... C:\

Halt! Wo bin ich überhaupt?... C:\ Halt! Wo bin ich überhaupt?... C:\ FAT32 und Co Dateisysteme Datenträger FAT Forensik Bootreihenfolge Einschalten BIOS -> Power-On Self Test (POST) BIOS -> Master Boot Record (MBR) Bootsektor Betriebssystem

Mehr

Projekt für Systemprogrammierung WS 06/07

Projekt für Systemprogrammierung WS 06/07 Dienstag 30.01.2007 Projekt für Systemprogrammierung WS 06/07 Von: Hassan Bellamin E-Mail: h_bellamin@web.de Gliederung: 1. Geschichte und Definition 2. Was ist Virtualisierung? 3. Welche Virtualisierungssoftware

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil 18.04.2002

Die L4-Mikrokern. Mikrokern-Familie. Hauptseminar Ansätze für Betriebssysteme der Zukunft. Michael Steil. Michael Steil 18.04.2002 Die L4-Mikrokern Mikrokern-Familie Hauptseminar Ansätze für Betriebssysteme der Zukunft 18.04.2002 Folie 1 Aufbau des Vortrags 1. Mikrokerne: Idee und Geschichte 2. L4: ein schneller Mikrokern 3. L4Linux:

Mehr

Proseminar Konzepte von Betriebssystem-Komponenten Disk-Caches & Dateizugriff von Athanasia Kaisa

Proseminar Konzepte von Betriebssystem-Komponenten Disk-Caches & Dateizugriff von Athanasia Kaisa Proseminar Konzepte von Betriebssystem-Komponenten Disk-Caches & Dateizugriff von Athanasia Kaisa Massenspeichermedien sind in der Regel gegenüber dem Hauptspeicher eines Rechners viel langsamer. Da Massenspeicher

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

Prozesse und Scheduling

Prozesse und Scheduling Betriebssysteme für Wirtschaftsinformatiker SS04 KLAUSUR Vorbereitung mit Lösungen / Blatt 1 Prozesse und Scheduling Aufgabe 1 : Scheduling Gegeben seien die folgenden Prozesse und die Längen des jeweiligen

Mehr

Kapitel 9 Hauptspeicherverwaltung

Kapitel 9 Hauptspeicherverwaltung Kapitel 9 Hauptspeicherverwaltung Einführung: Speicher als Betriebsmittel Speicherkapazität wächst ständig ein PC heute hat 1000 mal soviel Speicher wie 1965 der größte Computer der Welt Anwendungsprogramme

Mehr

Kapitel 2. Betriebssysteme

Kapitel 2. Betriebssysteme Systeme 1 Kapitel 2 Betriebssysteme WS 2009/10 1 Übersicht Aufgabe von Betriebssystemen Historische Entwicklung von Betriebssystemen Unterschiedliche Arten von Betriebssystemen Komponenten und Konzepte

Mehr

Systeme I: Betriebssysteme Kapitel 2 Überblick Betriebssysteme. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 2 Überblick Betriebssysteme. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 2 Überblick Betriebssysteme Maren Bennewitz 1 Überblick Betriebssysteme Aufgabe von Betriebssystemen Historische Entwicklung von Betriebssystemen Unterschiedliche Arten

Mehr

White Paper. Embedded Treiberframework. Einführung

White Paper. Embedded Treiberframework. Einführung Embedded Treiberframework Einführung White Paper Dieses White Paper beschreibt die Architektur einer Laufzeitumgebung für Gerätetreiber im embedded Umfeld. Dieses Treiberframework ist dabei auf jede embedded

Mehr

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis...

A Kompilieren des Kernels... 247. B Lineare Listen in Linux... 251. C Glossar... 257. Interessante WWW-Adressen... 277. Literaturverzeichnis... 1 Einführung................................................ 1 1.1 Was ist ein Betriebssystem?............................... 1 1.1.1 Betriebssystemkern................................ 2 1.1.2 Systemmodule....................................

Mehr

13. Übung mit Musterlösung

13. Übung mit Musterlösung 13. Übung mit Musterlösung 1 Lösung 1 Teil 1.Multiple Choice) Bewertung: Ein Punkt für richtige Antwort, für jede falsche Antwort ein Punktabzug. a) Für die Exponentialverteilung ist die Zeit bis zum nächsten

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Maren Bennewitz Version 13.2.213 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten

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

Hardware Virtualisierungs Support für PikeOS

Hardware Virtualisierungs Support für PikeOS Virtualisierungs Support für PikeOS Design eines Virtual Machine Monitors auf Basis eines Mikrokernels Tobias Stumpf SYSGO AG, Am Pfaenstein 14, 55270 Klein-Winternheim HS Furtwangen, Fakultät Computer

Mehr

5.2 Analyse des File Slack

5.2 Analyse des File Slack 5.2 Analyse des File Slack 109 Es gibt an vielen Stellen eines Betriebssystems Fundorte für Gebrauchsspuren oder Hinweise auf Auffälligkeiten. Diese Stellen sollten grundsätzlich aufgesucht und analysiert

Mehr

6.6 Persistenter virtueller Speicher

6.6 Persistenter virtueller Speicher 6.6 Persistenter virtueller Speicher Idee: alle Segmente sind persistent Datei -Begriff überflüssig! Aber: Segment hat erweiterten Deskriptor. bs-6.6 1 Segment überdauert Tod des erzeugenden Prozesses,

Mehr

Betriebssystem? Übersicht. Ziele. Grundlagen. Das ist nur die Oberfläche... Wissen, was man unter einem Betriebssystem versteht

Betriebssystem? Übersicht. Ziele. Grundlagen. Das ist nur die Oberfläche... Wissen, was man unter einem Betriebssystem versteht Betriebssysteme Grundlagen Quellen: InSy Folien zum Thema Unix/Linux Wikipedia Das ist nur die Oberfläche... 1 Ziele 2 Übersicht Wissen, was man unter einem Betriebssystem versteht Was Was ist istein einbetriebssystem?

Mehr

Kapitel I Betriebssysteme: Aufgaben und Überblick Betriebssysteme: VO Betriebssysteme 2

Kapitel I Betriebssysteme: Aufgaben und Überblick Betriebssysteme: VO Betriebssysteme 2 Vorlesung: Betriebssysteme T. Fahringer Institut für Informatik Universität Innsbruck VO Betriebssysteme Thomas.Fahringer@uibk.ac.at 1 Kapitel I Betriebssysteme: Aufgaben und Überblick VO Betriebssysteme

Mehr

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen Albrecht Achilles 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Betriebssysteme Eine kompakte Einführung mit Linux

Mehr

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400

1 Proseminar: Konzepte von Betriebssystem-Komponenten. Thema: Server OS AS/400 Referend: Sand Rainer. Server OS - AS/400 1 Proseminar: Konzepte von Betriebssystem-Komponenten Server OS - AS/400 Gliederung Was ist eine AS/400? Wie ist OS/400 aufgebaut? Was kann eine AS/400? Bsp.: Logische Partitionierung 2 Proseminar: Konzepte

Mehr

Vorlesung: Betriebssysteme

Vorlesung: Betriebssysteme Vorlesung: Betriebssysteme T. Fahringer Institut für f r Informatik Universität t Innsbruck Thomas.Fahringer@uibk.ac.at 1 Kapitel I Betriebssysteme: Aufgaben und Überblick 2 Was ist ein Betriebssystem

Mehr

Implementierung von Dateisystemen

Implementierung von Dateisystemen Implementierung von Dateisystemen Teil 2 Prof. Dr. Margarita Esponda WS 2011/2012 44 Effizienz und Leistungssteigerung Festplatten sind eine wichtige Komponente in jedem Rechnersystem und gleichzeitig

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Werkzeuge der Informatik (CS102) Thema: Login, Desktop, Filesystem

Werkzeuge der Informatik (CS102) Thema: Login, Desktop, Filesystem Werkzeuge der Informatik (CS102) Thema: Login, Desktop, Filesystem 30. Oktober 2003 Prof. Dr. Christian Tschudin Departement Informatik, Universität Basel Uebersicht Sitzung vom 30.10.2003 1. Betriebssystem

Mehr

IT-Sicherheit. Informationssicherheit: IT-Sicherheit bzw. IT-Risikomanagement

IT-Sicherheit. Informationssicherheit: IT-Sicherheit bzw. IT-Risikomanagement IT-Sicherheit Informationssicherheit: Schutz aller Informationen im Unternehmen elektronisch gespeicherte Daten Informationen in nichtelektronischer Form z.b. auf Papier Expertenwissen, in den Köpfen der

Mehr

Hardware-basierte Virtualisierung

Hardware-basierte Virtualisierung Hardware-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 V. Sieh Hardware-basierte

Mehr

Rechnerarchitektur. 11. Betriebssysteme und Prozesse. Inhalt. Ziele von Betriebssystemen. Betriebssystemkomponenten. Betriebssystemkomponenten

Rechnerarchitektur. 11. Betriebssysteme und Prozesse. Inhalt. Ziele von Betriebssystemen. Betriebssystemkomponenten. Betriebssystemkomponenten Inhalt Rechnerarchitektur 11. e und Soft- und eines Rechners Ziele von en komponenten dienste und -funktionen Mehrprogrammbetrieb Dateisysteme Ein-/Ausgabe architekturen Monolithische Systeme Geschichtete

Mehr

William Stallings. Betriebssysteme. Prinzipien und Umsetzung. 4., überarbeitete Auflage. Pearson Studium

William Stallings. Betriebssysteme. Prinzipien und Umsetzung. 4., überarbeitete Auflage. Pearson Studium William Stallings Betriebssysteme Prinzipien und Umsetzung 4., überarbeitete Auflage Pearson Studium ein Imprint der Pearson Education Deutschland GmbH Inhaltsverzeichnis Vorwort Leitfaden für den Leser

Mehr

BACKUP Datensicherung unter Linux

BACKUP Datensicherung unter Linux BACKUP Datensicherung unter Linux Von Anwendern Für Anwender: Datensicherung in Theorie und Praxis! Teil 4: Datenrettung Eine Vortragsreihe der Linux User Group Ingolstadt e.v. (LUG IN) in 4 Teilen Die

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Inhalte der heutigen Vorlesung

Inhalte der heutigen Vorlesung Inhalte der heutigen Vorlesung Wiederholung und Fortsetzung Hardware Von-Neumann-Architektur (Rechnerarchitektur) Speicher Software Wie groß ist ein Gigabyte? http://www.spiegel.de/netzwelt/tech/0,1518,606308,00.html

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Ein kleines Computer-Lexikon

Ein kleines Computer-Lexikon Stefan Edelmann 10b NIS-Klasse Ein kleines Computer-Lexikon Mainboard Die Hauptplatine! Sie wird auch Motherboard genannt. An ihr wird das gesamte Computerzubehör angeschlossen: z.b. Grafikkarte Soundkarte

Mehr

PARAGON Encrypted Disk

PARAGON Encrypted Disk PARAGON Encrypted Disk Anwenderhandbuch Paragon Technologie, Systemprogrammierung GmbH Copyright Paragon Technologie GmbH Herausgegeben von Paragon Technologie GmbH, Systemprogrammierung Pearl-Str. 1 D-79426

Mehr

Kapitel 2 Betriebssysteme. Für den Rechnerbetrieb notwendige Basissoftware

Kapitel 2 Betriebssysteme. Für den Rechnerbetrieb notwendige Basissoftware Für den Rechnerbetrieb notwendige Basissoftware 1 1. Einleitung 2. Prozessverwaltung 3. Dateiverwaltung 2 1. Einleitung Was ist ein Betriebssystem? Wikipedia: Ein Betriebssystem (engl. Operating System

Mehr

CPU (Prozessor), Festplatte, Grafikkarte, Soundkarte, diverse Schnittstelle (USB, COM, SERIELL), Arbeitsspeicher (RAM), ROM, CD/DVD-Laufwerk

CPU (Prozessor), Festplatte, Grafikkarte, Soundkarte, diverse Schnittstelle (USB, COM, SERIELL), Arbeitsspeicher (RAM), ROM, CD/DVD-Laufwerk FRAGEKATALOG Informatik BAKIP HARDWARE Frage 01: Im inneren eines Computergehäuses befindet sich unter anderem das Mainboard. Welche Komponenten sind an diesem Mutterbrett angeschlossen bzw. verbaut? Nenne

Mehr

Hardware-basierte Virtualisierung

Hardware-basierte Virtualisierung Hardware-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2011/2012 Hardware-basierte Virtualisierung 1/22

Mehr

Fachreferat. EFI -BIOS Nachfolger-

Fachreferat. EFI -BIOS Nachfolger- Fachreferat EFI -BIOS Nachfolger- Kurzerläuterung Übersicht EFI - Geschichte Aufbau und Vorteile Grafische Veranschaulichung Was passiert beim direkten einschalten eines Computers? Wie kommt die Intelligenz

Mehr

PVFS (Parallel Virtual File System)

PVFS (Parallel Virtual File System) Management grosser Datenmengen PVFS (Parallel Virtual File System) Thorsten Schütt thorsten.schuett@zib.de Management grosser Datenmengen p.1/?? Inhalt Einführung in verteilte Dateisysteme Architektur

Mehr

1.7 Assembler Programmierung

1.7 Assembler Programmierung 1.7 Assembler Programmierung Die nach außen sichtbare Programmierschnittstelle eines Prozessors ist der Befehlscode. Dies ist eine binäre Dateninformation, die vom Prozessor Byte für Byte abgearbeitet

Mehr

ReactOS das zu Windows binärkompatible Open-Source- Betriebssystem. Matthias Kupfer (mkupfer@reactos.org) ReactOS Deutschland e.v.

ReactOS das zu Windows binärkompatible Open-Source- Betriebssystem. Matthias Kupfer (mkupfer@reactos.org) ReactOS Deutschland e.v. ReactOS das zu Windows binärkompatible Open-Source- Betriebssystem Matthias Kupfer (mkupfer@reactos.org) ReactOS Deutschland e.v. Überblick Der Build Prozess Einführung Geschichte von ReactOS Windows NT

Mehr

Embedded-Linux-Seminare. Linux als Betriebssystem

Embedded-Linux-Seminare. Linux als Betriebssystem Embedded-Linux-Seminare Linux als Betriebssystem http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de

Mehr

Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008

Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008 Die Linux Kernel Virtual Machine - Wo steht der Linux Hypervisor? 2. März 2008 Jörg Rödel Virtualization - Whats out there? Virtualisierung hat bereits längere Geschichte auf x86 Startete mit VMware Setzte

Mehr

Vorlesung 14 Speichersysteme (2)

Vorlesung 14 Speichersysteme (2) D - CA - XIV - MH - 1 HUMBOLDT-UNIVERSITÄT ZU BERLIN INSTITUT FÜR INFORMATIK Vorlesung 14 Speichersysteme (2) Sommersemester 2003 Leitung: Prof. Dr. Miroslaw Malek D - CA - XIV - MH - 2 SPEICHERSYSTEME

Mehr

Leistungsanalyse von Rechnersystemen

Leistungsanalyse von Rechnersystemen Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) Leistungsanalyse von Rechnersystemen Auf Ein-/Ausgabe spezialisierte Benchmarks Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Ein und Ausgabe Übersicht Grundbegriffe Hard Disks und Flash RAM Zugriff auf IO Geräte RAID Systeme SS 2012 Grundlagen der Rechnerarchitektur Ein und Ausgabe 2 Grundbegriffe

Mehr

Einleitung Aufbau und Struktur Kommunikation Ein einfacher Treiber. Linux - Der Kernel. Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer

Einleitung Aufbau und Struktur Kommunikation Ein einfacher Treiber. Linux - Der Kernel. Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer Daniela Staritzbichler, Felix Wolfersberger, Bernhard Schauer 18. Jänner 2008 Übersicht 1 Einleitung Was ist Linux? 2 Aufbau und Struktur Mikro/Monolithischer Kern Der Linux Kernel VFS 3 Kommunikation

Mehr

Kartenhalter und Erkennungsschalter Mit Beschriftungsclip SD Flashcard erforderliche Eigenschaften (wie von SBC geprüft)

Kartenhalter und Erkennungsschalter Mit Beschriftungsclip SD Flashcard erforderliche Eigenschaften (wie von SBC geprüft) PCD.Mxxx0 Classic CPUs und Erweiterungsgehäuse Speichermodul PCD.R600 für Flashcards (FC).14 Speichermodul PCD.R600 für Flashcards (FC).14.1 System Übersicht PCD.R600 ist ein I/O Modul für industrielle

Mehr

Digital Forensics. Slackspace. 2011 DI Robert Jankovics DI Martin Mulazzani

Digital Forensics. Slackspace. 2011 DI Robert Jankovics DI Martin Mulazzani Digital Forensics Slackspace Slackspace Übersicht: Slack allgemein NTFS Slack FAT Slack mit Steganographie Slack allgemein Slack Space: Bezeichnet den Speicherplatz zwischen Ende der Datei und Ende des

Mehr

Windows Vista Windows Phone 7

Windows Vista Windows Phone 7 Windows Vista Windows Phone 7 Softwarearchitekturen Referent: Frank Urrigshardt Übersicht Windows Vista Historische Entwicklung Programmierung NT Programmierschnittstelle Win32 Programmierschnittstelle

Mehr

KURZANLEITUNG CLOUD BLOCK STORAGE

KURZANLEITUNG CLOUD BLOCK STORAGE KURZANLEITUNG CLOUD BLOCK STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung......Seite 03 2. Anlegen eines dauerhaften Block Storage...Seite 04 3. Hinzufügen von Block Storage

Mehr

Neues in Hyper-V Version 2

Neues in Hyper-V Version 2 Michael Korp Technical Evangelist Microsoft Deutschland GmbH http://blogs.technet.com/mkorp Neues in Hyper-V Version 2 - Virtualisieren auf die moderne Art - Windows Server 2008 R2 Hyper-V Robust Basis:

Mehr

Programmierung. Programme, Compiler, virtuelle Maschinen, Java

Programmierung. Programme, Compiler, virtuelle Maschinen, Java Programmierung Programme, Compiler, virtuelle Maschinen, Java Programme Ein Programm ist eine Folge von Anweisungen, die einem Computer sagen, was er tun soll tuwas.c for(int i=0; i=0; i

Mehr

Jeder Datenträger besitzt einen I-Node-Array. Jede Datei auf dem Datenträger hat einen I-Node-Eintrag.

Jeder Datenträger besitzt einen I-Node-Array. Jede Datei auf dem Datenträger hat einen I-Node-Eintrag. Einführung in die Betriebssysteme Fallstudien zu Dateisystemen Seite 1 Unix-Dateisystem Der Adreßraum einer Datei wird in gleichlange Blöcke aufgeteilt. Ein Block hat die Länge von 1 oder mehreren Sektoren

Mehr

Entwicklung eines Mac OS X Treibers für eine PCI-VME Interface Karte

Entwicklung eines Mac OS X Treibers für eine PCI-VME Interface Karte Entwicklung eines Mac OS X Treibers für eine PCI-VME Interface Karte Matthias Lange Informatikstudent, TU-Dresden 27. September 2005 http://www.matze-lange.de Warum entwickelt jemand einen Treiber für

Mehr

PARAGON SYSTEM UPGRADE UTILITIES

PARAGON SYSTEM UPGRADE UTILITIES PARAGON SYSTEM UPGRADE UTILITIES VIRTUALISIERUNG EINES SYSTEMS AUS ZUVOR ERSTELLTER SICHERUNG 1. Virtualisierung eines Systems aus zuvor erstellter Sicherung... 2 2. Sicherung in eine virtuelle Festplatte

Mehr

Aufbau einer Testumgebung mit VMware Server

Aufbau einer Testumgebung mit VMware Server Aufbau einer Testumgebung mit VMware Server 1. Download des kostenlosen VMware Servers / Registrierung... 2 2. Installation der Software... 2 2.1 VMware Server Windows client package... 3 3. Einrichten

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

1.2 Entwicklungsgeschichte

1.2 Entwicklungsgeschichte 1.2 Entwicklungsgeschichte Begriff Operating System wurde in den 60er Jahren in den USA geprägt und in Deutschland als Betriebssystem übernommen. Zunächst später dann dazu Stapelbetrieb, Teilnehmerbetrieb,

Mehr

Teil VIII Von Neumann Rechner 1

Teil VIII Von Neumann Rechner 1 Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only

Mehr

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d 3 0 1 2 3. Technische Informatik I Übung 3. Technische Informatik I Übung 3 Institut für Kommunikationsnetze und Rechnersysteme Technische Informatik I Paul J. Kühn, Matthias Meyer Übung 3 Speicherhierarchie Inhaltsübersicht Aufgabe 3.1 Daten-Cache Aufgabe 3.2 Virtueller Speicher

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

2. Darstellung von Information im Computer

2. Darstellung von Information im Computer Informationsbestände analysieren Darstellung von Information im Computer 2. Darstellung von Information im Computer Übung 2.1. Formatierung eines Datenträgers Ziel Sie haben ein Idee, wie in einem Computersystem

Mehr

Betriebssysteme eine Einführung. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at

Betriebssysteme eine Einführung. Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at Betriebssysteme eine Einführung Peter Puschner Institut für Technische Informatik peter@vmars.tuwien.ac.at 1 Betriebssystem Was ist das? Peter Puschner, TU Wien Vorlesung Betriebssysteme, Einführung; WS

Mehr

Proseminar Technische Informatik A survey of virtualization technologies

Proseminar Technische Informatik A survey of virtualization technologies Proseminar Technische Informatik A survey of virtualization technologies Referent: Martin Weigelt Proseminar Technische Informatik - A survey of virtualization technologies 1 Übersicht 1. Definition 2.

Mehr

Kapitel II. Computersysteme (1) Einführung: Hardware und Software. Bauteile eines einfachen PCs

Kapitel II. Computersysteme (1) Einführung: Hardware und Software. Bauteile eines einfachen PCs Kapitel II Einführung: Hardware und Software 1 Computersysteme (1) Computer haben viele verschiedene Devices: Input/Output Devices Speicher Prozessor(en) Monitor 2 Bauteile eines einfachen PCs Bus Computersysteme

Mehr

Hardware- und Software-Anforderungen IBeeS.ERP

Hardware- und Software-Anforderungen IBeeS.ERP Hardware- und Software-Anforderungen IBeeS.ERP IBeeS GmbH Stand 08.2015 www.ibees.de Seite 1 von 8 Inhalt 1 Hardware-Anforderungen für eine IBeeS.ERP - Applikation... 3 1.1 Server... 3 1.1.1 Allgemeines

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Implementierung der Jikes Research Virtual Machine

Implementierung der Jikes Research Virtual Machine Fakultät Informatik Institut für technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Implementierung der Jikes Research Virtual Machine Hauptseminar Technische Informatik

Mehr

Uberlegungen Einsatzgebiete Virtualisierungslosungen Fazit Hardwarevirtualisierung. Virtualisierung. Christian Voshage. 11.

Uberlegungen Einsatzgebiete Virtualisierungslosungen Fazit Hardwarevirtualisierung. Virtualisierung. Christian Voshage. 11. slosungen 11. Mai 2009 Inhaltsverzeichnis Uberlegungen slosungen 1 Uberlegungen Grunduberlegungen Vorteile Hardware-Emulation Nachteile 2 Servervirtualisierung Clientvirtualisierung 3 slosungen 4 5 Uberlegungen

Mehr

Kernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel

Kernel Programmierung unter Linux. Programmierung von Kernelmodulen. Referent Klaus Ruhwinkel Kernel Programmierung unter Linux Programmierung von Kernelmodulen Referent Klaus Ruhwinkel Das Betriebssystem Aufbau des Betriebssystem: Es besteht aus den Betriebssystemkern und den sonstigen Betriebssystemkomponenten

Mehr

Virtualisierung auf Mac OS X. Mar3n Bokämper Max Riegel 30. November 2008

Virtualisierung auf Mac OS X. Mar3n Bokämper Max Riegel 30. November 2008 Virtualisierung auf Mac OS X Mar3n Bokämper Max Riegel 30. November 2008 Inhalt Virtualisierung Konfigura3on eines virtuellen Rechners Virtualisierungslösungen für OS X Apple Boot Camp, keine Virtualisierungslösung!

Mehr

Die Soforthilfe bei Datenverlust! für Windows 95/98/ME/NT/2000/XP

Die Soforthilfe bei Datenverlust! für Windows 95/98/ME/NT/2000/XP Die Soforthilfe bei Datenverlust! für Windows 95/98/ME/NT/2000/XP GRUNDSÄTZLICHES ZU DATENRETTUNGS-SOFTWARE 1 EINFÜHRUNG 2 DATEN RETTEN VON EINER GELÖSCHTEN, VERLORENEN ODER BESCHÄDIGTEN PARTITION 3 Datei

Mehr

DC-FW400 SE. 3+1 Port IEEE 1394 FireWire TM PCI-Controller

DC-FW400 SE. 3+1 Port IEEE 1394 FireWire TM PCI-Controller DC-FW400 SE 3+1 Port IEEE 1394 FireWire TM PCI-Controller Wichtige Information zur Datensicherheit Vor der Installation und bei Änderungen der Konfiguration des DC-FW400 SE sollte unbedingt eine Datensicherung

Mehr

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation

Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation Architektur Verteilter Systeme Teil 6: Interprozess-Kommunikation 09.05.15 1 Literatur [6-1] http://php.net/manual/de/book.sockets.php [6-2] http://de.wikipedia.org/wiki/socket_(software) [6-3] http://php.net/manual/de/book.network.php

Mehr

Kap. 8: Dateisysteme (E3 EXT2 Dateisystem) 1

Kap. 8: Dateisysteme (E3 EXT2 Dateisystem) 1 Kap. 8: Dateisysteme (E3 EXT2 Dateisystem) 1 E 3 EXT2 Dateisystem Lernziele Aufbau des ext2-dateisystems kennenlernen Verwaltungsstrukturen auf dem Datenträger analysieren Hard- und Softlinks Übungsumgebung

Mehr

lobodms.com lobo-dms Systemvoraussetzungen

lobodms.com lobo-dms Systemvoraussetzungen lobodms.com lobo-dms Inhaltsverzeichnis 1 Allgemeines... 3 1.1 Betriebssystem... 3 1.2 Windows Domäne... 3 1.3 Dateisystem... 3 2 Server... 3 2.1 Hardware... 4 2.2 Betriebssystem... 4 2.3 Software... 4

Mehr

Windows-Betriebssysteme

Windows-Betriebssysteme REGIONALES RECHENZENTRUM ERLANGEN [RRZE] Windows-Betriebssysteme Systemausbildung Grundlagen und Aspekte von Betriebssystemen und System-nahen Diensten, 6.5.2015 Sebastian Schmitt / Sonja Schmidt, RRZE

Mehr