ciao an aspect oriented os family for resource
play

CiAO: An Aspect-Oriented OS Family for Resource-Constrained Embedded - PowerPoint PPT Presentation

CiAO: An Aspect-Oriented OS Family for Resource-Constrained Embedded Systems Daniel Lohmann Wanja Hofer Wolfgang Schrder-Preikschat Friedrich-Alexander University Erlangen-Nuremberg Jochen Streicher Olaf Spinczyk Technical University


  1. CiAO: An Aspect-Oriented OS Family for Resource-Constrained Embedded Systems Daniel Lohmann Wanja Hofer Wolfgang Schröder-Preikschat Friedrich-Alexander University Erlangen-Nuremberg Jochen Streicher Olaf Spinczyk Technical University Dortmund CiAO is aspect-oriented

  2. Motivation: Embedded Systems 2 2 wosch@cs.fau.de - USENIX 2009

  3. Motivation: Embedded Systems Goal: Reuse Scalability, Configurability, Tailorability 3 3 wosch@cs.fau.de - USENIX 2009

  4. Motivation: Configurability of eCos 4 4 wosch@cs.fau.de - USENIX 2009

  5. Motivation: Configurability of eCos Mutex options: PROTOCOL CEILING INHERIT DYNAMIC Kernel policies: Tracing Instrumentation Synchronization 5 5 wosch@cs.fau.de - USENIX 2009

  6. Motivation: Configurability of eCos Mutex options: PROTOCOL CEILING INHERIT DYNAMIC Kernel policies: Tracing Instrumentation Synchronization 6 6 wosch@cs.fau.de - USENIX 2009

  7. Motivation: Configurability of eCos Mutex options: PROTOCOL CEILING INHERIT DYNAMIC Kernel policies: Tracing Instrumentation Synchronization 7 7 wosch@cs.fau.de - USENIX 2009

  8. Motivation: Configurability of eCos Base implementation: Cyg_Mutex::Cyg_Mutex() { locked = false; owner = NULL; } Cross-cutting concerns: 34 #ifdef-blocks spread over 17 functions and data structures in 4 implementation units 8 8 wosch@cs.fau.de - USENIX 2009

  9. Motivation: Configurability of OS #ifdef hell  Difficult to understand, maintain, evolve  Lack of encapsulation in the implementation  Tangling of many concerns in one implementation unit  Scattering across several implementation units 11 11 wosch@cs.fau.de - USENIX 2009

  10. Talk Outline  Cross-cutting in Configurable System Software  Aspect-Oriented Programming (AOP) to the Rescue?  CiAO: Aspect-Aware OS Design  Evaluation: Suitability for Embedded Systems 12 12 wosch@cs.fau.de - USENIX 2009

  11. Talk Outline  Cross-cutting in Configurable System Software  Aspect-Oriented Programming (AOP) to the Rescue?  CiAO: Aspect-Aware OS Design  Evaluation: Suitability for Embedded Systems 13 13 wosch@cs.fau.de - USENIX 2009

  12. AOP to the Rescue?  AOP aids modularization of cross-cutting concerns well modularized concern badly modularized without AOP 14 14 wosch@cs.fau.de - USENIX 2009

  13. AOP to the Rescue?  AOP aids modularization of cross-cutting concerns  It does so by means of aspects aspect well modularized concern badly modularized without AOP with AOP 15 15 wosch@cs.fau.de - USENIX 2009

  14. AOP – Short Introduction  Encapsulation of (cross-cutting) concerns in aspects aspect components 16 16 wosch@cs.fau.de - USENIX 2009

  15. AOP – Short Introduction  Encapsulation of (cross-cutting) concerns in aspects  Aspects give advice to join points in the target system aspect components 17 17 wosch@cs.fau.de - USENIX 2009

  16. AOP – Short Introduction  Encapsulation of (cross-cutting) concerns in aspects  Aspects give advice to join points in the target system  Set of join points described by a pointcut expression aspect pointcut components 18 18 wosch@cs.fau.de - USENIX 2009

  17. AOP – Short Introduction  Encapsulation of (cross-cutting) concerns in aspects  Aspects give advice to join points in the target system  Set of join points described by a pointcut expression aspect pointcut Obliviousness & Quantification components 19 19 wosch@cs.fau.de - USENIX 2009

  18. AOP – AspectC++  Extension to C++ C++ Sources AspectC++ Sources  Source-to-source weaver ac++ Woven C++ Code c++ http://www.aspectc.org 01010001100 11011101001 Binary Program 20 20 wosch@cs.fau.de - USENIX 2009

  19. AOP – Why Can It Help?  Inversion of caller–callee binding: // traditional implementation void dingus() { …// do basic stuff #ifdef OPT_FEATURE thingy(); #endif } void thingy() { …// do optional stuff } 21 21 wosch@cs.fau.de - USENIX 2009

  20. AOP – Why Can It Help?  Inversion of caller–callee binding: // traditional implementation // AOP implementation void dingus() void dingus() { { …// do basic stuff // do basic stuff #ifdef OPT_FEATURE } thingy(); #endif } void thingy() advice execution(“% dingus()”) : { after() …// do optional stuff { } // do optional stuff } 22 22 wosch@cs.fau.de - USENIX 2009

  21. AOP – Why Can It Help?  Quantification over multiple join points: // traditional implementation void dingus_foo() { #ifdef OPT_FEATURE thingy(); #endif } void dingus_bar() { #ifdef OPT_FEATURE thingy(); #endif } void thingy(){ // do optional stuff } 23 23 wosch@cs.fau.de - USENIX 2009

  22. AOP – Why Can It Help?  Quantification over multiple join points: // traditional implementation // AOP implementation void dingus_foo() { void dingus_foo() { #ifdef OPT_FEATURE } thingy(); #endif } void dingus_bar() { void dingus_bar() { #ifdef OPT_FEATURE } thingy(); #endif } void thingy(){ advice execution(“% dingus % ()”) : // do optional stuff after() { } // do optional stuff } 24 24 wosch@cs.fau.de - USENIX 2009

  23. Talk Outline  Cross-cutting in Configurable System Software  Aspect-Oriented Programming (AOP) to the Rescue?  CiAO: Aspect-Aware OS Design  Evaluation: Suitability for Embedded Systems 25 25 wosch@cs.fau.de - USENIX 2009

  24. CiAO: Aspect-Aware OS Design  Goal of the CiAO project: Evaluate if AOP is suitable for the design of configurable embedded system software  Can AOP help to avoid #ifdef hell?  Is AOP efficient enough for the domain of embedded systems? 26 26 wosch@cs.fau.de - USENIX 2009

  25. CiAO: Aspect-Aware OS Design  Goal of the CiAO project: Evaluate if AOP is suitable for the design of configurable embedded system software  Can AOP help to avoid #ifdef hell?  Is AOP efficient enough for the domain of embedded systems?  Yes , if the system is designed in an aspect-aware manner Obliviousness? No! Quantification? Yes! 27 27 wosch@cs.fau.de - USENIX 2009

  26. CiAO: Aspect-Aware OS Design  Idea of aspect awareness: Provide unambiguous and statically evaluable join points.  Unambiguity : Important system state transitions can be captured by a pointcut expression.  Static evaluation : Avoid necessity for dynamic pointcut functions, which bear an overhead. 28 28 wosch@cs.fau.de - USENIX 2009

  27. CiAO: Aspect-Aware OS Design Loose coupling Visible transitions Minimal extensions  Result: Sparse base system designed with classes, most functionality provided by (optional) aspects  Three main aspect purposes:  Extension aspects : add features  Policy aspects : glue components together  Upcall aspects : bind behavior to lower-level events 31 31 wosch@cs.fau.de - USENIX 2009

  28. Extension Aspects  Example: task scheduling // base implementation struct Task { Pri pri_; State state_; … }; class Sched { Tasklist ready_; Task::Id running_; public: void activate(Task::Id t); void reschedule(); … }; 32 32 wosch@cs.fau.de - USENIX 2009

  29. Extension Aspects  Example: task scheduling extended (resource control) // base implementation aspect ResourceSupport { struct Task { advice “Task” : slice struct { Pri pri_; ResourceMask occupied_; State state_; Pri originalPri_; … }; }; advice “Sched” : slice class { class Sched { public: Tasklist ready_; void getRes(Res::Id r) { Task::Id running_; // lock mutex public: } void activate(Task::Id t); void relRes(Res::Id r) { void reschedule(); // unlock mutex … } }; }; }; ResourceSupport.ah 33 33 wosch@cs.fau.de - USENIX 2009

  30. Policy Aspects  Example: specification of preemption points aspect FullPreemption { // points where another task may get a higher prio pointcut pcPreemptionPoints = “% Sched::activate(…)” || “% Sched::setEvent(…)” || “% Sched::relRes(…)”; advice execution(pcPreemptionPoints()) : after() { tjp->that()->reschedule(); } }; Preemption.ah 34 34 wosch@cs.fau.de - USENIX 2009

  31. Upcall Aspects  Example: binding of an interrupt handler aspect TimerBinding { advice execution(“% irq::Timer::handler(…)”) : after() { // handle IRQ } }; TimerBinding.ah 35 35 wosch@cs.fau.de - USENIX 2009

  32. Talk Outline  Cross-cutting in Configurable System Software  Aspect-Oriented Programming (AOP) to the Rescue?  CiAO: Aspect-Aware OS Design  Evaluation: Suitability for Embedded Systems 36 36 wosch@cs.fau.de - USENIX 2009

  33. Evaluation  Suitability of AOP for configurable systems  Increased modularization?  Scalability?  Suitability of AOP for resource-constrained systems  Resource efficiency?  Scalability? 37 37 wosch@cs.fau.de - USENIX 2009

  34. Evaluation  Suitability of AOP for configurable systems  Increased modularization?  Scalability?  Suitability of AOP for resource-constrained systems  Resource efficiency?  Scalability? 38 38 wosch@cs.fau.de - USENIX 2009

  35. Evaluation  Suitability of AOP for configurable systems  Increased modularization?  Scalability?  Suitability of AOP for resource-constrained systems  Resource efficiency?  Scalability? 39 39 wosch@cs.fau.de - USENIX 2009

Recommend


More recommend