Virtual Smalltalk Images - IWST - ESUG 2013

1,475 views

Published on

Virtual Smalltalk Images

Oz Object Spaces presented in IWST, ESUG 2013

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,475
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Virtual Smalltalk Images - IWST - ESUG 2013

  1. 1. Virtual Smalltalk Images: Model and Applications Guillermo Polito, Stéphane Ducasse, Luc Fabrese, Noury Bouraqadi jueves 31 de octubre de 13
  2. 2. The context: Pharo • Object oriented language • Dynamic typing • Highly reflective • Image based • Metacircular 2 jueves 31 de octubre de 13
  3. 3. Going meta has limitations [1,2] Metacircularities • • • hidden and uncontrollable dependencies e.g., • • core libraries (e.g., #do: iteration method) core tools (e.g., compiler, debugger) Once broken, they are not easily reconstructed VM still needed for many tasks (e.g., process manipulation) [1] Bootstrapping reflective languages: the case of Pharo, Polito et al. 2012 (in submission) [2] The meta in meta-object architectures, Denker et al. 2008 3 jueves 31 de octubre de 13
  4. 4. Some existing solutions • Casaccio et al. ’s object spaces[3] allowed atomic operations on classes • Bootstrapping a Smalltalk[1] allowed the recreation of an entire Smalltalk system to alter metacircularities • Pharo’s emergency evaluator allows recovery of some critical errors • Debugging/modifying the virtual machine to have complete control • • Changes file allows code recovery Ad-hoc solutions (copy the class, modify copy, replace...) [1] Bootstrapping reflective languages: the case of Pharo, Polito et al. 2012 (in submission) [3] Object spaces for safe image surgery, Casaccio et al. 2009 4 jueves 31 de octubre de 13
  5. 5. What we would like from a reflective system • • • • • Full control Atomicity of changes Interactive High level tools for system recovery Recovery of both code and application data 5 jueves 31 de octubre de 13
  6. 6. Our solution: Virtual images with Object Spaces • An full image is contained and controlled by another image • • • The container image is the host The contained image is the guest An Object Space[1] reifies the guest image and allows the host to manipulate it as an object [1] Gwenaël Casaccio, Damien Pollet, Marcus Denker, and Stéphane Ducasse. Object spaces for safe image surgery. In Proceedings of ESUG International Workshop on Smalltalk Technologies (IWST’09) 6 jueves 31 de octubre de 13
  7. 7. Object Spaces jueves 31 de octubre de 13
  8. 8. Oz Object Spaces the model A reification of a Smalltalk image with two main components: • • The guest image it contains and encapsulates A membrane of objects controlling the communication between host and guest objects 8 jueves 31 de octubre de 13
  9. 9. Oz Object Spaces the guest image The Model Host Metaclass Guest Class Metaclass class Metaclass Class Object Metaclass class A Caption: Object Smalltalk Image Object 9 jueves 31 de octubre de 13 Object Space
  10. 10. Oz Object Spaces the membrane The Model Host ToolA Guest ToolB Caption: Smalltalk Image Object 10 jueves 31 de octubre de 13 Object Space
  11. 11. The Model Oz Object Spaces membrane: the façade • The object space façade is the concrete reification of the guest image • Access to well known objects in the object space. e.g., nil, true and false • • Access to classes in the object space Conversion of literals form the host to the guest, and viceversa 11 jueves 31 de octubre de 13
  12. 12. The Model Oz Object Spaces membrane: mirrors • Direct object manipulation Field manipulation: get and set values from object fields • • • • • Testing and conversion operations. e.g., #isNil, #asBoolean Size calculation: get the size of objects Class access: introspect and modify the class of an object Some mirrors provide specialized operations. e.g., a ClassMirror supports the #basicNew operation 12 jueves 31 de octubre de 13
  13. 13. The Model Oz Object Spaces control of execution • Full control of an object space processes via mirrors i.e., create, suspend, resume and terminate processes and alter values of their associated contexts • Provide controlled windows of time for execution to an object space 13 jueves 31 de octubre de 13
  14. 14. The Model Oz Object Spaces control of communication • • One way communication: host to guest • Mirrors ensure that object injection is safe and fulfills the transitive closure property • Sending messages: the particular case of injecting a process with the desired code and introspect its result after finished • Literal translation from and to guest and host Communication is achieved by creating and injecting objects into the object space 14 jueves 31 de octubre de 13
  15. 15. Oz Object Spaces applications • • • • • Image surgery Image recovery and better Emergency Kernel Controlled interruption Image side Stack overflow and infinite loop detection Sandboxing 15 jueves 31 de octubre de 13
  16. 16. The Vision • • • • • • Many versions of the system running side by side Controlling resources at the language level Secure Completely modifiable and adaptable (while running) Specialized for particular needs With tools to analyze, modify and fix a system • • System surgeon System browsing and debugging 16 jueves 31 de octubre de 13
  17. 17. Virtual Smalltalk Images: Model and Applications • • • Oz Object spaces reify full Pharo images Irrestricted manipulation of guest’s objects through mirrors Control of guest’s execution 17 jueves 31 de octubre de 13
  18. 18. Behind Oz Object Spaces: the implementation 18 jueves 31 de octubre de 13
  19. 19. Oz Object Spaces the implementation We implemented Oz on top of Pharo20: • • Virtual machine support for multiple images Image side library to install in the host (implementing the membrane objects) 19 jueves 31 de octubre de 13
  20. 20. The Implementation Oz Object Spaces Challenging infrastructure • Special Objects Array: an array the VM uses to understand the running image objects i.e., the nil, true and false instances, the compact classes, etc • Green Threads: concurrency is managed with reified user-level threads, the Process instances. No real multithreading is supported • VM Single Interpreter Assumptions: global variables all around, plugin are single-interpreter aware 20 jueves 31 de octubre de 13
  21. 21. The Implementation Oz Object Spaces memory layout Host and Guest images share the same heap The Object Memory nil host • • • false true host nil ... host guest false true guest guest ... 'hi!' ... host Reuse of VM memory mechanisms No extra VM support to handle cross-image references Shared garbage collection 21 jueves 31 de octubre de 13
  22. 22. The Implementation Oz Object Spaces mirror implementation Mirrors manipulate objects through two main primitives: • • Execute a method on an object Try a primitive on an object Mirror hierarchy based on roles and internal structure • • ObjectMirror, ByteObjectMirror, WordObjectMirror ClassMirror, MethodDictionaryMirror, ProcessMirror 22 jueves 31 de octubre de 13
  23. 23. The Implementation Oz Object Spaces process manipulation • • Processes are simple objects • Mirrors allow manipulation and maintain consistency of the process model In the host, they are represented through ProcessMirror, ProcessSchedulerMirror and ContextMirror 23 jueves 31 de octubre de 13
  24. 24. The Implementation Oz Object Spaces context switch Execution of code inside an object space is based on a context switch: 1. The VM installs the object space as the current environment to run 2. Runs until being preempted 3. Gives control back to the host 24 jueves 31 de octubre de 13
  25. 25. The Implementation Oz Object Spaces Pharo image contract An image contract is composed by: • Services: reachable objects from the image’s root. e.g., nil, true, false, the SystemDictionary. They appear in the special objects array (the root object of an image). • Format of the objects: amount and meaning of the instance variables of core objects. They are configured in the membrane. 25 jueves 31 de octubre de 13
  26. 26. Virtual Smalltalk Images: Model and Applications • • • Oz Object spaces reify full Pharo images Irrestricted manipulation of guest’s objects through mirrors Control of guest’s execution 26 jueves 31 de octubre de 13

×