Einführung Organisation Was ist ein Betriebssystem? Ziel Betriebssystem? Aufgaben von OS? Vorteile Schnittstelle zwischen Anwendersoftware und der Hardware. Einfache und effiziente Nutzung von Rechnersystemen Ressourcenverwaltung: Rechnerleistung, Speicher, I/O Geräte, Daten (Disk, Filesys) Anbieter standardisierter Dienste: File-Zugriff, Networking, IO Virtuelle Maschine, keine Gedanken über Ressourcen Computersysteme Rechnersystem: CPU, Hauptspeicher, I/O, Busse CPU Register: Interrupt: - unterbricht aktuelle Instruktionsausführung PSW, Instruktionsregister, IP, Flags, Adressregister, Datenregister Quellen: Ablauf: - System Mode, User Mode Synchrone (ProgrammException z.B. div/0, TRAP, Software-Int: SystemCalls) Asynchrone (Timer: anderes Program, I/O Device, Hardwarefehler: Parity Fehler) - Instruktion zu Ende führen PC, PSW, Register etc. speichern Umschalten System Mode Über InterruptNr Vektortabelle adresse von ISR Interuppt Service routine) ISR Instruktion ausführen PC, PSW Register wiederherstellen Umschalten User Mode - Instruktionen Programm fortsetzen Ziel: System Protection HW Ressourcen und BS von Benutzer schützen System Mode (Kernel Supervisor): Zugriff kritische Res IO Speicherverwaltung, Kontrollregister User Mode: unkritische Ressoucen Umschaltung: per Mode Bit im PSW I/O Module - Programmed IO / synchron IO: CPU wartet - Interrupt Driven IO / asynchron IO: CPU anders - Direct Memeory Access DMA: kein Umweg CPU Memory/ Speicher Wieso funktionierts: Lokalitätsprinzip: räumlich (Speicherzugriffe nah beieinander), zeitlich (gleiche Instruktionen mehrmals) Basis für Cache Einsatz Mittlere Zugriffszeit : 𝑇𝑎 Zugriffszeit Cache: 𝑇𝐶 Zugriffszeit Speicher: 𝑇𝑀 Hit Ratio: ℎ Stack Mit. Zugriffszeit = Wahrscheinlichkeit Cache * Cachezugriff + (1-Wkt Cache) * (Cachezugriff + Memoryzugriff) LIFO Verfahren, wächst zu tieferen Adressen Anwendungen: - ProzeduraufrufRücksprungadresse oder Parameter - Temporäre Datenablage PUSH POP - Speicherung Prozessorzustand bei Interrupt Geschichte Dienste des Betriebsystems - Werkzeug Programmerstellung: Editor, Compiler, Linker, Debugger Programmausführung File- und I/O Zugriffe Systemzugriff: Zugriffsrechte, Mehrfachzugriffe Interprozesskommunikation: Austausch zwischen Prozessen Fehlererkennung: intere und externe HW Fehler Fehlerbehandlung - Accounting (Benutzerhandling) Wesentliche Konzepte - Prozesse Scheduling (Zuteilung Rechenzeit) und Ressoucenverwaltung Speicherverwaltung (Memory Management File) Schutz Sicherung Informationen - Systemarchitektur Batchbetrieb und Monitor: • • • • nur ein Job aus Batch im Speicher Jobs werden sequentiell abgearbeitet Monitor zur Steuerung, keine Interaktion mit Anwender Nachteil: viel Wartezeit, schlechte CPU Auslastung Multiprogrammed Batch System: • mehrere Jobs im Speicher • Scheduler notwendig • Interrupt und Speicherverwaltung notwendig Time Sharing System: • mehrere interaktive Jobs werden „gleichzeitig“ abgearbeitet • Schutz des Filesystems und Arbeitsspeichers notwendig • Mutex (gegenseitiger Ausschluss) notwendig , 100ms Antwortzeit akzeptabel, max 32 Users Schutz im Filesystem notwendig Prozesse: Programme in Ausführung Besteht aus: Programmcode, Daten, Stack, Ausführungsumgebung (Register) Architektur: Umgang mit Komplexität Aufteilung in Schichten Nachteil: Leistungseinbussen Erste Wahl Einfachheit Ressoucenmanagement berücksichtigt: - Fairness Differenzierte Behandlung (IO Priorität etc.) - Effizienz (max Durchsatz, minimale Antwortzeit) Scheduling benutzt Wartelisten: - Ready Queue: Prozesse die auf Ausführung warten Short Term Queue: P im Speicher, warten an Reihe zu kommen I/O Queue: P warten auf IO Gerät Long term queue: neue Prozesse die warten System benutzen zu können Moderne Betriebsysteme Architektur Traditionell (Fat Kernel): Schichtenprinzip, änderungen Wirken sich auf andere Schichten aus Microkernel: - nur notweniges restliches als Prozesse im UserMode (Filesystem, Treiber, Virtual MemeryMan, Sicherheitsdienste) Kernel: Kommunikation zwischen Prozessen Vor-Nachteile: Multiprocessing: Mehrere Prozessoren, gemeinsamer Speicher und IO System Virtual Machines: Illusion mehrere virtueller Rechner BS auf einem system - Weniger Leistung wegen Interprozesskomunikation Erweiterbar Portabilität Flexibilität - Jeder Prozessor eigener Cache Vorteile: schneller und Ausfallsicherer Nachteil: BS aufwändiger (Scheduler) Vorteile: Schutz System Ressourcen (VMs isoliert), Mittel für F&E von BS (Entwicklung allgemein) Nachteil: langsamer, schwierig HW vollständig richtig nachzubilden Müssen sofort auf Ereignisse reagieren bzw. Resultat zur richtigen Zeit da sein. Meist sehr HW nahe Implementierung Meist eingeschränkte Funktinalität Real-Time Betriebsysteme: - Systemadministration und Sicherheit Ziele: Make Users happy, Sicherheit, gut Lauffühig ohne grosse Aufwand Aufgaben: Tägliche: Notfälle, Systemüberwachung, Routineaufgaben Planung: Policies, Anforderungen klären, Evaluation, Einkauf Installation: Einspielen, Konfigurieren, Testing, Benutzerkonten Unterhalt: Benutzeradministration, Disk Management, Backup, HW/SW Updates, Tuning, Troubleshooting Sicherheit: Security Patches, Systemüberwachung Support und Training Benutzer Boot-Vorgang (Linux) Prozessor startet BIOS Runlevels: - BIOS testet System BIOS lädt MBR (Master Boot Record, 512Byte) MBR liest ersten Boot Record (Info BootLoader ) MBR startet Boot Loader (LILO, Grub) Grub übernimmt und liest /boot/grub/menu.lst Grub startet Kernel (vmlinuz-x.y.z in /boot) Kernel lädt Module und stratet INIT Prozess - Jedem Runlevel bestimmte System-Dienste zugewiesen, nacheinander gestartet Idee Sicherheitsstufen 0 Halt, 1: Einzelbenutzerbetrieb für einache Wartung, 2 Mehrnutzer ohne Netzwerk 3: Multiuser-Mode mit Netzwerk, textuelles Login, 5 Multiuser-Mode mit Benutzerobefläche, 6 Reboot - Init liest /etc/inittab, startet Scripts und bringt System in einen Runlevel /etc/rc.d: Init- Scripts die Dienste starten/stoppen (rc=run command) rc0.d-rc6.d: Links zu den Skripts im selben Verzeichnis KxyName -> ../init.d/sshd //Kills Reihenfolge SxyName -> ../init.d/local // Starts rc: ruft die rc0.rc6 auf manuell: /etc/init.d/smb start Geordnetes Abschalten: shutdown –h +20 bitte Arbeit beenden, System wird abgeschaltet Konfigurationsdateien (Textdateien) Ort: /etc oder /etc/sysconfig Webtool: www.webadmin.com Disk- und Dateisysteme Partitionen : MBR, und bis 4 Primärpartitionen oder 3 Promär mit bis 12 Sekundärpartitionen Partitionierung abhängig: mehrere BS, einfacher Backup, Felxibilität Wachstum, mehr Sicherheit Linux minimal Partition: /boot (BS), / (root), swap (temp) Werkzeuge : DiskDruid, fdisk, Acronis, PartitionMagic Planung : Flexibilität (wachsen, backup, sicherheit), Backup (schneller, nach häufigkeit, system upgrades), Performance (bessere Lastverteilung IO, kleine partitionen reduzieren seek der HD) Trennung Datenbestände: konstante Daten (Anwendungen Systemanwendungen), wachsende Daten (Benutzerdaten) Befehle: df –h (zeigt Partitionen und Platzverbrauch/besetzt), du –s path (zeigt grösse einzelner Verzeichnisse an) Dateisystem und Formatierung: ex2,ex3, ntfs etc. Kommando: mkfs,mke2fs 3 Filetypen: Files, Directories, Gerätedateien Mount/Umount: hängt Partition Filestruktur in Directory Baum (nur Superuser, ausnahmen in /etc/fstab) Mount /dev/hda2 /home Fstab: - /dev/hdb6 /boot ext2 defaults 1 1 Momentan gemountet: /etc/mtab Netzwerkfilesysteme NFS und Samba SMB SMB: Server Message Block von Microsoft Verteiltes Filesystem und Druckerdienste, Zugriffskontrolle Verbindet Linux/Windowswelt Zugriffsrechte sehr flexibel, Unixrechte nicht voll unterstützt /etc/init.d/smb start Mounten: mount –t smbfs –o username=kleinand //mustang/kleinand /home/kleinand/must NFS: Network File System von Sun Networking ifconfig: zeigt oder konfiguriert Netzwerkinterface ifdown/ifup eth0: reneuern ping IP: kontakt zu IP netstat: zeigt Netz-Zustand an nslookup: Info zu Rechner und IP-adresse arp –a listet Ethernet HW Adr rup: Broadcast an alle Unixrechner Benutzeradministration Muster Profile: - .bshrc, .bash_profile : Shell - Menueinträge Einstellungen - Dateien in /etc/skel bereitstellen Backup Weil: - Fehler Sicherheitsattacken - Datenausfälle Geschäft gefährden Strategie: - So einfach wie möglich Zeiteffizient Einfach Rückspielung - Portierbar auf verschiedene Maschinen Automatisierung ShellScript/PerlScript Auto Ausführen Scripts: at und cron - at: ausführen bestimmt Zeit o at 01.04.00 01:30 –f shellscript o Freigabe: /etc/at.allow deny - cron: wiederholtes ausführen in Abständen o ist deamon o vrontab –e //editieren o corntab –l // auflisten Vertraut Clients immer kein Passwort Exportiert Dateibäume, die gemounted werden können Konfiguration Server: /etc/exports, /etc/rc.d/init.d/nfs start - /etc/host.deny oder allow kontrollieren Konfiguration Client: User ID Client und Server gleich, Portmapper muss laufen Mounten: mount – t nfs dskt6283:/home/tha /home/tha/nfs NIS Network Informaion Services: Datenbankdienst stellt Client Informationen des Netzwerk zur Verfügung /etc/passwd /etc/group Alternativen : LDAP und Kerberos Useradd Userdel –r // löscht auch home verzeichnis Vorgehen: - Welche Verzeichnisse Welcher Typ: vollständig, partiell inkrementell Häufigkeit: täglich wöchentlich monatlich etc Medien und Geräte - Disks: Kurzzeitspeicher, physikalisch getrennt Tapes: CDs: permanent, kleine Datenmengen Netzwerk Programme-Tools - tar (ohne komprimierung) cpio/afio find . | cpio –o –v –O /dev/fd0H1440 dump und restore - dd disk to disk copy (legt partition in file) Prozesse und Threads Prozess: Programm in Ausführung, Einheit schedulierbar, Ressourcenbesitzer Prozess-Kontext: Schnappschuss seiner Laufzeitumgebung Aufgabe BS: Prozessverwaltung Scheduling Mechanismen für Synchronisation, IPC, Erzeugung/Terminierung - Dispatcher: teilt CPU zu Scheduler: plant die Zuteilung mit Algorithmus Ressourcen zur Verfügung stellen (Deadlocks vermeiden) New: Prozess erzeugt aber noch nicht gestartet Ready: Prozess kann ausgeführt werden Running: Prozess läuft Blocked: Prozess wartet auf Ereignis z.B. IO Operation Suspend Blocked: wurde ausgleagert wartet auf Ereignis Suspend Ready: ausgelagert und bereit Auslagern bei zu vielen Prozessen im Speicher auf sekundärspeicher Swapping BS- Kontrollstrukturen: Memory Tabellen IO Tabellen File Tabellen Prozess Tabellen Nur Logisch jeder machts anders. Prozessbeschreibung Der Prozesskontrollblock PCB Wichtige Datenstruktur im BS Enthält: Prozesskontext Process Identification: PID: zeigt in Prozesstabelle PPID: Parent PID Id des Elternprozesses UID, GID, Benutzer oder Gruppe Processor State Information: Für Benutzer sichtbare Register Kontroll/Steuerregister, Stackpointer Processor Status Wort PSW-> Flags Process Control Information: Scheduling/Zustandsindormationen: Prozesszustand (running), Priorität, Ereignis auf das P wartet Speicherverwaltung: Zeiger auf Seiten- Segmenttabellen Prozessprivilegien: Zugriff auf Speicherbereiche Interprozesskommunikation: Flags und Signale für IPC RessourcenAllokation: benutzte Ressourcen, offene Files, IO Geräte Info zu Datenstrukurierung Verwaltung: Zeiger auf andere PCB Warteschalngen, Eltern Kind Beziehung Prozesssteuerung Prozessausführung ausführen, erzeugen, umschalten Prozesserzeugung - User Mode: Anwendungen - System Mode: Betriebsystem (Sicherheitsgründe: PCB, AllocationTables. IO) Prozessumschaltung (nur möglich wenn BS Kontroll CPU erhält) - System Call: Aufruf des Anwenderprogramms Interrupt: äussere Ursache IO- oder DMA beendet), Timer Interrupt - Trap: Fehler der letzten Instruktion Division /0 Möglichkeiten: - Mode Switch: UserModeSystem Mode : Interrupts Context/Prozess Switch: Prozess ändert Timer Interrupt (immer 2 Mode Switches) Short-term scheduler, alle 10ms aufgerufen - Prozess erzeugt oder beendet Prozesszustand zu blocked - Interrupt bzw. Timer Ziele: Antowrtzeit minimieren, Dursatz maximieren, Faire Zuteilung - Prozessidentifikator erzeugen Speicherraum Prozess Image allozieren PCB initailisieren (Defaultwerte) - In Queue einfügen Mode Switch (2 wechsel) - - Nur Prozessorzustand muss gespeichert werden Interrupt Service Routine ISR im gleichen Prozess aber im System Mode ausgeführt BS-Code im virtuellen ProzessSpeicherbereich Weniger Overhead: weil nicht ganzes PCB gespeichert ContextSwitch (4 wechsel) - Prozessorzustand Register Speichern, PCB aufdatieren Kostspielige Operation Prozessausführung Mikrokernel: wichtig schnelle Interprozess-Kommunikation Lauter kleine Prozesse Vorteile: modulare BS, unkritische Funktionen als Prozesse, gut für Unix SVR4 Prozessmanagement 2 Kategorien von Prozessen - Systemprozesse: Kernel Mode - Anwenderprozesse: UserMode Prozesse spalten über fork() Zombies sind Kinder auf die nicht gewartet(wait()) wurde aber terminiert sind. Prozess mit neuem Program überlagern: exec() Multiprozessing, schlanker Kernel, leicht erweiterbar Nachteil: hohe Interprozess-Kommunikation Threads Teilt: Adressraum, Daten, Betriebssystemressourcen Hat eigene: lokale Variablen, Register, PC, Stack Speichert Kontext wenn er nicht läuft - SingleThreading: BS kennt kein Threadkonzept DOS Multithreading: unterstützt mehrere Threads in Prozess Solaris - UNIX kennt mehrere Prozesse aber kein Threading Vorteil: - billiger „light weight Process“ weil teilen sich Datenbereich schnelles erzeugen und beenden 10x schneller Kernel weniger Ressourcen keinen neuen Adressraum, Datenbereich, Programmcode, oder BS Ressourcen #include <pthread.h> void *print_message_function(void* ptr) { printf("%s: %d\n", (char *) ptr, ++aVar); } main () { pthread_t thread1, thread2; char *message1 = "Hello"; char *message2 = "World"; pthread create(&thread1, NULL, print_messag_ function, (void*)message1); pthread_thread1, NULL, print_message_function, pthread_create(&thread2, NULL, print_message_function, (void*)message2); Nachteil: - pthread_join (thread1, NULL); // warte bis Thread fertig pthread_join (thread2, NULL); exit(0); kein Schutz zwischen Threads Kommunikation: - globale Variablen Synchronisiert (mutex, Moitor) Verhalten: Typen: - - Swapping: Prozess mit allen Threads warden suspendiert Prozess terminiert alle Threads terminieren Blockiert Thread UserLevalThread: ganzer Prozess blockiert, KernelLevelThreads: nur Thread blockiert User-Level Threads (ULT): laufen in Benutzerbereich, Kernel weiss nichts, Bibliothek realisiert blockiert bei System-Call ganzen Prozess o Vor/Nachteil: läuft auf allen BS, schnell einfach, involviert Kernel nicht, Systemcalls blockieren Kernel-Level Threads (KLT): Kernel stellt Systemfkt zur Verfügung, Kernel kennt Threads, leight weight Process o Vor/Nachteil: Scheduling auf Thread Basis, Threadumschaltung kostet 2 ModeSwitches, benötigt Thread Control Block TCB, langsam bei einer CPU } Prozess-Scheduling Klassifizierung Long-Term: welche Prozesse zulassen (New, Exit) o - Steuert Grad des Multiporgramming, Zulassungskriterien: kurze, interaktive oder CPU-und IO bound Mix bevorzugen Medium-Term: welche auslagern reinholen (Suspends) o Entscheid swap out/in, Verantwortlich Memory Managment Software - Short-Term: welche als nächstes ausführen (Ready, Blocked, Running) Dispatcher o Teilt Rechenleistung zu o Prozess-Verhalten Alle Prozesse laufen in einem CPU – I/O Burst Zyklus (abwechselndes IO rechnen) - CPU-bound: lange CPU bursts z.B: Batch Jobs alle 8ms - I/O-bound: kurze CPU burst z.B: interactive Jobs Grundidee: Blockierung Prozess durch IO-Operation, kann anderer Prozess CPU nutzen Ziele (schnell effizient): hohe Prozessorauslast, hoher Durchsatz, faire Behandlung, kleine Ausführungszeit, kleine Wartezeit, niedrige Antwortzeit Anwendungsumgebungen (je nach Situation anders) Batch Systeme - Ziel: max Durchsatz, min Ausführungszeit, CPU-Nutzung Keine Anwender Verarbeitung am Stück Meist non-preemptive Scheduling (keine Unterbrechung ausser blockiert) Interaktive Systeme - Ziel: kleine Antwortzeit, Erwartungen erfüllen Anwender warten auf Antwort Umschalten zwischen Prozessen notwendig Preemptive Scheduling (Prozesse arbeiten während ihrem Time Slice) Real-time Systeme + embedded - Ziele: Deadline(kein Datenverlust), Vorhersagbarkeit Resultat muss zur richtigen Zeit verfügbar sein - Oft periodische Jobs - Beispiel Film (1/25 Bild rendern) Preemptive Scheduling PS - Active Prozesse können vom Scheduler unterbrochen werden Bei unterbruch in Ready Queue - Aufwändiger aber effektiver Gesamthaft Round Robin RR - Gleich wie FIFO, neue Prozesse Vorrang Vergleich von Scheduling-Verfahren Auslastung CPU/Processor Utilization: Anteil Prozessorzeit Nutzungsgrad, Ziel 100% meist 40-90% Durchsatz: Anzahl Jobs pro Zeiteinheit Faire Behandlung: kein Aushungern und mittlere gleiche CPU-Zeit Ausführungszeit/Turnaround Time (𝑻𝒂 ): Zeit zwischen Aufgabe und Terminierung Prozess (𝑻𝒒 = 𝑷𝒓𝒐𝒛𝒆𝒔𝒔𝒅𝒂𝒖𝒆𝒓 + (𝑻𝒘) + (𝑻𝒊𝒐 ) + (𝑻𝒘𝒂𝒊𝒕 𝒕𝒐 𝒈𝒆𝒕 𝒕𝒐 𝒎𝒆𝒎𝒆𝒐𝒓𝒚 )) Antwortzeit/Response Time (𝑻𝒓 ): Zeit zwischen Aufgabe und erster Antwort Waiting Time (𝑻𝑾 ): Summe aller Wartezeiten in Ready Queue Bedienzeit (𝑻𝒃 )= Rechenzeit: CPU bursttime: interaktiv: Ausführungszeit bis IO; Batch: Ausführungszeit bis terminierung Non-Preemtive Scheduling NPS - Scheduling nur wenn Prozess Kontrolle abgibt (blockiert oder terminiert) Prozess kann CPU nur für sich beanspruchen NPS: FIFO + (kurze zuerst) Vorgehen genau einhalten: Bis Strich (Dispatcher) - Kommt ein neuer setze an Queue Setze vordersten hinten an Queue Male verdersten(neu) Gehe zu nächstem TimeSlice Antwortzeit: gut für kurze Prozesse Durchsatz: abhängig von TimeSlice: zu kurz viele Context Switches, zu lang FIFO verhalten Fairness: Benachteiligung IO bound Prozesse Verhungern: nicht möglich Overhead: klein Grösse des TimeSlice q - Grösser als CLock, Interrupt und Dispatching Grösser als typische Interaktion 100ms aber nicht viel grösser wegen IO Multilevel Scheduling (mehrere Ready Queue) ML - Prio 0: Systemprozesse Prio 1: Interaktive Jobs Prio 2: Allgemeine Jobs - Prio 3. Rechenintensive Jobs Jobs mit höchster Priorität zuerst Aushungern möglich deshalb MLF Antwortzeit: mittel-lang(bei unterschiedlich langen Prozessen) Durchsatz: kein Thema Fairness: lange CPU-bound Prozesse favorisiert, schlechte IO Ausnutzung Verhungern: nicht möglich Overhead: minimal Mittlere Bedienzeit: 𝑻𝒃 = 𝑫𝒖𝒓𝒄𝒉𝒔𝒄𝒉𝒏𝒊𝒕𝒕 𝒂𝒍𝒍𝒆𝒓 𝑩𝒆𝒅𝒊𝒆𝒏𝒛𝒆𝒊𝒕𝒆𝒏 Wartezeit: 𝑻𝑾 = 𝒁𝒆𝒊𝒕 𝒂𝒍𝒍𝒆𝒓 𝑩𝒆𝒅𝒊𝒆𝒏𝒛𝒆𝒊𝒕𝒆𝒏 𝒗𝒐𝒓𝒉𝒆𝒓𝒊𝒈𝒆𝒓 𝑷𝒓𝒐𝒛𝒆𝒔𝒔𝒆 − 𝑨𝒏𝒌𝒖𝒏𝒇𝒇𝒕𝒔𝒛𝒆𝒊𝒕 Mittlere Wartezeit: 𝑻𝑾 = 𝑫𝒖𝒓𝒄𝒉𝒔𝒄𝒉𝒏𝒊𝒕𝒕 𝒂𝒍𝒍𝒆𝒓 𝑾𝒂𝒓𝒕𝒆𝒛𝒆𝒊𝒕𝒆𝒏 Turnaround: 𝑻𝒂 = 𝑩𝒆𝒅𝒊𝒆𝒏𝒛𝒆𝒊𝒕𝒆𝒏 𝒂𝒍𝒍𝒆𝒓 𝒗𝒐𝒓𝒈𝒆𝒉𝒆𝒏𝒅𝒆𝒏 𝒖𝒏𝒅 𝒆𝒊𝒈𝒆𝒏𝒆𝒓 − 𝑨𝒏𝒌𝒖𝒏𝒇𝒕𝒔𝒛𝒆𝒊𝒕 Mittlere Turnaround: 𝑻𝒂 = 𝑫𝒖𝒓𝒄𝒉𝒔𝒄𝒉𝒏𝒊𝒕𝒕 𝒂𝒍𝒍𝒆𝒓 𝑻𝒖𝒓𝒏𝒂𝒓𝒓𝒐𝒖𝒏𝒅𝒔 NPS: Shortest Job First (SJF/SPN) Benötigte Rechenzeit muss geschätzt werden - Bedienzeit: Durchschnitt aller vorgehenderAusführngszeit CPU burst Oder besser: Schätzwert = konstante * Ausführungszeit des letzten + (1 konstante)* letzte Schätzung wobei konstante zwischen 0 und 1 Zweites bewertet nahe Vergangenheit stärker Mulilevel Feedback (MLF: dynamische Prio) - Viel CPU verbrauch: Prio senken - Lange Wartezeit: prio erhöhen - Verschieden grosse Time-Slices Antwortzeit: gut für kurze Prozesse, lange müssen warten, verbessert mittlere Wartezeit Bestes Verfahren: je nach dem sehr viele Faktoren - Unix Scheduling SVR3 und 4.3 BSD Verfahren: - MLF und RR innerhalb jeder Queue, dyn Prio Basispriorität: Benutzer und Systemprozesse Rescheduling: alle 100ms (10x pro sek) Prio Neuberechnung alle Sekunde SVR4: vollständig überarbeitet: auch RealTime Prio SVR3: - Swapper, Block IO Device, FileManipulation, Character IO, User Prio0..n Prio SVR4 160 Priostufen - 3 Klassen RealTime100-159, Kernel60-99, Durchsatz: hoch Fairness: bestraft lange Prozesse Verhungern: möglich für lange Prozesse Overhead: relativ hoch: Schätzung der Bedienzeit NPS: Priority Scheduling - Jeder Prozess hat Priorität (bei gleicher FIFO) - Reiht an richtige Stelle in ReadyQueue oder - Hat mehrere ReadyQueues nach Priorität Verhungern: möglich bei tiefer Priorität Abhilfe: regelmässig Prio erhöhen (dynamische Prioritäten) Windows 2000 Scheduling - Scheduler und Dispatcher getrennt - Ausschliesslich Thread Scheduling - ML (MLF) 32 Priostufen 2 Klassen o 16-31: RealTime, RR Queue o 0-15: Varible Prio MLF - Unterstützt symmetrisches Multiprocessing TimeSharing0-59 (Preemtion Point im Kernel = unterbrechung möglich) - Real-Time: läuft bis höhere prio kommt, oder abgibt/blockiert FIFO oder RR pro Queue - TimeSharing: laufen wenn keine RealTime bereit MLF dyn Prio - IO Priorisiert, CPU schnell 0 Prio Fair-Share Scheduling (Erweiterung auf ganze Gruppe) - Prozess wird Gruppe zugeteilt (damit jede Gruppe gleich) - Priorität sinkt wenn Gruppe Prozess CPU intensiv nutzt Real-Time Scheduling - Gehört zu RMS Aufgaben Ereignisse der äusseren Welt, reele Zeit System muss schnell reagieren Richtigkeit hängt ab von: logischem Resultat + Zeitpunkt Meisst periodische Tasks Shorttime Scheduler wichtigste Komponente Klassifizierung: o Hard: Zeit muss eingehalten werden o Soft : Zeitbedinung in Etwa einhalten Strategien: Rate Monotonic Scheduling (RMS): Preemtives periodisch unterprechbar,voneinander unabhängige Tasks - - Idee: Priorität proportional zur Repetitionsrate des Jobs Diskussion: konservativ, preemtiv mit fest Prio, u < 70 sicher einplanbar Earliest Deadline Scheduling - Idee: Dyn Prio basiernd auf Fristablauf - Prozess meldet Präsenz und Deadline - Scheduler sortiert ReadyQueue nach kürzester Deadline (wer muss als nächstes fertig sein) - Bei gleicher Deadline weitere statische Prio Theoretisch 100% Aulastung möglich (kompliziert) Concurrency Synchronisation Zusammenarbeit von Prozessen - Konkurrenz: Prozesse wissen nichts voneinander Kooperation: wissen von Prozess kennen ihn aber nicht gemeinsame Ressource - Kooperation2: wissen voneinander lösen gemeinsam Aufgaben Kritischer Abschnitt muss über MUTEX Mutual Exclusion gesichert werden. Lösungen: - Softwarlösung: unahägig von anderen Bedingungen Hardwarlösungen HW Unterstützung: Maschineninstruktionen Mit Hilfe BS: Funktionen, Semaphore Mutexes Zusammen mit Programmiersprache: Monitor Hardware Lösungen - Ermöglichen einfache SpinLocks Einfache Software Gleiche Nachteile wie Sotwarelösungen Prinzip: verhindern das Programm beliebig unterbrochen werden kann - Interrupt ausschalten - Atomare Instruktionen (testAndSet): Anfrage und Sperren dürfen nicht unterbrochen werden Interrupt ausschalten - Idee: nur Interrupt unterbrechen Code abschalten Nur Uniprozessoren möglich, Nachteil: Performance Monitore Monitor-Methode: läuft nur einmal gleichzeitig, und durch, zugriff auf die Sensiblen Daten Prozesse auch in Warteschlangen gehalten wait, notifiy Vorteile: Nicht selbst programmieren Gemeinsame Daten geschützt Nachteile: Synchronisation liegt beim Programmierer Software Lösungen Lösungsansatz mit Fehler bool besetzt = false; do { while(besetzt) { }; // busy wait besetzt = true; … kritischer Abschnitt… besetzt = false; } while (!finished); Lösungsansatz 2 //Prozess 1 //Prozess 2 while (true) { while (true) { while (dran != 1) {}; while (dran != 2) {}; kritischerAbschnitt() kritischerAbschnitt() dran = 2; dran = 1; … … } } Problem: Prozesse nur Abwechslungsweise, busy wait/spinlock konsumiert Rechenzeit Semaphore (Bahn-Ampel) oben=offen unten=geschlossen Vorteile: - Kein busywait (normalerweise) Wartende Prozesse in ReadyQueue und Semaphore Warteliste Nachteil: - Up/down in unterschiedlichen Prozessen böswillig Zusammenarbeit vereiteln Glossar: Priority Inversion P(S): testen, V(S) erhöhen semWait(S): down semSignal(S): up Struct typedef struct { int count; ListOfProcess queue; } semaphore; semaphore S; Funktionsweise Vor kritischem Abschnitt down = sperren Nachher up = öffnen Semphore Zusätzliches Reihenfolge: Abwechelnd 2 Semaphore Producer Consumer Problem Deadlocks Klassen von Ressourcen - Preemptable: entziehbar ohne probleme CPU - Nonpremptable: Probleme CD, Drucker Starvation(Verhungern): Prozess erhält keinen Zugriff auf Ressource Deadlock(Verklemmung): Prozesse warten gegenseitig auf Freigabe von Resource Bedingung: MUTEX: Min eine Ressouce exklusiv reserviert Hold and Wait: min 1 Prozess hat reserviert und wartet auf andere schlechte Ressourcennutzung, sequenz Ablauf No preemption: reservierte Res kann nicht entzogen werden wenn P warten muss, alle Resourcen freigeben, oder prüfen ob anderer hat (freigeben oder warten) - Circular wait: jeder wartet au einen anderen Ressourcen in vorgegebener Reihenfolge allozieren Umgang: - Prevention (verhindern) siehe Bedingungen Avoidance (vermeiden) überprüfen ob Deadlock eintreten könnte, schwierig Detection(zulassen) lösen Prüfen wenn: CPU Auslstung sehr tief, alle Stunde Lösen: alle beteiligten Prozesse stoppen, nacheinander bis gelöst (wenigste CPU nutzer, wenigsten Output, kleinste Prio) - Ignorieren (Ostrich algorithm) meiste OS Interprozess-Kommunikation IPC Datenaustausch Gründe für Zusammenarbeit: - Parallelarbeit: Leistungssteigerung Vereinfachung der Struktur Echtzeitsystem: unterschiedliche Wiederholraten - Informationsaustausch benötigt: authetifizierung Interaktion erfordert: - Synchronisation: Ausschluss und Reihenfolge - Kommunikation Man unterscheidet: - Kommunikations-Art: innerhalb System oder Netzwerk BS muss Mechanismen bereitstellen Kommunikation-Modell: Erzeuger/Verbraucher - IPC-Technik: Gemeinsamer Buffer, Message Passing MP, Object Stream(Pipes/Sockets) Unterschied: IPC und Synchronisation - Synchro: nur einer darf machen - IPC: einer nimmt entgegen und macht es IPC in Unix System V: ältere API, flexible, leistungsfähiger, komplex - POSIX: Portable Operation System Interface for Unix API Standard, nicht auf jedem Unix, weniger flexible, einfacher zum Verwenden IPC-Techniken Message Passing (MP) - Häufigstes Verfahren Strukturierte Daten BS: stellt Zugriffsfunktion, Verwaltungsaufgaben Anwender: verantwortlich für Verpacken der Daten Aufwendiger, langsamer, einfach zu benutzen, auch verteilte Systeme alternativ socket und pipes Bsp: Message Queues Shared Objects (Shared Memory) - Meist innerhalb System BS: stellt gemeinsamen Speicherberich Einfach, schnell, synchonisation verwaltet von Anwender Bsp: Shared Memory, memory mapped files Object Streams - Sequenz von Bytes (unstrukturiert) BS: stellt FIFO Queue zur Verfügung - Bsp: Pipes, Sockets IPC Ressourcen: System V Erzeugen: msgget(), shmget(), semget() Verwenden: msgsnd(), msgrcv()… Freigeben: shmctl sonst blockiert Resource verfügt: ID und Schlüssel (IPC_PRIVATE kein Schlüssel) key_t key; path = "/tmp/key1_file.001"; int projID = 4559; key = ftok(path, projID); Shared Memory (schnellste Form) Shared Memeory Tabelle: enhält alle Segmentbeschreibungen Erzeugen: IDs austauschen: abmachen, ftok, File, fork vererben Message Queues - msgget() erzeugt oder öffnet Message Queue msgsnd() sendet Nachricht (sizeof(myMessg)) msgrcv() empfängt Nachricht, erste Nachricht mit übereinstimmendem Typ msgctl() Steuerung der Message Queue, z.B. löschen der Queue, etc (( shmctl(id, IPC_RMID, NULL); // löschen Zugriff: Pipes - FIFO Buffer mit fester Grösse - Vom Kernel verwaltet - Halbduplex - Ähnlich Message Passing aber unstrukturiert Lesen Schreiben: - read(filedescriptor ,*buffer ,anzahl_bytes) - write(filedescriptor ,*buffer ,anzahl_bytes) Typen: - Named Pipes: Spezialdatei erzeugt - Unnamed Pipes: Paar Filedescriptor: nur verwandte Prozesse Unnamed Pipes Beipspiel Message Passing - Synchron asynchtron: warten aufeinander Send/receive(dest/source/msg) Mailbox oder port: gehört BS, gehört Prozess - Aufbau: Header (MType, DestinationID, SourceID, Length, Control Info), Body (MessageContent) Named Pipes Beispiel Sockets Socketverbindung: Server und Client IP Adresse + Port Protokolle: UDP verbindungslos, TCP verbindungsorientiert TCP/IP Sockets: IP und Port Unix Domain Socket: Adresse über Pfadname File, binden mit bind Shared Files Memory Mapped Files - Kommunikation über Files Sehr einfach Eher langsam - Files im Speicherbereich abgebildet Schneller Keine Synchronisation - Keine Synchroniation - User verantowrtlich für zurückschreiben Semaphore POSIX V System Memory Management Einfaches Memory Management - Ganzer Prozess im Speicher Einfaches Paging Einaches Segmentation Bsp: Mobiles, Palm, emmbedded Systems Verfahren: fixed Partitioning, dynamic Partitioning, paging, segmentation Logische und Physische Adressen - Compiler erzeugt Code mit relativen Adressen Referenzen unabhängig von tatsächlich Physischen Adressen Swapping - Nicht alle Prozesse Platz im Speicher Auslagern von Prozess/Teil zu Disk Prozessstruktur im Speicher - Prozesskontrollblock Programm Datenbereich - Stack Fixed Partitioning - Aufteilung Speicher in mehrere Partitionen Prozessanzahl damit vorgegeben Auslagern falls mehr Prozesse Falls Prozess zu gross Overlays realisieren Nicht volle Partition internal fragmentation Nutzung: ineffizient - Verbesserung: verschieden grosse Partitionen mehr Swapping: weil Partitionen bleiben leer wenn kein Prozess passt Virtual Memeory MM Aufgaben - Relocation: verschieben an beliebigen Ort Swaping Compaction Protection: gegenseitige beeinflussung von Prozessen verhindern Sharing: gemeinsame Bereiche bereitstellen Logical Organisation: lineare Folge und Segmente (Programm, Daten, Stack) - Physical Organisation: Realisierung in Haupt und Sekundärspeicher Virtual Memory - Nur aktiver Teil im Speicher rest sekundär Speicher Paging Hard und Softwareunterstützung notwendig Bsp: Workstation, Server, PCs Funktionsweise - Prozessor referenziert virtuelle Adresse Page in Speicher ok nicht im Speicher blockiert Prozess, holt Page von Disk VM basiert auf Lokalitätsprinzip (Raum,Zeit) Adressübersetzung - PageTable aufwändiger Grosse Tabellen: PTable selbst virt. Speicher, Multilevel Organisation, Hash Page Table, Inverted Page Table Dynamic Partitioning - Grösse und Anzahl variabel (Partition) Nachteil: bilden sich Löcher compaction: verschieben von Prozessen Dyn Part: Placment Algorithmus - First-fit: sucht ersten Platz Speicheranfang: bester Next-fit: sucht Platz am Schluss Speicher Best-fit: sucht kleinsten passenden Block: schlecht - Nichts gefunden Auslagern Dyn Part: Buddy System Unix verwendet Variante - Multilevel Organisation - Mehrere Hierarchische Tabellen: directory, page Zwischen fixed und dynamisch Schnelle allocation und deallokation Solange Blöcke halbieren bis noch knapp passt Modifikation: lazy recombination wartet mit zusammenführen Paging (nicht mehr zusammenhängende Speicherbereiche) - Prozesse in Blöcke teilen Pages Speicher in gleichgrosse Blöcke teilen Frames Beliebig Pages an Frames zuweisen Konsequenz: Prozesse müssen nicht mehr zusammenhängen - Übliche Pagegrösse: 1KB, 4KB, 8KB - Pro Prozess: Page-Tabelle - Zusatztabelle: Freie Blöcke Adressumwandlung (Logisch Physisch) - Logische Adresse besteht aus Pagenummer und Offset Pagenummer wird mit Framenummer ersetzt Pagetabelle hat max für jede Page Eintrag Hashed Page Table: PageNummer als HashWert verwendet, Liste mit Pagenummer und Framenummer Invertierte Page Tabelle: pro Frame ein Eintrag mit PID und PageNummer Resident Set Management: Menge der einem Prozess zugeteilten Frames bestimmen Working Set: letzter Zeit zugewiesene Frames BuddySystem: Sequenz siehe links Segmentation - Anwenungsprogramme bestehen aus Segmenten (Programm, Daten, Stack) Zusammenhängender Adressraum, exteren Frag. - Aufwändig, schutzfunktion, braucht Segmenttabelle Filesysteme - Stellt Mechanismen zur permanenten Speicherung zur verfügung Einfache Zugriff auf Informationen durch File Abstraktion (File Konzept: FileName, Logische Struktur) File Protection: Regelung des Zugriffs Abbildung von Files in Physischem Gerät - übernimmt BS Interpretation ist Sache der Applikation Anforderungen: - Einfache Benutzbarkeit Effizient: DiskSpace ausnutzung gut Geschwindigkeit Schutz: berechtigungen Benutzer Operationen - Erzeugen, löschen, ändern, lesen schreiben, Zugriffsart festlegen File System Organisation File-Organisation (Baumstruktur) - Partitionen Directories (Files mit Referenzen auf Dir,File) Directory Operationen - File suchen,erzeugen,löschen, umbenennen Inhalt auflisten Rekursiv traversieren/durchlaufen Directory Implementation - Linerare Liste: Unix suche aufwändig Bäume/Graph: Mac/Windows Hashtable: effizient aber kollisionen File Organisation Zugriff FileAttribute - In FileControlBlock gespeichert: FCB im I-Node Win: Master File Table Name, Typ (falls unterscheidet), Size, Besitzer, Protection, Date, Links BS hat OpenFileTable und jeder Prozess hat FileTable File Control Block - Permissions File dates: create access write Besitzer, Gruppe Filesize - File data blocks File-Typen: signalisieren interne Struktur - Directories System Files: Gerätedateien, named pipes, links Ausführbare Programme Regular Files: alle anderen Unterscheidung: Dateiendung, bits im zugriffsrecht UNIX, Magic Numbers (Zahl in ersten Byte), FileHeader Interne Filestruktur - File hat logisch Struktur != physikalische DiskBlöcke Zugriffsarten Records - Sequenziell access read write : lesen bis richtige Stelle Direkter Zugrif (random access): Berechnung mit seek File besteht aus logisch numerierten Records - Fileoperation braucht zusätzlich RecordNummer (Offset zum Anfang) Naming - Jedes File eindeutiger PfadName File Sharing und Schutzmechanismen Zugriffsschutz - Basiert auf Benutzeridentität Traditionell: 3Typen user, group, other Heute: ACL Access Control Lists z.B. NTFS Linux2.6 Jede Datei kann ACL haben Konsitenzsemantik - Unix: sofort sichtbar Andrew File System: Caching, noch nicht sofort sichtbar - Immutable Shared Files (Read Only) File Systeme und File Management Record Locking - Mehrfachnutzung denkbar Mutex auf Files notwendig Exklusiver Zugriff - Ganze Datei sperren: ineffizient Record-Locking: nur Teile sperren BS unterstützung notwendig: fcntl() Datenbanken - Eigene Fileverwaltung Journaling - Verhindert Inkonsitenz bei Crashes Änderungen am Filesystem über Transaktionen Modern BS Journaling bsp ext3 NTFS Modi: ordered (nur Metadaten), writeback, journal (Daten auch) Quotas - File System Implementation Speicherung in Blöcken (32Bytes-4096 oft 512) Virtuelles File System VFS - Vereinheitlicht Zugriff unterschiedlicher FS (ex3, ex2, NTFS, FAT) File Allocation - Contingous: Blöcke kontinuierlich hintereinander (kleine Files) Unterstütz: sequential + direct access Problems: exterene Fragmentation, freien Platz finden, Wieviel Platz bei neuen Files Linked: Blöcke bilden verkettete Liste Start Ende bekannt, Block weiss wie weiter Problem: Ineffizient kein direct access, Zeigerverlust FAT16/32 Grenzen für Disk Usage: normalerweise pro Anwender (max Speicherplatz) Free Space Management - Bitmap: Block entspricht Bit 1 / 0 Abfolge frei besetzt LinkedList: ineffizient multiple blocks Grouping: erster Block Liste freier Blöcke, letzte Adresse weiterer Block Counting: Zeigt auf Block und wieviele ab da frei verbesserung durch clustering Indexed: Speichert Blockzeiger in einem IndexBlock (grosse Files) Vorteile: keine externen Fragmente, effizienter Direct Access Problem: Zeigerblock braucht Speicher Blöcke wiederum Linken(Linked Schema) oder zu anderen Linked Blöcken Multilevel Beispiele Unix Windows DOS - Bootblock: Code zum starten von BS Superblock: beschreibt Aufbau FS (Grösse, Anz Datei, freier Platz, Inode info) Inode Liste: enthalten Informationen zu Files Datenblöcke: echte Daten Verwaltung I-Nodes - Superblock hat Array von freien Inodes, keine mehr sucht im Speicher - Mksfs Maximale Filegrösse direkt 10K, 1 indirekt 256K doppelt 64M triple 16G FAT File Allocation Table Zahl für Zeigergrösse bit - Verkettete Listen File: folge von Clustern Redundant Max Disk: FAT12 2GB, FAT32 2TB NTFS NT Filesystem - - Wiederherstellbar (Journaled FS) Daten in Clustern (512, 1KB, 2KB, 4KB) Defekte Cluster erkennen und marieren Sichert bootsektor MasterFileTable MFT Array von 1KB Records ähnlich I-Nodes 1Record pro File MFT-Record: Sammlung Attribut-Wert Paar kleine Files direkt im Databereich grosse Files indexed allocation Jedes File hat ACL Liste (Berechtigung) Features: Bereitstellungspunkte: mounten von Beliebigen Dateisystemen in Ordner, Quotas (Datenträgerkontingente) Virtual Cluster Nr. Logical Cluster Nr. Input / Output - Hauptaufgaben Computer: I/O und Processing BS: verwalten und steuern Geräten - Entwicklungen: Standards: USB, FireWire, PCI, Vielfalt von I/O Peripherie Busse - AGP: schneller Zugriff Hauptspeicher für Grafik PCI: universeller Peripheriebus SCSI: Disks, RAIDs, Scanner IDE: Disks, CD, DVD, etc. - Expansion: USB, Parallel Seriell Ports Interaktion zwischen Prozessor und Gerät - Polling (busywait, synchron) Interrupt (asynchron) - DMA (hintergrund asynchron) Ziele IO Software - Geräte unabhängigkeit Einheitliche Namensgebung Fehlerbehandlung: möglichst HW nahe Asynchron/synchron IO Bufferung: Vorverarbeitung - Sharing: gemeinsam genutzt Geräte Kernel stellt Services zur Verfügung - I/O Scheduling Buffering: gibt nicht gleichschnell an UserProzess weiter Caching: z.B. Disk Cache Spooling: Speicher für Device Drucker - Reservation: Zugriffsreservation Error-Handling - Temporäre und permanente Fehler IO Charakteristiken - Zugriffsmethode: sequenziell: feste Reihenfolge; random: Anwender sagt was Blocking vs Non-Blocking IO - Meiste Blocking System Calls - Typische non-blocking: Maus,Keyboard, Video Interface Linux Treiber werden als Module geladen, gehören zum Kernel - Mknod /dev/MyDev c 127 0 verbindet Device File mit Major Nr. - Register_chrdev(127, „MyDriver“, &myFileOps): registriert Treiber im BS Disks Windows - Disk Zugriff - Grosser Einfluss auf Performance Zugriffssequenz - Anfrage durch Prozess: warte auf Gerät 𝑡𝑤 , warte auf Kanal 𝑡𝑘 , Zugriff: 𝑡𝐴 Kopf positionieren seek time Warte bis Sektor unter Kopf rotation latency - Datentransfer Seek Time 𝑡𝑆 : 1/3max Positionierungsstrecke + mechanischs Einschwingen mittlere Poszeit: 7-12ms Rotations Latency 𝑡𝐷 : Zeit ½ Drehung Data TransferTime 𝑡𝑇 : 𝑡𝑇 = 𝑡𝑅 ∙ 𝑏/𝑁 //b = bytes lesen N bytes pro Track Mittlere Zugriffszeit: 𝑡𝐴 = 𝑡𝑆 + 𝑡𝐷 + 𝑡𝑇 Disk Scheduling - RAID Redundant Array of Independent Disks - Disk unzuverlässig MTBF 20-100 Jahre N Disks N mal kleiner Idee: mehrere Disks als zuverlässiger Massenspeicher Mit HotSpares (Ersatzplatten) Reparaturzeit nahezu Null Prinzip - Rechner sendet Daten in Blöcken RAID Controller stückelt Daten (Striping Einheiten)und verteilt sie an Disks mit Schutzdaten Striping Einheite: Bit, Byte, Wort, Block Levels: - 0: Verteilt auf mehrer Disks (grössere Disk) schnell schreiben und lesen, kein Datenschutz 1: gespiegelt kein Datenausfall, paralleles Lesen, Schreiben langsamer, doppelte Disks 5: Parity auf Disks Random Acces für Filezugriff schlecht Zugriff über zusammenliegenden Blöcken besser Lösung Zusammenliegende Blöcke: Clustering - Intelligente Zugriffsreihenfolge: Diskscheduling Scheduling Verfahren: - FIFO: Auftragsreihenfolge, hin und herschwingen SSTF (Shortest Seek Time First), kürzester Weg zu Block SCAN (Scanning: hin und her): Annahme Anfragen gleich verteilt - C-SCAN(Circular Scanning ): verbessert mittlere Wartezeit im Vergleich zu SCAN Welches Scheduling SSTF oder SCAN - Abhängig von Typ und Anzahl Einflussfaktor: Allocation Methode contigous und cluster: Blöcke beieinander - Linked oder indexed: Blöcke verteilt - Daten noch verfügbar, aber leichte Schreibleistungseinbusse Realisierungsformen - Software: über SCSI Interface, von meisten BS angeboten RAID über Bootplatte geladen, was wenn vorher crashed Interne Hardware: PCI RAID Controller - Externe Hardware: SCSI Interface zu RAID Controller Glossar Kernel Herz des OS, nimmt Hauptaufgaben war. Stellt Anwendungen Grunddienste über SystemCalls zur verfügung. (Filemanagement, Security, IO, MemoryManagement, MultiUser) System-Calls Befehle die von Applikation aufgerufen werden können und zum Aufruf von Kerneldiensten führen Shell Normales Programm mit Befehlen die Kernelinterface aufrufen. Treiber/DeviceDriver Geräteansteuerung das in Kernel eingebunden wird, um mit denselben System-Calls angesteuert zu werden. Interrupts HW sagt Kernel mittels Interrupts das, es Daten vom I/O HW jetzt einlesen soll. Aktuelle Ausführungen werden unterbrochen. Bieten möglichekti CPU für merhere Programme zu nutzen. PC / IP Programmzähler: Adresse der nächsten Instruktion Instruktionsregister Aktuelle Instruktion Processor Status Zustandsinformationen, Interrupt enabled/disabled, Systemmode oder UserMode Bit Word Polling Busy-Wait: Wartet ab bis Datenwert gedruckt im Gegensatz zu Interrupt wo CPU anders weiterarbeitet DMA Direct Memory CPU richtet Anfrage an DMA Einheit, diese gibt Datenblöcke direkt an/aus Speicher Acces Cache Beschleunigt Speicher indem Daten nicht vom Speicher sondern Cache geholt werden können. Speichert bsp Daten die schon Zugegriffen wurden Cache Miss Hit Ratio h Monitor Uniprogramming Virtueller Speicher Scheduling Thread BIOS MBR Boot Record Boot Loader Interleaving Prozessimage ISR Dispatcher Time-slice Bedienzeit= Bursttime Race Condition Kritischer Abschnitt MUTEX Priority Inversion Starvation Internal fragmentation Rendez Vous Sektor Cluster I-Node MTBF Daten nicht im Cache gefunden Wahrscheinlichkeit, dass Speicherzugriff die Daten im Cache findet Primitives OS, reiht Auftrag an Auftrag Nur ein Programm läuft Fortlaufender Speicherberiech dessen (Pages) auf dem Physikalischen Speicher abgebildet werden (Frames) bzw. auch Swap File Rechenzeit Zuteilung an Prozesse Luaffähiger eigenständiger Programmabschnitt, haben untereinander auf selbe Daten Zugriff, braucht daher keine Umschaltung Basic Input Output System Enthält Informationen zum Starten eines Boot Loaders Linux: LILO oder Grub Scheinbares paralleles ablaufen von Prozessen, aber kleine stücke hintereinander Prozesse werden unterbrochen und später weitergeführt Prozess und Kontext Programm Daten Stack, etc. Interrupt Service Routine: Bei interrupt springt man in diesen Programteil Short Time Scheduler: Teilt Rechenleistung zu Zeit die einem Prozess zur verfügung steht um die CPU zu nutzen Ausführungszeit bis nächste IO Prozesse/Trheads gemeinsame Daten lesen schreiben und Resultat von Ausführungsreihenfolge abhängt Greift ein Prozess auf gemeinsame Daten zu befindet er sich in einem kritischen Abschnitt. Der Aufenthalt im kritischen Auschnitt muss gegenseitig ausgeschlossen sein. MUTUAL EXCLUSION Gegenseitiger Ausschluss: nur ein Prozess befindet sich im kritischen Abschnitt Prozess setzt semaphore ruft weiteren prozess auf der selbes Semaphore setzen müsste Block Lösung Priority Inheritance (parent vererbt ) Verhungern: weil man ewig wartet Deadlock oder Scheduling Wenn Partition nicht vollständig gefüllt wird von Prozess, Extern Frag: wenn Lücken entstehen die zusammen genügen würden aber nicht gesamter Block. Strafe Synchronisation wird so genannt warten aufeinander send und receive befehl warten Teilstück Disk auf einer Runde Mehrere Sektoren nebeneinander FileDescriptor: Eintrag in Unix-Dateisystem für eine Datei Pfad zeigt auf Inode, Inode zeigt auf Speicherplatz unter Windows FileRecords ähnlich Mean Time Between Failure