CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene...

21
1 CiAO (C iAO i s A spect-O riented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat Lehrstuhl für Informatik IV Verteilte Systeme und Betriebssysteme Friedrich-Alexander Universität Erlangen-Nürnberg [email protected] http://www4.cs.fau.de/~lohmann

Transcript of CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene...

Page 1: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

11

CiAO (CiAO is Aspect-Oriented)

Eine aspektorientiert entworfene Betriebssystemfamilie

Daniel LohmannOlaf SpinczykWolfgang Schröder-Preikschat

Lehrstuhl für Informatik IVVerteilte Systeme und BetriebssystemeFriedrich-Alexander Universität Erlangen-Nürnberg

[email protected]://www4.cs.fau.de/~lohmann

Page 2: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 22

Agenda Das CiAO-Projekt: Überblick

Problemfeld und Hintergrund

Ansatz

Beispiel

Zusammenfassung

Page 3: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 33

Das CiAO – Projekt: Überblick DFG-gefördertes BS-Forschungsprojekt (SCHR 603/4)

Eine WM-Stelle, zwei Studenten, seit Oktober 2004

Projektziele Entwicklung einer hochgradig anwendungsgewahren

Betriebssystem-Produktlinie für tief eingebettete Systeme- Gute Anpassbarkeit an die Anforderungen der Anwendung

- Geringer Ressourcenbedarf

Entwicklung eines wandlungsfähigen Betriebssystems- Komponentenimplementierung (Treiber, Scheduler, ...)

unabhängig von der Architektur (monolithisch, Mikrokern, Bibliothek, ...)

- Konfigurierbare nicht-funktionale Architektureigenschaften ... durch gezielte Verwendung von AOP

Page 4: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 44

Das CiAO – Projekt: Überblick Wissenschaftliche Fragestellung

Sind Aspekttechniken zielführend bei der Produktlinienentwicklung?

Lässt sich durch AOP ein (deutlich) höheres Maß an Konfigurierbarkeit erreichen?

Lassen sich damit insbesondere auch nicht-funktionale Eigenschaften / Architektureigenschaften konfigurierbar gestalten?

Wie sehen architekturtransparente BS-Komponenten aus?

Page 5: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 55

Problemfeld: Anwendungsanpassbarkeit

Zwei Dimensionen der Anwendungsanpassbarkeit

Granularität (Funktionale Auswählbarkeit) „Ich muss nichts einbinden, was ich nicht brauche“ Resultierende Systeme müssen klein sein! Geringstmögliche Anforderungen an die Hardware

Variabilität (Funktionale Anpassbarkeit) Verschiedenste Plattformen (8-64 Bit, mit/ohne MMU) Alle Eigenschaften lassen sich konfigurieren / anpassen

Page 6: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 66

Historie: Der PURE Nucleus 1995-2003, Uni Potsdam/Magdeburg feinere Granularität geht wohl kaum ;-)

preemption

synchronizationobjectification

dispatching

scheduling

propagation

interruption

preemptive4062

non-preemptive1699

cooperative1648

exclusive434

coordinative2306

interruptive1268

Page 7: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 77

Historie: Der PURE Nucleus 1995-2003, Uni Potsdam/Magdeburg feinere Granularität geht wohl kaum ;-)

preemption

synchronizationobjectification

dispatching

scheduling

propagation

interruption

preemptive4062

non-preemptive1699

cooperative1648

exclusive434

coordinative2306

interruptive1268

Was ist mit der Variabilität?

Page 8: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 88

Granularität und Variabilität

[Variabilität]

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

+ Windows

+ Linux

Linux ++ OSEK

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

[Gra

nula

rität

]Individualsystem +

[A n w e n d u n g s a n p a s s

b a r k e i t]

Page 9: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 99

Granularität und Variabilität

[Variabilität]

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

+ Windows

+ Linux

Linux ++ OSEK

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

[Gra

nula

rität

]

+ Windows

+ Linux

+ klassisches UNIX

Linux +

Individualsystem +

+ OSEK

embedded

[A n w e n d u n g s a n p a s s

b a r k e i t]+ PURE

ECOS +

Page 10: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1010

Granularität und Variabilität

[Variabilität]

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

+ Windows

+ Linux

Linux ++ OSEK

[A n w e n d u n g s a n p a s s

b a r k e i t]

Server / PC-Systeme

eingebettete Systeme

tief eingebettete Systeme

[Gra

nula

rität

]

+ Linux

Linux +

Individualsystem +

+ OSEK

+ PURE

embedded

+ CiAO ?

+ klassisches UNIX

ECOS +

+ Windows

Page 11: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1111

Im Fokus von CiAO: Variabilität

Konfigurierung nicht-funktionaler Eigenschaften Kernsynchronisation

- grobgranular, feingranular, ohne Unterbrechungsbehandlung

- Verteilung (Hardware, Scheduler)- Bearbeitung (Handlerfunktion, Prolog-/Epilog, Kernelthread, Prozess)

Speicherschutzkonzept- ohne, Segmentierung, Addressräume

Platzierung der BS-Komponenten- gemeinsam, Segmente, Addressräume, Prozesse

Interaktion zwischen BS-Komponenten- Prozeduraufruf, Nachricht, IPC

Optimierungen- Caching, Aufrufpfade

Page 12: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1212

Im Fokus von CiAO: Variabilität

Konfigurierung nicht-funktionaler Eigenschaften Kernsynchronisation

- grobgranular, feingranular, ohne Unterbrechungsbehandlung

- Verteilung (Hardware, Scheduler)- Bearbeitung (Handlerfunktion, Prolog-/Epilog, Kernelthread, Prozess)

Speicherschutzkonzept- ohne, Segmentierung, Addressräume

Platzierung der BS-Komponenten- gemeinsam, Segmente, Addressräume, Prozesse

Interaktion zwischen BS-Komponenten- Prozeduraufruf, Nachricht, IPC

Optimierungen- Caching, Aufrufpfade

Konfigurierbare Architektur

Page 13: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1313

Ansatz: Verwendung von AOP zur Implementierung querschneidender Belange

Strategien (Synchronisation, Ressourcenmanagement...) Plattformspezifische Optimierungen (Caching, Bypassing)

zur Bindung/Interaktion der Komponenten Je nach Zielarchitektur (Prozedur, Moduswechsel, IPC) Variabilität und Granularität durch lose Kopplung

zur Platzierung der Komponenten Je nach Zielarchitektur (Addressraum, Thread, Prozess)

Page 14: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1414

Ansatz: Verwendung von AOP zur Implementierung querschneidender Belange

Strategien (Synchronisation, Ressourcenmanagement...) Plattformspezifische Optimierungen (Caching, Bypassing)

zur Bindung/Interaktion der Komponenten Je nach Zielarchitektur (Prozedur, Moduswechsel, IPC) Variabilität und Granularität durch lose Kopplung

zur Platzierung der Komponenten Je nach Zielarchitektur (Addressraum, Thread, Prozess)

Komponenten müssen aspektgewahr entworfen sein

Page 15: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1515

RS232-Treiber, direkter Zugriff

class RS232 { ...public: void read(char*, int) { ... ... } ...};

int main() { ... RS232 com; com.read(buf, 16); ...}

Page 16: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1616

RS232-Treiber, konfiguriert als ProtectedComponent

class RS232 { ...public: void read(char*, int) { ... ... } ...};

int main() { ... RS232 com; com.read(buf, 16); ...}

class Mutex { ... void lock(); void unlock() };

aspect ProtectedComponent { pointcut virtual classes() = 0; pointcut virtual funcs() = 0;

advice classes() : Mutex _m;

advice execution(funcs()) : before { tjp->that()->_m.lock(); }

advice execution(funcs()) : after { tjp->that()->_m.unlock(); }

};

Page 17: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1717

int main() { ... RS232 com; com.read(buf, 16); ...}

class Mutex { ... void lock(); void unlock() };

aspect ProtectedComponent { pointcut virtual classes() = 0; pointcut virtual funcs() = 0;

advice classes() : Mutex _m;

advice execution(funcs()) : before { tjp->that()->_m.lock(); }

advice execution(funcs()) : after { tjp->that()->_m.unlock(); }

};

aspect RS232Config : public ProtectedComponent {

pointcut classes() = „RS232“; pointcut funcs() = „% RS232::%(...);};

RS232-Treiber, konfiguriert als ProtectedComponent

class RS232 { ...public: void read(char*, int) { ... ... } ...};

Page 18: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1818

int main() { ... RS232 com; com.read(buf, 16); ...}

class Mutex { ... void lock(); void unlock() };

aspect ProtectedComponent { pointcut virtual classes() = 0; pointcut virtual funcs() = 0;

advice classes() : Mutex _m;

advice execution(funcs()) : before { tjp->that()->_m.lock(); }

advice execution(funcs()) : after { tjp->that()->_m.unlock(); }

};

aspect RS232Config : public ProtectedComponent {

pointcut classes() = „RS232“; pointcut funcs() = „% RS232::%(...);};

class RS232 { Mutex _m;public: void read(char*, int) { __before_1(); ... ... __after_1(); } ...};

RS232-Treiber, konfiguriert als ProtectedComponent

Page 19: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 1919

RS232-Treiber, konfiguriert als MiniServer

int main() { ... RS232 com; com.read(buf, 16); ...}

class MiniServer : public Thread { ... void run() { AC::Action* act; while(true){ Thread& s=receive(ANY, act); act->trigger(); send(s); } } };

aspect MiniServerComponent { pointcut virtual classes() = 0; pointcut virtual funcs() = 0;

advice classes() : MiniServer _s;

advice call(funcs()) && !within(classes()) : around(){ send(tjp->target()->_s, &tjp->action()); receive(tjp->target()->_s); } };

class RS232 { ...public: void read(char*, int) { ... ... } ...};

Page 20: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 2020

RS232-Treiber, konfiguriert als MiniServer

int main() { ... RS232 com; __around_1( <com.read(buf, 16)> ); ...}

class MiniServer : public Thread { ... void run() { AC::Action* act; while(true){ Thread& s=receive(ANY, act); act->trigger(); send(s); } } };

aspect MiniServerComponent { pointcut virtual classes() = 0; pointcut virtual funcs() = 0;

advice classes() : MiniServer _s;

advice call(funcs()) && !within(classes()) : around(){ send(tjp->target()->_s, &tjp->action()); receive(tjp->target()->_s); } };

aspect RS232Config : public MiniServerComponent {

pointcut classes() = „RS232“; pointcut funcs() = „% RS232::%(...);};

class RS232 { MiniServer _s;public: void read(char*, int) { ... ... } ...};

Page 21: CiAO (CiAO is Aspect-Oriented) · 1 CiAO (CiAO is Aspect-Oriented) Eine aspektorientiert entworfene Betriebssystemfamilie Daniel Lohmann Olaf Spinczyk Wolfgang Schröder-Preikschat

© 2004 Daniel Lohmann, Olaf Spinczyk 2121

Zusammenfassung: Das CiAO-Projekt

Evaluierung von AOP im Betriebssystembau AspectC++

Konfigurierung von Betriebssystem-Produktlinien

Insbesondere nicht-funktionale Eigenschaften

Wandlungsfähiges Betriebssystem Architekturtransparente Komponenten

Durch Aspekte an konkrete Architektur angepasst

Ziel: Hohe Variabilität Grenzen der Konfigurierbarkeit

Kosten (Größe/Laufzeitoverhead) der Konfigurierbarkeit