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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend