310 likes | 440 Views
Architekturentwurf. Philip Masser Martin Dobler Mathias Rieder Florian Reischer Christian Gmeiner Christian Hämmerle. Überblick. Beispielapplikation Architekturentwurf Kernel Treiber und Server Bootprozess Scheduling Interprozesskommunikation Swapping
E N D
Architekturentwurf Philip Masser Martin Dobler Mathias Rieder Florian Reischer Christian Gmeiner Christian Hämmerle
Überblick • Beispielapplikation • Architekturentwurf • Kernel • Treiber und Server • Bootprozess • Scheduling • Interprozesskommunikation • Swapping • Organisatorischer Rückblick • Planung weiterer Schritte
Beispielapplikation • Digitaler Bilderrahmen • Anzeigen von Bitmapbildern auf SD-Karte • Abspielen von Hintergrundsound von SD-Karte • Steuern der Bilderabfolge durch Tastendrücke • _ Vorwärts • _ Rückwärts • _ Slideshow
Rechte von Prozessen • 3 Privilegienstufen • Kernel darf alles • Unprivilegierte Prozesse • eingeschränkte SysCall API • kein Zugriff auf Hardware • Priviligierte Prozesse • volle SysCall API • können Privilegien vererben • können andere Prozesse beenden
Kernel • Mikrokernel • Kommunikation aus oberen Schichten via SYSCALLS (static LIB) • Mehr Stabilität und Flexibilität in den oberen Schichten
HAL • Für jede Architektur existiert eine eigene HAL • Funktionen für den Kernel • Ein- bzw. Ausschalten einer Interruptquelle • Hardwaretimer-Interface für Scheduler • Fault-Handler für unkontrollierte Exceptions • Funktionen für die Treiber • Registrierung auf Hardware-Interrupts • IO-Zugriff direkt auf Register • Automatisches PIO Setup für LEDs und Taster • Information über Devices und deren Ressourcen • Schnittstelle für DMA
Treiber und Server • Treiber und Server meist ein Prozess • Kommunikation mit Servern mittels SERVICE CALLS • Treiber kommunizieren mit Kernel mittels SYSCALLS • Möglichst komfortable API für den Programmierer (static LIB)
Sound Server und Treiber • Treiber und Server sind ein Prozess • Schnittstelle zum Sound-Chip und dem Audioausgang • Kein Buffering und Prefetching • LOAD(FILENAME) • PLAY() • PAUSE() • STOP() • SETVOLUME(LEVEL)
Bootprozess • startup_init (Generelles Hardware-Setup) • intmaindes Kernels • HAL initialisieren • InterruptHandler / Clock / Scheduler starten • IPC und Memory Management initialisieren • InitProcess starten • Treiber/Server starten • Eingebaute Programme starten (Shell…)
Scheduling • Anforderungen an den Scheduler • Minimale Latenzzeit(Antwort bzw Jobfertigstellungszeit) • Maximaler Jobdurchsatz • Maximaler Ausnutzungsgrad(I/O-Geräte müssen maximal ausgenutzt werden) • Fairness(Jeder Job bekommt Ausführungszeit, keiner verhungert)
Scheduling • Verfahren in Anlehnung an Round Robin • Viele Prozesse in RUNNABLE Status • Welcher Prozess wird ausgeführt, wenn Prioritäten benutzt werden? • 0 RUNNABLE Prozesse: Starvation(Abhilfe durch IDLE Prozess) • 1 RUNNABLE Prozess: Einfach • > 1 RUNNABLE Prozesse: ? Runnable Dead Running Dead Blocked Zombie
Scheduling • Präemptives Round Robin mit mehreren Queues für Prioritäten • Clock gibt Ticks über Interrupt • Quantum muss festgelegt werden • Tradeoff: Responsiveness vs. Scheduler Rechenzeit • Tannenbaum empfiehlt 100ms 7 /10 P P P P P P P P P P P HIGH-Priority . . . 2 /10 P P P P P P P P P P P 1 /10 P P P P P P P P P P P LOW-Priority
Scheduling • Speicherbedarf abhängig von • Maximaler Anzahl Prozesse • Anzahl Queues • Bei max. 256 Prozessen und drei Queues • 23.5 KB (24098 Bytes) • Bei max. 64 Prozessen und drei Queues • 6 KB (6050 Bytes)
Scheduling • Aufwände für Operationen • Anlegen eines neuen Prozesses • Maximal O(Anzahl Prozesse) • Mininmal Ω(1) • In der Regel: O(Anzahl Prozesse / 2) • Rescheduling • O(Anzahl der Prozesse) • Jedoch Zugriff auf Prozesse, Prozessswitches etc O(1)
Scheduling • Problem ? • Abhilfen • Response Ratio berechnen • Gewichtung der Prioritäten nach Anzahl Prozesse in der Queue
Scheduling und Echtzeit • Verfahren für harte Echtzeit scheinen nur wenig relevant • Rate Monotonic Scheduling • Deadline Monotonic Schedulingoptimiert für periodische Prozesse (Periodendauer = Deadline) • Lösung: RoundRobin welches die Ideen von Highest Response Ratio Next verwendet
Highest Response Ratio Next • Priorität wächst proportional zur Response Ratio t
Interprozesskommunikation • Grundsatzentscheidung: • Shared Memory oder nicht? • Shared Memory ist schnell aber gefährlich • Microkernel soll Stabilität bringen, • deshalb wollen wir auch ein stabiles IPC Lösung: Named Pipes
Simples IPC SoundServer.SetVolume Nachteil des simplen IPC sind die zahlreichen Syscalls Wie können wir Syscalls einsparen und die Kommunikation zwischen den Prozessen beschleunigen?
Pipe Datenstruktur Durch geschickte Wahl der Datenstruktur einer Pipe kann auf ein Synchronisiertes Lesen verzichtet werden: read-pointer write-pointer read-pointer erst NACHLeseoperation erhöhen.Prozess kann unterbrochen werden, kein Überschreiben LA A0 A2 A3 ... Ring-Array - Overhead durch Länge der Message+ Synchronisieren beim Lesen fällt weg Länge der Message A Message A : : B2 B3 ... 4 B0 B1
Interrupt Handling • Hardware-Interrupts werden vom Kernel verwaltet • Treiber können sich auf Interrupt request-# registrieren • Tritt Interrupt auf, wird dieser vom Kernel über IPC anden jeweiligen Treiber geschickt • Kernel quittiert Interrupt • Ausnahme: Interrupts für Clock-Treiber für Scheduler • Interrupt wird in der HAL abgehandelt und eineCallback Methode im Kernel aufgerufen.
Swapping • Problem: Wer übernimmt Swapping/Paging in einem Microkernel • KernelWann (Page fault)Wie (Strategie: z.B.: Least Recently Used) • SD-TreiberPhysikalisches Schreiben und Lesen der PagesDarf nicht ausgelagert werden • Kommunikation über IPCAuszulagernde Page (SD-Queue)Zu ladende Page (SD-Queue)Kernel (Scheduler) übergibt dem SD-Treiber die CPU
Organisatorischer Rückblick • Wöchentliche Dienstagsmeetings • Review der Ergebnisse aus letzter Woche • Besprechung der Wiki-Artikel • Problembereiche identifizieren • Detailresearch • Diskussion in der Gruppe • Neue Aufgabenverteilung für die kommende Woche • Research und Lösen der Aufgaben in Heimarbeit(ggf. in Partnerarbeit falls Themen und Aufgaben verwandt sind)
Organisatorischer Rückblick • Archivierung der Artikel und Ergebnisse mittels Wiki imPM-System www.assembla.com • Historisierung der Artikel • Tickets, Tasks, Messaging Service • Zeiterfassung • Subversion für Source Code und Präsentationen, Grafiken… • Automatische Email-Generierung an alle/bestimmte Mitglieder
Planung weiterer Schritte • Timebox 2 (bis 9.12.) • Implementierung des Betriebssystemkerns • Vollständiger Kernel, RS232 Server und Shell • Geschätzter Implementierungsaufwand 201 Stunden • Timebox 3 (bis 20.01.) • Implementierung der Treiber und Server, Beispielapplikation und erweiterte Funktionalitäten (DMA, Swapping…) • Geschätzter Implementierungsaufwand 225 Stunden