Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

On-the-Fly Garbage Collection

Podobne prezentacje


Prezentacja na temat: "On-the-Fly Garbage Collection"— Zapis prezentacji:

1 On-the-Fly Garbage Collection
Algorytm odśmiecania jest wykonywany współbieżnie z danym programem On-the-Fly Garbage Collection Zwalnianie pamięci, do której nie ma już dostępu poprzez zmienne programu Agata Hejmej

2 Mark and Sweep Strategia odśmiecania:
* raz na jakiś czas badane są wskaźniki w pamięci programu * zaznacza się wszystkie elementy bezpośrednio dostępne poprzez zmienne programu * rekurencyjnie zaznacza się wszystkie elementy z nich dostępne, aż nie ma żadnych nowych zaznaczeń * niezaznaczone elementy to śmieci, które się zwalnia

3 safety – dostępne z programu elementy pamięci nie mogą być zwalniane
Najważniejsze własności odśmiecacza pamięci: safety – dostępne z programu elementy pamięci nie mogą być zwalniane liveness – wszystkie śmieci muszą być w końcu zwolnione

4 Algorytmy typu On-the-Fly Garbage Collector, które są bezpieczne i żywotne są trudne do zaprojektowania. Jeszcze trudniejsze jest udowodnienie poprawności ich działania! Pierwsze rozwiązanie – algorytm używający 3-kolorowego zaznaczania (Dijkstra i inni) Algorytm zbyt skomplikowany, żeby udowodnić jego bezpieczeństwo i żywotność! Główna motywacja dla Ben-Ari'ego do stworzenia algorytmu używającego 2-kolorowego zaznaczania.

5 mutator – reprezentuje operacje programu na pamięci
Algorytm Ben-Ari'ego opisuje działanie dwóch współbieżnych procesów: mutator – reprezentuje operacje programu na pamięci collector – zajmuje się odśmiecaniem

6 Pamięć programu: * tablica elementów zwanych węzłami (nodes) * children – węzły na które wskazuje dany węzeł * roots – węzły, do których jest bezpośredni dostęp z programu * nil – węzeł który zawsze wskazuje na siebie (należy do roots) * free list – węzeł, który wskazuje na listę niezaalokowanych elementów (należy do roots) * marking – każdy węzeł jest oznaczony jako czarny (jest do niego dostęp) albo biały (nie ma dostępu)

7 Odśmiecanie jest niezależne od wartości jakie znajdują się w węzłach pamięci.
Dlatego operacje mutatora na wskaźnikach mogą być zamodelowane jako pojedyncze abstrakcyjne operacje, które przekierowują wskaźnik z jednego dostępnego węzła na inny dostępny węzeł. Mutator 1. Przekierowuje wskaźnik z jednego dostępnego węzła na inny dostępny węzeł (target node). 2. Koloruje na czarno węzeł, na który teraz wskazuje wskaźnik (target node).

8 Collector 1. Koloruje na czarno wszystkie węzły root.
2. Bada każdy węzeł w pamięci. Jeżeli jest czarny, koloruje jego dzieci na czarno. 3. Zlicza czarne węzły. Jeśli ich ilość wzrosła od ostatniego cyklu propagacyjnego, wraca do kroku 1. 4. Bada każdy węzeł w pamięci. Jeżeli węzeł jest biały, dołącza go do free list. Jeśli jest czarny koloruje go na biało.

9 Po co krok drugi mutatora?

10 Jakie własności modelu chcemy sprawdzić?
Modelowanie Algorytmu Ben-Ari'ego w CCS. Jakie własności modelu chcemy sprawdzić? Jakie akcje? Musimy wiedzieć czy węzeł jest dostępny (acc - accessible) oraz kiedy jest zwolniony (coll - collected). safety – akcja colli nie może nigdy wystąpić, jeśli akcja acci może wystąpić. liveness – akcja acci zawsze będzie mogła się wydarzyć.

11

12

13

14

15

16

17 Niestety! Rezultat analizy konkretnego modelu nie musi się przenosić na działanie algorytmu w ogólności. Nasza analiza może być traktowana jako dobry sposób na odkrycie możliwych problemów. Nie jest na pewno dowodem na bezpieczeństwo i żywotność Algorytmu Ben-Ari'ego!

18 Ze względu na ograniczenia CWB w analizie za model przyjęto:
memory size = 4 roots = 2 (nil oraz free list) InitSons = (nil, 3, 4, nil) InitColors = (white, white, white, white) Otrzymany model to GC4.

19 GC Safety GC Liveness !

20 Liveness – dla każdego węzła i jest tak, że o ile collector będzie działał, to w końcu będzie mogła być wykonana akcja acci GC Liveness uff...!

21 Czy pokazanie bezpieczeństwa
i żywotności naszego modelu mówi nam dużo na temat Algorytmu Ben-Ari'ego w ogólności?

22 Nie koniecznie! Jeśli zamieni się kolejność kroków Mutatora, nie powinna być spełniona własność Safety. A nasz model mówi, że jest! Jest tak dlatego, że rozmiar modelowanej pamięci jest za mały, co nie pozwala na uchwycenie problemu, który powstaje. (tylko 4 węzły, przy większej ich liczbie generuje się zbyt wiele stanów, by zamodelować to w CWB)


Pobierz ppt "On-the-Fly Garbage Collection"

Podobne prezentacje


Reklamy Google