Title:

Garbage Collection für Parallele und Verteilte Systeme

Home
deutsch
  
ISBN: 3528155833   ISBN: 3528155833   ISBN: 3528155833   ISBN: 3528155833 
 
|<< First     < Previous     Index     Next >     Last >>|
  Wir empfehlen:       
 

– 11 – Bei  Dijkstras  Update-Funktion wird zuerst der Zeiger von A auf C gesetzt und dann C gefärbt,   obwohl   dadurch   zwischenzeitlich   die   Schwarz-Weiß-Invariante g ebrochen wird.  In  einer  parallelen  Implementierung  muss  jede  Update-Funktion  eine  atomare Aktion sein [Jo96]. Jones und Lins haben weiter gezeigt, dass eine Umkehrung der Re i- henfolge dazu führen kann, dass C beim nächsten GC-Zyklus fälschlicherweise als Gar- bage identifiziert wird, wenn der Mutator unterbrochen wird [S.192, Jo96]. Steele verwendet eine weniger konservative Incremental- Update Write-Barrier, bei der eine  schwarze  Elternzelle  mit  einem  Zeiger  auf  eine  weiße  Zelle  wieder  grau  gefärbt wird (siehe  Zelle  A  in  Abb.2  b).  Zur  Darstellung  der  grauen  Farbe  verwendet  er  aller- dings  einen  zusätzlichen  Mark-Stack  und  ein  Farb-Bit  anstatt  zwei  Farb-Bits.  D.h.  die Farbe grau wird durch Setzen des Farb-Bits und durch Packen (Push) eines Verweises auf  den  Mark-Stack  realisiert.  Für  eine  parallele  Ausführung  muss  bei  Steeles  Write- Barrier  sichergestellt  sein,  dass  die  Update-Funktion  nicht  vom  Mutator  unterbrochen werden kann [Jo96]. In Yuasas Snapshot-Write-Barrier werden Originalreferenzen dadurch bewahrt, dass  sie immer (während der Markierungsphase) grau markiert werden, wenn der Zeiger auf sie entfernt wird. Dazu wird wie bei Steeles Algorithmus auch ein Mark-Bit und ein Mark- Stack benutzt, wie aus Algorithmus 2 zu entnehmen ist. Angenommen A hat einen Ze i- ger auf B und führt die Update (A,C)-Funktion aus, um auf C statt auf B zu verweisen; dann wird während der GC-Markierungsphase  zunächst die vorherige Referenz von A, (d.h. B) gefärbt -   shade (*A) -   und anschließend  der neue Zeiger von A auf C g e- setzt  -    *A=C.  Auf  diese  Weise  sind  bei  der  Snapshot-at-beginning  Write-Barrier auch die ursprünglich aktiven Datenstrukturen seit Beginn des  GC-Vorgangs für den Collec- tor erkennbar. In dem Beispiel würde C während der aktuellen GC-Phase erhalten ble i- ben, unabhängig davon, ob es überhaupt noch benötigt wird.   shade(P)= if not marked(P) mark_bit(P)=marked gcpush(P, mark_stack) Update(A,C)= if phase == mark_phase shade(*A) *A=C Quelle: [S. 190, Jo96] Algorithmus 2: Yuasas Snapshot-Write-Barrier Bei  einer  statischen  Snapshot-Barrier  kann  der  Speicher  nicht  von  Objekten  bereinigt werden,  die  während  des  GC-Zyklus  überflüssig  werden.  Darum  wird  eine  Snapshot- Barrier  im  Vergleich  zu  einer  Incremental- Update-Barrier  als  konservativer  angesehen [Jo96]. Während letztere verhindern sollen, dass die schwarz-weiß Invariante gebrochen
  
Softwaretechnik mit Ada 95: Entwicklung großer Systeme
von Manfred Nagl
Sonstige Artikel:
Der Flüster-Führerschein - für eine ruhige und friedliche Atmosphäre in Klassenzimmer und Schule (1.-4. Klasse)
Ich bin.: Lebensgeschichten aus Bolivien
von David Acebey Delgadillo,
Germán Araúz Crespo,
Manuel Vargas,
Elisabeth Hüttermann
Tagebuch (blau): Wie war Dein Tag? Ankreuzen, Ausfüllen, Fertig
 
   
 
     
|<< First     < Previous     Index     Next >     Last >>| 

Back to the topic site:
StudyPaper.com/Startseite/Computer/Informatik

External Links to this site are permitted without prior consent.
   
  Home  |  deutsch  |  Set bookmark  |  Send a friend a link  |  Copyright ©  |  Impressum