Вы находитесь на странице: 1из 8

Microsoft Techdays 2005 - Lisboa

Microsoft

Patrocinadores

TechDays 2005
Aprender, Partilhar, Experimentar

ACD01 - Reciclagem automtica de autom memria distribuda na mem distribu Plataforma .Net .Net
Paulo Pereira CCISEL palbp@cc.isel.ipl.pt

Agenda
Introduo O algoritmo de DGC Suporte AOP na Plataforma .Net DGC no CLR Trabalho em curso: DGC no Rotor

Introduo

Nota prvia
CLI - Common Language Infrastructure
Especificao normalizada (ECMA-335) de um ambiente virtual de execuo

.Net Remoting
Modelo de memria distribuda
Espao A
razes

Espao C
razes

CLR - Common Language Runtime


Realizao da CLI utilizada comercialmente pela Microsoft
Espao B
razes

SSCLI - Shared Source CLI


Realizao shared source da CLI Conhecida pelo nome de cdigo Rotor
objectos globais objectos locais

Microsoft Techdays 2005 - Lisboa

.Net Remoting
Comunicao (1)
IMethodCallMessage

.Net Remoting
Comunicao (2)
Client Space
IMethodCallMessage

Server Space

client

TP

Real Proxy

Msg Sink

Msg Sink

SB Sink

server

client

TP

Real Proxy

channel

SB Sink

server

IMethodReturnMessage

IMethodReturnMessage

Stack based

Message based

Stack based

Stack based

Message based

Stack based

Motivao
O .Net Remoting fornece mecanismo configurvel de gesto de tempo de vida
Baseia-se em concesses renovveis Libertao da memria a cargo do programador Sofre dos problemas clssicos

Objectivos
Estender o .Net Remoting com algoritmo de DGC correcto e completo
Estendendo o modelo de programao original Minimizando o impacto nas aplicaes

Realizar avaliao de mrito do algoritmo de DGC usando cdigo de produo


Atravs da extenso do CLR

Porque no fornecer DGC?

Algoritmo de DGC
Descrio
Autoria de Lus Veiga e Paulo Ferreira [1] Baseia-se na extenso do GC local com algoritmo que lida com as referncias inter-espaos Composto por:
Detector de lixo acclico (reference listing) Detector de lixo cclico

O Algoritmo de DGC

Microsoft Techdays 2005 - Lisboa

Algoritmo de DGC
Detector de lixo acclico (1)
As referncias inter-espaos so representadas por pares Stub / Scion (cadeias de pares) Em cada espao so mantidas duas estruturas de dados:
External Reference Table (ERT)
Estimativa das referncias mantidas pelo espao

Algoritmo de DGC
Detector de lixo acclico (2)
Espao A
razes

Espao B
razes

Espao C
razes ODT ERT ODT ERT

Object Data Table (ODT)


Estimativa conservadora das ERTs dos espaos cliente Protege os objectos da recolha
ODT ERT

Algoritmo de DGC
Detector de lixo cclico (1)
Algoritmo centralizado de identificao directa do lixo Cada espao envia imagem (reduzida) do grafo local para o espao detector
O espao detector designa-se Cycles Detector Process (CDP)

Algoritmo de DGC
Detector de lixo cclico (2)
Espao A
razes

Espao B
razes

Espao C
razes

A recolha de imagens no concertada

AOP na Plataforma .Net


Aspect Oriented Programming (1)

Suporte AOP na Plataforma .Net

Paradigma proposto por Gregor Kiczales e colegas [2] Baseia-se na classificao das propriedades do sistema a implementar em:
components, quando so propriedades directamente relacionadas com o domnio do problema aspects, caso contrrio

Microsoft Techdays 2005 - Lisboa

AOP na Plataforma .Net


Aspect Oriented Programming (2)
Objectivo do paradigma AOP To support the programmer in cleanly separating components and aspects from each other*, by providing mechanisms that make it possible to abstract and compose them to produce the overall system. * Components from each other, aspects from each other, and components from aspects.

AOP na Plataforma .Net


Aspect Oriented Programming (3)
Elementos em AOP
a component language with which to program the components a component program, that implements the components using the component language one or more aspect languages with which to program the aspects an aspect weaver for the combined languages one or more aspect programs that implement the aspects

AOP na Plataforma .Net


Associao de aspects a components usando atributos Arquitectura extensvel para aspect weaving em tempo de execuo
IMethodCallMessage

AOP na Plataforma .Net


Intervenientes
Context - ambiente de execuo que resulta da combinao de aspectos ContextBoundObject - base para tipos cujas instncias esto condicionadas ao Context onde so criadas ContextProperty - implementao do aspecto ContextAttribute - para associao de ContextBoundObjects ao Context

client

TP

Real Proxy

Msg Sink

Msg Sink

SB Sink

server

IMethodReturnMessage

Stack based

Message based

Stack based

AOP na Plataforma .Net


Arquitectura de intercepo
TP Real Proxy Envoy Sink Envoy T. Sink C.C. Sink C.C. T. Sink

Caller Context
channel

DGC no CLR

S.C. Sink

S.C. T. Sink

Obj. Sink

Obj. T. Sink

S.B. Sink

target

Called Context

Microsoft Techdays 2005 - Lisboa

DGC no CLR
Elementos da soluo
A cada espao foi acrescentado:
As estruturas de dados ERT e ODT Um patrocinador (ISponsor) local
Decide acerca da renovao da concesso consultando a ODT

DGC no CLR
Detector de lixo acclico (1)
Acontecimentos a detectar:
Exportao de referncias Importao de referncias
Chegada da referncia Criao do par de proxies

Objecto remoto (Singleton) para troca de mensagens do protocolo

Fim de ciclo de GC local Chegada de mensagens do protocolo

Um dos espaos contm o CDP

DGC no CLR
Detector de lixo acclico (2)
Tcnicas de deteco
Exportao e importao de referncias
Seriao e deseriao de Envoy Sink ProxyAttribute para deteco da criao do par de proxies

DGC no CLR
Detector de lixo cclico
Informao necessria:
Conjunto das razes locais relevantes para a deteco de ciclos URL do CDP

Fim de ciclo de GC local


Polling com perodo configurvel Utilizao de WeakReferences para os proxies

Esta informao mantida pelo programador


Passada explicitamente quando este desencadeia a deteco de ciclos

DGC no CLR
Anlise crtica
Defeitos
Realizao de polling para deteco de fim de ciclo de execuo do GC local Execuo de deteco de ciclos atravs de pedido explcito da aplicao
No pedido passado o conjunto das razes locais a considerar e o URL do CDP

DGC no CLR
Exemplo
System.Runtime.Remoting.DGC; using System.Runtime.Remoting; RemoteObject public class Sample : MarshalByRefObject { public void DoYourStuff() { ... } }

[ System.Runtime.Remoting.DGC.ContextAttribute() ] public class RemoteObject : ContextBoundObject { public override object InitializeLifetimeService() { } }

Virtudes?

Microsoft Techdays 2005 - Lisboa

DGC no Rotor
Trabalho em curso

Trabalho em curso: DGC no Rotor

A soluo distingue-se da usada no CLR atravs das tcnicas de deteco Detector de lixo acclico (realizado)
Falta estender GC local com gerao de evento de fim de ciclo

Detector de lixo cclico (em curso)


Execuo de deteco de ciclos (criao da imagem do grafo) consultando as razes locais

DGC no Rotor
Tcnicas de deteco
Exportao e importao de referncias
Alterao do tipo ObjRef
Estendendo-o com a informao necessria Alterando o processo de seriao e deseriao

Alterao do tipo RemotingServices


Alterando o processo de unmarshall das instncias de ObjRef
Mtodo SetOrCreateProxy

Questes?

Referncias
[1] Paul R. Wilson, Uniprocessor garbage collection techniques, in Proc. Int. Workshop on Memory Managment, No. 637, September 1992 [2] L. Veiga and P. Ferreira, Complete distributed garbage collection: an experience with Rotor, in IEE ProceedingsSoftware, Vol. 150, No. 5,pp. 283-290, October 2003 [3] Gregor Kiczales, et al., Aspect-Oriented Programming, in ECOOP proceedings, June 1997

Bibliografia
David Stutz, Ted Neward & Geoff Shilling, Shared Source CLI Essentials, OReilly, March 2003 Don Box, Chris Sells, Essential .Net, Volume 1. The Common Language Runtime, Addison Wesley, October 2002 Dharma Shukla, Simon Fell & Chris Sells, Aspect Oriented Programming Enables Better Code Encapsulation and Reuse, in MSDN Magazine, March 2002 Ingo Rammer, Advanced .Net Remoting, Apress, April 2002 Richard Jones & Rafael Lins, Garbage Collection, Algorithms for Automatic Dynamic Memory Managment, Wiley, 1996

Microsoft Techdays 2005 - Lisboa

Pergunte Aos Especialistas


Obtenha as Respostas s suas Questes
Estarei na rea Pergunte Aos Especialistas, no Pavilho 5 : Tera-feira 8 x Novembro 18:00 19:00

Recursos teis
Recursos para Comunidades Microsoft
http://www.microsoft.com/portugal/technet/comunidades

Subscries TechNet
http://www.microsoft.com/portugal/technet/subscricoes

Certificaes
http://www.microsoft.com/portugal/technet/certificacoes

ITs Showtime Webcasts


http://www.microsoft.com/portugal/technet/itshowtime

Microsoft

Passatempo
Bnus Extra no TechDays 2005!!
Habilite-se a ganhar uma Habilite-

TechDays 2005
Aprender, Partilhar, Experimentar

No se Esquea de Preencher o Esque Questionrio de Avaliao! Question Avalia


ACD01 - Reciclagem automtica de autom memria distribuda na mem distribu Plataforma .Net

Xbox 360 por dia!

Complete o questionrio de avaliao e devolva-o question avalia devolvano final do dia sada no balco da recepo. sa recep

Slides de backup

2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.

Microsoft Techdays 2005 - Lisboa

AOP na Plataforma .Net


Aspect Oriented Programming (1)
With respect to a system and its implementation, a property that must be implemented is:
A component, if it can be cleanly encapsulated in a generalized procedure (i.e. object, method, procedure, API). Components tend to be units of the systems functional decomposition, such as image filters, bank accounts and GUI widgets. An aspect, if it can not be cleanly encapsulated in a generalized procedure. Aspects tend not to be units of the systems functional decomposition, but rather to be properties that affect the performance or semantics of the components in systemic ways. Examples of aspects include memory access patterns and synchronization of concurrent objects.

AOP na Plataforma .Net


Sink chains
ref1 ref1
TP RealProxy target (t1) Identity Envoy Sink Chain Channel Sink Context Server Context Sink Chain ServerIdentity Object Sink Chain

Envoy Sink Chain Channel Sink Identity ServerIdentity

Client Context Sink Chain

Object Sink Chain

ref2 ref2

TP

RealProxy

target (t2)

Вам также может понравиться