Sparsamkeit und Effizeinz
This commit is contained in:
parent
4468c8aee8
commit
a9bc7d5452
@ -47,7 +47,7 @@ Gegenstand dieser Vorlesung: Konstruktionsrichtlinien für solche ,,High-End Bet
|
||||
- Quality ofservice(QoS) requirements
|
||||
- u.a.
|
||||
- ,,~ilities''
|
||||
- im Englischen: nichtfunktionale Eigenschaften eines Systems etc. informell auch als seine „ilities“ bezeichnet, hergeleitet von Begriffen wie
|
||||
- im Englischen: nichtfunktionale Eigenschaften eines Systems etc. informell auch als seine ,,ilities'' bezeichnet, hergeleitet von Begriffen wie
|
||||
- Stability
|
||||
- Portability
|
||||
- ...
|
||||
@ -242,7 +242,7 @@ Energiezustände beim Betrieb von Festplatten:
|
||||
- Schlussfolgerung: durch geringe Verlängerungen des idle - Intervalls kann signifikant der Energieverbrauch reduziert werden.
|
||||
|
||||
#### Prefetching-Mechanismus
|
||||
- Prefetching („Speichervorgriff“, vorausschauendes Lesen) & Caching
|
||||
- Prefetching (,,Speichervorgriff'', vorausschauendes Lesen) & Caching
|
||||
- Standard-Praxis bei moderner Datei-E/A
|
||||
- Voraussetzung: Vorwissen über benötigte Folge von zukünftigen Datenblockreferenzen (z.B. Blockadressen für bestimmte Dateien, gewonnen durch Aufzeichnung früherer Zugriffsmuster beim Start von Anwendungen -Linux: readahead syscall)
|
||||
- Ziel: Performanzverbesserungdurch Durchsatzerhöhung u. Latenzzeit-Verringerung
|
||||
@ -270,7 +270,7 @@ Energiezustände beim Betrieb von Festplatten:
|
||||
- Regeln für diese Strategie:
|
||||
1. Optimales Prefetching: Jedes _prefetch_ sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist.
|
||||
2. Optimales Ersetzen: Bei jedem ersetzenden _prefetch_ sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird.
|
||||
3. „Richte keinen Schaden an“: Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
3. ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
4. Erste Möglichkeit: Führe nie ein ersetzendes _prefetch_ aus, wenn dieses schon vorher hätte ausgeführt werden können.
|
||||
- Energieeffizientes Prefetching
|
||||
- Optimale Ersetzungsstrategie und 3 unterschiedliche Prefetching-Strategien:
|
||||
@ -286,7 +286,7 @@ Energiezustände beim Betrieb von Festplatten:
|
||||
- Auswertung: Regeln für energieeffiziente Prefetching-Strategie nach Papathanasiou elal.: [PaSc04]
|
||||
1. Optimales Prefetching: Jedes _prefetch_ sollte den nächsten Block im Referenzstrom in den Cache bringen, der noch nicht dort ist.
|
||||
2. Optimales Ersetzen: Bei jedem ersetzenden _prefetch_ sollte der Block überschrieben werden, der am spätesten in der Zukunft wieder benötigt wird.
|
||||
3. „Richte keinen Schaden an“: Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
3. ,,Richte keinen Schaden an'': Überschreibe niemals Block A um Block B zu holen, wenn A vor B benötigt wird.
|
||||
4. Maximiere Zugriffsfolgen: Führe immer dann nach einem _fetch_ oder _prefetch_ ein weiteres _prefetch_ aus, wenn Blöcke für eine Ersetzung geeignet sind. (i.S.v. Regel 3)
|
||||
5. Beachte Idle-Zeiten: Unterbrich nur dann eine Inaktivitätsperiode durch ein _prefetch_ , falls dieses sofort ausgeführt werden muss, um einen Cache-Miss zu vermeiden.
|
||||
|
||||
@ -333,7 +333,7 @@ Verlustleistung: $P_{leakage}$
|
||||
- Typ einer Anwendung
|
||||
- entscheidet über jeweilige Nutzererwartung
|
||||
1. Hintergrundanwendung (z.B. Compiler); von Interesse: Gesamt-Bearbeitungsdauer, Durchsatz
|
||||
2. Echtzeitanwendung(z.B. Video-Player, MP3-Player); von Interesse: „flüssiges“ Abspielen von Video oder Musik
|
||||
2. Echtzeitanwendung(z.B. Video-Player, MP3-Player); von Interesse: ,,flüssiges'' Abspielen von Video oder Musik
|
||||
3. Interaktive Anwendung (z.B. Webbrowser); von Interesse: Reaktivität, d.h. keine (wahrnehmbare) Verzögerung zwischen Nutzer-Aktion und Rechner-Reaktion
|
||||
- Insbesondere kritisch: Echtzeitanwendungen, interaktive Anwendungen
|
||||
|
||||
@ -413,7 +413,7 @@ Energiebewusstes RR: Reaktivität und Fairness
|
||||
- Beispiel: Synergie nichtfunktionaler Eigenschaften
|
||||
- Performanz nur möglich durch Parallelität $\rightarrow$ Multicore-Hardware
|
||||
- Multicore-Hardware nur möglich mit Lastausgleich und Lastverteilungauf mehrere CPUs
|
||||
- dies erfordert ebenfalls Verteilungsstrategien: „Energy-aware Scheduling“ (Linux-Strategie zur Prozessorallokation -nicht zeitlichem Multiplexing!)
|
||||
- dies erfordert ebenfalls Verteilungsstrategien: ,,Energy-aware Scheduling'' (Linux-Strategie zur Prozessorallokation -nicht zeitlichem Multiplexing!)
|
||||
|
||||
### Systemglobale Energieeinsparungsmaßnahmen
|
||||
- Traditionelle Betriebssysteme: Entwurf so, dass zu jedem Zeitpunkt Spitzen-Performanzangestrebt
|
||||
@ -434,8 +434,8 @@ Energiebewusstes RR: Reaktivität und Fairness
|
||||
- Steuerung/Strategien: Softwareunterstützungnotwendig!
|
||||
|
||||
Dynamisches Energiemanagement (DPM)- Strategien (Klassen) bestimmt, wann und wie lange eine Hardware-Komponente sich in Energiesparmodusbefinden sollte
|
||||
- Greedy: Hardware-Komponente sofort nach Erreichen des Leerlaufs in Energiesparmodus, „Aufwecken“ durch neue Anforderung
|
||||
- Time-out: Energiesparmodus erst nachdem ein definiertes Intervall im Leerlauf, „Aufwecken“ wie bei Greedy-Strategien
|
||||
- Greedy: Hardware-Komponente sofort nach Erreichen des Leerlaufs in Energiesparmodus, ,,Aufwecken'' durch neue Anforderung
|
||||
- Time-out: Energiesparmodus erst nachdem ein definiertes Intervall im Leerlauf, ,,Aufwecken'' wie bei Greedy-Strategien
|
||||
- Vorhersage: Energiesparmodus sofort nach Erreichen des Leerlaufs, wenn Heuristik vorhersagt,dass Kosten gerechtfertigt
|
||||
- Stochastisch: Energiesparmodus auf Grundlage eines stochastischen Modells
|
||||
|
||||
@ -496,7 +496,7 @@ weitere Einflussfaktoren: Speicherverwaltungskosten
|
||||
- dynamische Speicherreservierung durch Tasks
|
||||
|
||||
##### Beispiel 1: sparsam
|
||||
Prozesskontrollblock (PCB, Metadatenstruktur des Prozessdeskriptors) eines kleinen Echtzeit-Kernels („DICK“):
|
||||
Prozesskontrollblock (PCB, Metadatenstruktur des Prozessdeskriptors) eines kleinen Echtzeit-Kernels (,,DICK''):
|
||||
```cpp
|
||||
// Process Control Block (PCB)
|
||||
struct pcb {
|
||||
@ -631,6 +631,146 @@ Einflussfaktoren des Betriebssystems:
|
||||
- Modularisierung (zur Kompilierzeit) des Kernels: gezielte Anpassung an Einsatzdomäne möglich
|
||||
- Adaptivität (zur Kompilier-und Laufzeit) des Kernels: gezielte Anpassung an sich ändernde Umgebungsbedingungen möglich ($\rightarrow$ Cassini-Huygens-Mission)
|
||||
|
||||
## Architekturentscheidungen
|
||||
- bisher betrachtete Mechanismen: allgemein für alle BS gültig
|
||||
- ... typische Einsatzgebiete sparsamer BS: eingebettete Systeme
|
||||
- eingebettetes System: (nach [Manl94] )
|
||||
- Computersystem, das in ein größeres technisches System, welches nicht zur Datenverarbeitung dient,physisch eingebunden ist.
|
||||
- Wesentlicher Bestandteil dieses größeren Systems hinsichtlich seiner Entwicklung, technischer Ausstattung sowie seines Betriebs.
|
||||
- Liefert Ausgaben in Form von (menschenlesbaren)Informationen, (maschinenlesbaren)Daten zur Weiterverarbeitung und Steuersignalen.
|
||||
- BS für eingebettete Systeme: spezielle, anwendungsspezifische Ausprägung der Aufgaben eines ,,klassischen'' Universal-BS
|
||||
- reduzierter Umfang von HW-Abstraktion, generell: hardwarenähere Ablaufumgebung
|
||||
- begrenzte (extrem: gar keine) Notwendigkeit von HW-Multiplexing & -Schutz
|
||||
- daher eng verwandte NFE: Adaptivitätvon sparsamen BS
|
||||
- sparsame Betriebssysteme:
|
||||
- energieeffizient ~ geringe Architekturanforderungen an energieintensive Hardware (besonders CPU, MMU, Netzwerk)
|
||||
- speichereffizient ~ Auskommen mit kleinen Datenstrukturen (memory footprint)
|
||||
- Konsequenz: geringe logische Komplexität des Betriebssystemkerns
|
||||
- sekundär: Adaptivität des Betriebssystemkerns
|
||||
|
||||
### Makrokernel (monolithischer Kernel)
|
||||

|
||||
- User Space:
|
||||
- Anwendungstasks
|
||||
- CPU im unprivilegiertenModus (Unix ,,Ringe'' 1...3)
|
||||
- Isolation von Tasks durch Programmiermodell(z.B. Namespaces) oder VMM(private vAR)
|
||||
- Kernel Space:
|
||||
- Kernelund Gerätecontroller (Treiber)
|
||||
- CPU im privilegierten Modus (Unix ,,Ring'' 0)
|
||||
- keine Isolation (VMM: Kernel wird in alle vAR eingeblendet)
|
||||
|
||||
### Mikrokernel
|
||||

|
||||
- User Space:
|
||||
- Anwendungstasks, Kernel-und Treiber tasks ( Serverprozesse, grau)
|
||||
- CPU im unprivilegiertenModus
|
||||
- Isolation von Tasks durch VMM
|
||||
- Kernel Space:
|
||||
- funktional minimaler Kernel(μKernel)
|
||||
- CPU im privilegierten Modus
|
||||
- keine Isolation (Kernel wird in alle vAR eingeblendet)
|
||||
|
||||
### Architekturkonzepte im Vergleich
|
||||
- Makrokernel:
|
||||
- ✓ vglw. geringe Kosten von Kernelcode (Energie, Speicher)
|
||||
- ✓ VMM nicht zwingend erforderlich
|
||||
- ✓ Multitasking ($\rightarrow$ Prozessmanagement!)nicht zwingend erforderlich
|
||||
- ✗ Kernel (inkl. Treibern) jederzeit im Speicher
|
||||
- ✗ Robustheit, Sicherheit, Adaptivität
|
||||
- Mikrokernel:
|
||||
- ✓ Robustheit, Sicherheit, Adaptivität
|
||||
- ✓ Kernelspeicherbedarf gering, Serverprozesse nur wenn benötigt ($\rightarrow$ Adaptivität)
|
||||
- ✗ hohe IPC-Kosten von Serverprozessen
|
||||
- ✗ Kontextwechselkosten von Serverprozessen
|
||||
- ✗ VMM, Multitasking i.d.R. erforderlich
|
||||
|
||||
## Beispiel-Betriebssysteme
|
||||
### TinyOS
|
||||
- Beispiel für sparsame BS im Bereich eingebetteter Systeme
|
||||
- verbreitete Anwendung: verteilte Sensornetze (WSN)
|
||||
- ,,TinyOS'' ist ein quelloffenes, BSD-lizenziertes Betriebssystem
|
||||
- das für drahtlose Geräte mit geringem Stromverbrauch, wie sie in
|
||||
- Sensornetzwerke, ($\rightarrow$ Smart Dust)
|
||||
- Allgegenwärtiges Computing,
|
||||
- Personal Area Networks,
|
||||
- intelligente Gebäude,
|
||||
- und intelligente Zähler.
|
||||
- Architektur:
|
||||
- grundsätzlich: monolithisch (Makrokernel) mit Besonderheiten:
|
||||
- keine klare Trennung zwischen der Implementierung von Anwendungen und BS (wohl aber von deren funktionalen Aufgaben!)
|
||||
- $\rightarrow$ zur Laufzeit: 1 Anwendung + Kernel
|
||||
- Mechanismen:
|
||||
- kein Multithreading, keine echte Parallelität
|
||||
- $\rightarrow$ keine Synchronisation zwischen Tasks
|
||||
- $\rightarrow$ keine Kontextwechsel bei Taskwechsel
|
||||
- Multitasking realisiert durch Programmiermodell
|
||||
- nicht-präemptives FIFO-Scheduling
|
||||
- kein Paging$\rightarrow$ keine Seitentabellen, keine MMU
|
||||
- in Zahlen:
|
||||
- Kernelgröße: 400 Byte
|
||||
- Kernelimagegröße: 1 - 4 kByte
|
||||
- Anwendungsgröße: typisch ca. 15 kB, Datenbankanwendung: 64 kB
|
||||
- Programmiermodell:
|
||||
- BS und Anwendung werden als Ganzes übersetzt: statische Optimierungen durch Compilermöglich (Laufzeit, Speicherbedarf)
|
||||
- Nebenläufigkeit durch ereignisbasierte Kommunikation zw. Anwendung und Kernel
|
||||
- $\rightarrow$ command: API-Aufruf, z.B. EA-Operation (vglb. Systemaufruf)
|
||||
- $\rightarrow$ event: Reaktion auf diesen durch Anwendung
|
||||
- sowohl commands als auch events : asynchron
|
||||
- Beispieldeklaration:
|
||||
```cpp
|
||||
interface Timer {
|
||||
command result_t start(char type, uint32_t interval);
|
||||
command result_t stop();
|
||||
event result_t fired();
|
||||
}
|
||||
interface SendMsg {
|
||||
command result_t send(uint16_t address, uint8_t length, TOS_MsgPtr msg);
|
||||
event result_t sendDone(TOS_MsgPtr msg, result_t success);
|
||||
}
|
||||
```
|
||||
|
||||
### RIOT
|
||||
[RIOT-Homepage: http://www.riot-os.org]
|
||||
- ebenfalls sparsames BS,optimiert für anspruchsvollere Anwendungen (breiteres Spektrum)
|
||||
- ,,RIOT ist ein Open-Source-Mikrokernel-basiertes Betriebssystem, das speziell für die Anforderungen von Internet-of-Things-Geräten (IoT) und anderen eingebetteten Geräten entwickelt wurde.''
|
||||
- Smartdevices,
|
||||
- intelligentes Zuhause, intelligente Zähler,
|
||||
- eingebettete Unterhaltungssysteme
|
||||
- persönliche Gesundheitsgeräte,
|
||||
- intelligentes Fahren,
|
||||
- Geräte zur Verfolgung und Überwachung der Logistik.
|
||||
- Architektur:
|
||||
- halbwegs: Mikrokernel
|
||||
- energiesparendeKernelfunktionalität:
|
||||
- minimale Algorithmenkomplexität
|
||||
- vereinfachtes Threadkonzept $\rightarrow$ keine Kontextsicherung erforderlich
|
||||
- keine dynamische Speicherallokation
|
||||
- energiesparende Hardwarezustände vom Scheduler ausgelöst (inaktive CPU)
|
||||
- Mikrokerneldesign unterstützt komplementäre NFE: Adaptivität, Erweiterbarkeit
|
||||
- Kosten: IPC (hier gering!)
|
||||
- Mechanismen:
|
||||
- Multithreading-Programmiermodell
|
||||
- modulare Implementierung von Dateisystemen, Scheduler, Netzwerkstack
|
||||
- in Zahlen:
|
||||
- Kernelgröße: 1,5 kByte
|
||||
- Kernelimagegröße: 5 kByte
|
||||
|
||||
Implementierung
|
||||
- ... kann sich jeder mal ansehen (keine spezielle Hardware, beliebige Linux-Distribution, FreeBSD, macOSX mit git ):
|
||||
```bash
|
||||
$ git clone git://github.com/RIOT-OS/RIOT.git
|
||||
$ cd RIOT
|
||||
$ cd examples/default/
|
||||
$ make all
|
||||
$ make term
|
||||
```
|
||||
- startet interaktive Instanz von RIOT als ein Prozess des Host-BS
|
||||
- Verzeichnis RIOT: Quellenzur Kompilierung des Kernels, mitgelieferte Bibliotheken, Gerätetreiber, Beispielanwendungen; z.B.:
|
||||
- RIOT/core/include/thread.h: Threadmodell, Threaddeskriptor
|
||||
- RIOT/core/include/sched.h,
|
||||
- RIOT/core/sched.c: Implementierung des (einfachen) Schedulers
|
||||
- weitere Infos: riot-os.org/api
|
||||
|
||||
|
||||
# Robustheit und Verfügbarkeit
|
||||
# Sicherheit
|
||||
|
BIN
Assets/AdvancedOperatingSystems-makrokernel.png
Normal file
BIN
Assets/AdvancedOperatingSystems-makrokernel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
Assets/AdvancedOperatingSystems-mikrokernel.png
Normal file
BIN
Assets/AdvancedOperatingSystems-mikrokernel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Loading…
Reference in New Issue
Block a user