Virtual Smalltalk Images:
Model and Applications
Guillermo Polito, Stéphane Ducasse, Luc Fabrese,
Noury Bouraqadi
martes 1...
The context: Pharo
• Object oriented language
• Dynamic typing
• Highly reflective
• Image based
• Metacircular
2
martes 10...
Going meta has limitations[1,2]
Metacircularities
• hidden and uncontrollable dependencies e.g.,
• core libraries (e.g., #...
Some existing solutions
• Casaccio et al. ’s object spaces[3] allowed atomic
operations on classes
• Bootstrapping a Small...
What we would like from a
reflective system
• Full control
• Atomicity of changes
• Interactive
• High level tools for syst...
Our solution:
Virtual images
with Object Spaces
6
[1] Gwenaël Casaccio, Damien Pollet, Marcus Denker, and Stéphane Ducasse...
Object Spaces
martes 10 de septiembre de 13
Oz Object Spaces
the model
8
A reification of a Smalltalk image with two
main components:
• The guest image it contains and...
9
Host
Object Object SpaceSmalltalk ImageCaption:
Guest
Object
A
Class
Metaclass
Metaclass
class
Object
Class
Metaclass
Me...
10
Host
ToolA
ToolB
Object Object SpaceSmalltalk ImageCaption:
Guest
Oz Object Spaces
the membrane
The Model
martes 10 de ...
Oz Object Spaces membrane:
the façade
11
• The object space façade is the concrete reification of the
guest image
• Access ...
Oz Object Spaces membrane:
mirrors
12
• Direct object manipulation
• Field manipulation: get and set values from object fie...
Oz Object Spaces
control of execution
13
• Full control of an object space processes via mirrors i.e.,
create, suspend, re...
Oz Object Spaces
control of communication
14
• One way communication: host to guest
• Communication is achieved by creatin...
Oz Object Spaces
applications
15
• Image surgery
• Image recovery and better Emergency Kernel
• Controlled interruption
• ...
TheVision
16
• Many versions of the system running side by side
• Controlling resources at the language level
• Secure
• C...
17
Virtual Smalltalk Images:
Model and Applications
• Oz Object spaces reify full Pharo images
• Irrestricted manipulation...
Behind Oz Object Spaces:
the implementation
18
martes 10 de septiembre de 13
Oz Object Spaces
the implementation
19
We implemented Oz on top of Pharo20:
• Virtual machine support for multiple images
...
Oz Object Spaces
Challenging infrastructure
20
• Special Objects Array: an array theVM uses to
understand the running imag...
Host and Guest images share the same heap
• Reuse of VM memory mechanisms
• No extraVM support to handle cross-image refer...
Oz Object Spaces
mirror implementation
22
The Implementation
Mirrors manipulate objects through two
main primitives:
• Exe...
Oz Object Spaces
process manipulation
23
• Processes are simple objects
• In the host, they are represented through Proces...
Oz Object Spaces
context switch
24
The Implementation
Execution of code inside an object space is
based on a context switc...
Oz Object Spaces
Pharo image contract
25
The Implementation
An image contract is composed by:
• Services: reachable object...
26
Virtual Smalltalk Images:
Model and Applications
• Oz Object spaces reify full Pharo images
• Irrestricted manipulation...
Upcoming SlideShare
Loading in...5
×

Virtual Smalltalk Images: Model and Applications

983

Published on

Guillermo Polito, Stéphane Ducasse, Luc Fabrese, Noury Bouraqadi

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

No Downloads
Views
Total Views
983
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Virtual Smalltalk Images: Model and Applications

  1. 1. Virtual Smalltalk Images: Model and Applications Guillermo Polito, Stéphane Ducasse, Luc Fabrese, Noury Bouraqadi martes 10 de septiembre de 13
  2. 2. The context: Pharo • Object oriented language • Dynamic typing • Highly reflective • Image based • Metacircular 2 martes 10 de septiembre 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) 3 [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 martes 10 de septiembre 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...) 4 [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 martes 10 de septiembre 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 martes 10 de septiembre de 13
  6. 6. Our solution: Virtual images with Object Spaces 6 [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) • 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 martes 10 de septiembre de 13
  7. 7. Object Spaces martes 10 de septiembre de 13
  8. 8. Oz Object Spaces the model 8 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 martes 10 de septiembre de 13
  9. 9. 9 Host Object Object SpaceSmalltalk ImageCaption: Guest Object A Class Metaclass Metaclass class Object Class Metaclass Metaclass class Oz Object Spaces the guest image The Model martes 10 de septiembre de 13
  10. 10. 10 Host ToolA ToolB Object Object SpaceSmalltalk ImageCaption: Guest Oz Object Spaces the membrane The Model martes 10 de septiembre de 13
  11. 11. Oz Object Spaces membrane: the façade 11 • 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 The Model martes 10 de septiembre de 13
  12. 12. Oz Object Spaces membrane: mirrors 12 • Direct object manipulation • Field manipulation: get and set values from object fields • Size calculation: get the size of objects • Class access: introspect and modify the class of an object • Testing and conversion operations. e.g., #isNil, #asBoolean • Some mirrors provide specialized operations. e.g., a ClassMirror supports the #basicNew operation The Model martes 10 de septiembre de 13
  13. 13. Oz Object Spaces control of execution 13 • 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 The Model martes 10 de septiembre de 13
  14. 14. Oz Object Spaces control of communication 14 • One way communication: host to guest • Communication is achieved by creating and injecting objects into the object space • 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 The Model martes 10 de septiembre de 13
  15. 15. Oz Object Spaces applications 15 • Image surgery • Image recovery and better Emergency Kernel • Controlled interruption • Image side Stack overflow and infinite loop detection • Sandboxing martes 10 de septiembre de 13
  16. 16. TheVision 16 • 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 martes 10 de septiembre de 13
  17. 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 martes 10 de septiembre de 13
  18. 18. Behind Oz Object Spaces: the implementation 18 martes 10 de septiembre de 13
  19. 19. Oz Object Spaces the implementation 19 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) martes 10 de septiembre de 13
  20. 20. Oz Object Spaces Challenging infrastructure 20 • Special Objects Array: an array theVM 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 The Implementation martes 10 de septiembre de 13
  21. 21. Host and Guest images share the same heap • Reuse of VM memory mechanisms • No extraVM support to handle cross-image references • Shared garbage collection Oz Object Spaces memory layout 21 The Implementation nil host false host true host nil guest false guest true guest 'hi!' host ... ... ... The Object Memory martes 10 de septiembre de 13
  22. 22. Oz Object Spaces mirror implementation 22 The 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 martes 10 de septiembre de 13
  23. 23. Oz Object Spaces process manipulation 23 • Processes are simple objects • In the host, they are represented through ProcessMirror, ProcessSchedulerMirror and ContextMirror • Mirrors allow manipulation and maintain consistency of the process model The Implementation martes 10 de septiembre de 13
  24. 24. Oz Object Spaces context switch 24 The Implementation Execution of code inside an object space is based on a context switch: 1. TheVM installs the object space as the current environment to run 2. Runs until being preempted 3. Gives control back to the host martes 10 de septiembre de 13
  25. 25. Oz Object Spaces Pharo image contract 25 The Implementation 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. martes 10 de septiembre de 13
  26. 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 martes 10 de septiembre de 13
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×