Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Çöp Toplama Tekniği Eser Aygün
2
Bellek Ayırma Yöntemleri
Statik bellek ayırma Belleğin düzenlenişi derleme anında belirlenir. Çalışma anında yeni nesne eklenemez ve mevcut nesnelerin boyu değiştirilemez. Yığında bellek ayırma Bellek “son giren ilk çıkar” mantığıyla yönetilir. Alt programlar sadece boyu derleme anında belirlenebilen nesneler döndürebilirler. Dinamik (“heap” üzerinde) bellek ayırma Bellek çalışma anında ihtiyaca göre düzenlenir. Elle yönetimi zordur: Bellek sızıntıları ve geçersiz işaretçiler. Otomatik bellek yönetimi: Çöp toplama. Eser Aygün
3
Bellek Sızıntısı, Geçersiz İşaretçi (Memory Leak, Dangling Pointer)
class Node { int value; Node *next; }; Node *p = new Node(); Node *q = new Node(); Node *r = new Node(); p->next = q; q->next = r; r = NULL; delete q; ... Eser Aygün
4
Bellek Sızıntısı, Geçersiz İşaretçi (Memory Leak, Dangling Pointer)
class Node { int value; Node *next; }; Node *p = new Node(); Node *q = new Node(); Node *r = new Node(); p->next = q; q->next = r; r = NULL; delete q; ... Eser Aygün
5
Bellek Sızıntısı, Geçersiz İşaretçi (Memory Leak, Dangling Pointer)
class Node { int value; Node *next; }; Node *p = new Node(); Node *q = new Node(); Node *r = new Node(); p->next = q; q->next = r; r = NULL; delete q; ... Eser Aygün
6
Çöp Toplama Yöntemleri
Yerleşmiş çöp toplama yöntemleri: Başvuru sayma yöntemi İşaretle-süpür yöntemi Kopyalama yöntemi Bunlara getirilen farklı yaklaşımlar: Kuşak yaklaşımı Azar azar toplama yaklaşımı Eser Aygün
7
Başvuru Sayma Yöntemi (Reference Counting) [Collins1960]
Her nesne için bir başvuru sayısı tutulur. Yeni bir nesne için yer ayırıldığında başvuru sayısı 1 yapılır. Nesneye yapılan her yeni başvuruda başvuru sayısı bir artırılır. Nesneye yapılan başvurulardan biri silindiğinde başvuru sayısı bir azaltılır. Başvuru sayısı 0 olduğunda, nesne için ayrılan alan geri verilir. Eser Aygün
8
Başvuru Sayma Yöntemi Örnek
Eser Aygün
9
Başvuru Sayma Yöntemi Örnek (2)
Eser Aygün
10
Başvuru Sayma Yöntemi Çevrim İçeren Veri Yapıları
Eser Aygün
11
Başvuru Sayma Yöntemi Olumlu Yönleri
Bellek yönetim yükü tüm programa eşit olarak dağılır. İşlemler çöp toplamak için askıya alınmaz. Uzayda yöreselliği bozmaz. Başvuru sayısı sıfır olan bir nesne başka sayfalara ulaşmaya gerek kalmadan silinir. Sayfa hatası ihtimalini düşürür. Bir nesne işe yaramaz hâle geldiği anda, ayrılan alan geri verilir. Eser Aygün
12
Başvuru Sayma Yöntemi Olumsuz Yönleri
İşlem yükü getirir. İşaretçiler üzerindeki tüm atama ve parametre geçirme işlemlerinde eski ve yeni hedeflerin başvuru sayıları güncellenir. Derleyiciye sıkı sıkıya bağlıdır. Her nesne için fazladan bir alan tutmak gerekir. Çevrim içeren veri yapıları için başka çözümler düşünmek gerekir. Eser Aygün
13
İşaretle-Süpür Yöntemi (Mark and Sweep) [McCarthy1960]
Kullanılabilir alan tükenenene kadar işe yaramaz nesneler erişilemez olarak kalırlar. Alan tükendiğinde işlemler kesilir ve çöp toplama işlemi başlar. Kökten başlanarak ulaşılabilen tüm nesneler belirlenir. Geriye kalanlara ait alanlar geri verilir. Yeterince alan açıldıysa işlemlere kaldıkları yerden devam edilir. Eser Aygün
14
İşaretle-Süpür Yöntemi Örnek
Eser Aygün
15
İşaretle-Süpür Yöntemi Olumlu Yönleri
Çevrim içeren veri yapılarını özel olarak ele almak gerekmez. Algoritmanın doğal işleyişi çevrimleri yakalamada yeterli olur. İşaretçi güncellemelerinde fazladan işlem yükü oluşmaz. Eser Aygün
16
İşaretle-Süpür Yöntemi Olumsuz Yönleri
Gerçek zamanlı sistemlere uygun değildir. Dur kalklı bir algoritmadır. Çöp toplayıcı çalışırken işlemler durdurulur. En kötü durumda çalışma süresi “heap” boyuyla orantılıdır. ... etkin ya da işe yaramaz nesnelerin boyuyla değil. Belleği dağıtmaya meyillidir. İşaretle-sıkıştır (mark and compact). Bellekte her zaman fazladan alan olmasını gerektirir. Aksi hâlde çöp toplama sıklığı artar. Asıl işlemlere ayrılan zaman azalır. Eser Aygün
17
Kopyalama Yöntemi (Copying) [Minsky1963]
“Heap” eşit iki uzaya bölünür: Etkin veriyi içeren uzay Eskimiş veriyi içeren uzay Çöp toplayıcı iki uzayın görevlerini değiştirmekle işe başlar. Ardından eski (kaynak) uzaydaki etkin nesneleri yeni (hedef) uzaya kopyalar. İşlem bittiğinde etkin veri hedef uzaya yerleştirilmiş olur. Eser Aygün
18
Kopyalama Yöntemi Örnek
Eser Aygün
19
Kopyalama Yöntemi Olumlu Yönleri
Alan ayırma maliyeti oldukça düşüktür. Yeni ayrılan alan her zaman boş alanın başından yapılır. Alanın sonuna ulaşıldığını anlamak için basit bir karşılaştırma yapmak yeter. Bellekte dağılma olmaz. Etkin veri her seferinde uzayın başına sıkıştırılır. En kötü durumda çalışma süresi etkin nesnelerin boyuyla orantılıdır. Eser Aygün
20
Kopyalama Yöntemi Olumsuz Yönleri
Sayfa hatası ihtimalini artırır. Aynı miktarda alan için iki kat geniş adres uzayı gerekir. Eskimiş verinin tutulduğu uzay kullanılmadığı sürede diske yazılırsa, verinin ne kadar sıkışık olduğundan bağımsız olarak kopyalamada sayfa hataları oluşur. Eser Aygün
21
Kuşak Yaklaşımı (Generational Collection)
Bir çöp toplayıcının tek görevi işe yaramayan alanın geri verilmesi değildir. Kötü tasarlanmış bir toplayıcı sanal bellek ve cep bellekle kötü etkileşir. Nesnelerin küçük bir kısmı çok uzun ömürlü olurken, büyük bir kısmı hemen ölür. Taramalı yöntemler uzun ömürlü nesneler yüzünden önemli vakit kaybeder. Her seferinde “heap” alanının sadece bir bölümünü toplayarak bekleme süreleri azaltılabilir. Eser Aygün
22
Kuşak Yaklaşımı Nesneler yaşlarına göre kuşak denilen bölgelere ayrılır. Farklı kuşaklar farkı sıklıkta toplanır. Genç kuşaklar sık sık toplanırken, yaşlılar nadiren toplanır, hatta hiç toplanmazlar. Birkaç toplama boyunca hayatta kalan nesneler bir üst kuşağa terfi ettirilir. Eser Aygün
23
Kuşak Yaklaşımı Kopyalama Yöntemiyle Karşılaştırma
Eser Aygün
24
Kuşak Yaklaşımı Kopyalama Yöntemiyle Karşılaştırma
Eser Aygün
25
Azar Azar Toplama Yaklaşımı (Incremental Collection)
Gerçek zamanlı sistemlerde çöp toplama gecikmeleri nasıl düşürülebilir? Dur kalk yerine azar azar toplama yapılır. Toplama işlemi programdaki işlemlerle değişmeli olarak yürütülür. Programa yeterli bellek sağlandığından emin olunmalı. Belleğe erişim senkronize olmalı. Eser Aygün
26
Azar Azar Toplama Yaklaşımı
Şimdiye kadar sadece yazılıma dayanan hiçbir çöp toplama yöntemi tatmin edici gerçek zaman başarıları elde edemedi. Okuma/yazma engelleri maliyetli. Nilsen ve Schmidt donanım çözümü önerdiler. Sistem yolu üzerinden işlemciye bağlanan ayrı bir bellek modülü. Gömülü Java sistemleri. Eser Aygün
27
Cep Bellek Başarısı Doğrudan cepler yerine iki ya da dört yollu çağrışımlı cepler, büyük cepler, büyük bloklar başarıyı artırıyor. Kuşak yaklaşımında en genç kuşağın büyüklüğünü cep boyu kadar yapmak öneriliyor. En genç kuşak, en sık erişilen kuşaktır. Eser Aygün
28
Önemli Sistemlerde Kullanılan Yöntemler
Eiffel, Haskell, Java, Python: Kuşak yaklaşımı .NET İşaretle-sıkıştır yöntemi Eser Aygün
29
Neden Çöplerimizi Hep Başkası Toplamıyor?
Hem zaman, hem alan açısından maliyetli. Sürekli büyüyen veri yapılarına çözüm getirmiyor. Oldukça sık rastlanan bir durum. Sistem kaynakları söz konusu olduğunda tehlikeli. Henüz toplanmamış çöp kaynaklar arkada çalışan diğer işleri engelleyebilir. Bazı kaynaklar çok kısıtlı sayıda olabilir. Bunların işleri bittiği anda sonlandırılması gerekir. Kaynaklar arasında bağımlılıklar olabilir. Hangi sırada sonlandırılacaklarına karar verilmesi gerekir. Eser Aygün
30
Kaynaklar [Jones1996] Garbage Collection
[Collins1960] A method for overlapping and erasure of lists, Communications of the ACM [McCarthy1960] Recursive functions of symbolic expressions and their computation by machine, Communications of the ACM [Minsky1963] A Lisp garbage collector algorithm using serial secondary storage. Technical Report Memo 58, Project MAC, MIT Eser Aygün
31
Sorular
32
Teşekkürler
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.