Stack Vs Heap Bellek

Bilgisayar üzerinde gerçekleştirilen işlemler, aslında arka planda bir işlemci üzerinde yapılan aritmetik/lojik işlemler bütünü. Bu işlemci üzerinde koşan yazılımlar sayesinde kullanıcı bilgisayar donanımından soyutlanır. Yazılım üzerinde yapılan işlemler için kayıt elemanı olarak hafızalar kullanılır. Stack ve heap kavramları yazılımlar için önemli iki hafıza bölümüdür. Bu bölümde bu kavramları daha detaylı incelemeye çalışalım.

Yazılım yaparken oluşturulan yapıların her biri bellekte yer kaplar. Bazı durumlarda bu uzunluklar gerekli tür yapıları için sabit bir değerdedir. Bunlara statik veri ismi verilir. Bazıları için ise kesin bir uzunluk değeri bulunmaz. Bu yapılar, kod içerisinde tekrardan genişletilebilir ve ya düşürülebilir. Bunlara ise dinamik veri ismi verilir. İki farklı bellek yapılandırması için statik bellek tahsisi ve dinamik bellek tahsisi ismi verilir.

Stack

Yazılımda tanımlanan yerel değişkenleri, oluşturulan değişlenlerin pointer ve adres değerlerini, fonksiyon parametre geçişlerini ve fonksiyonların içinde oluşturulan değişkenleri tutan hafıza bölümüdür. LIFO mantığında çalışır. LIFO’nun açılımı “Last In First Out” ve Türkçe’ye “Son Giren İlk Çıkar” olarak çevrilebilir.

Stack bellek statik alan tahsisi mantığını kullanır. Yazılım içerisinde kullanılacak olan statik yapıların bellekteki uzunlukları, programın “Compile” adımında hesaplanır. “Run-time” anında herhangi bir değişikliğe izin verilmez.

İki temel işleve sahiptir. Bunlar “push” ve “pop”.  “Push” işlemi belleğe veri yazarken “pop” işlemi stack belleğin en üstünde bulunan veriyi kaldırmak için kullanılır. Bu yapıyı üst üste dizilmiş kitaplar olarak düşünebilirsiniz.

 

Heap

Yukarıda bahsi geçen dinamik verilerin tutulduğu bellek yapısı. Belleğe veri yerleştirmesi ve erişimi dağınık bir düzende yapılır.  Uzunluğu belli olmayan ve ya programın “Run-time” anında bellek boyutunda kapladığı alanın değiştirilmesi gereken veriler tutulur.

Farkları
  • Veri erişim hızı Stack belleklerde Heap belleklere kıyasla göreceli olarak daha hızlı.
  • Heap belleklerde boyut sınırı bulunmaz.
  • Stack bellek yönetimi daha kolaydır. Çünkü program kendi içerisinde otomatik şekilde yerleştirme ve silme işlemlerini yerine getirir. Heap belleklerde bu işlemler için yazılımcı sorumludur. Bellekte oluşturulan her yapının takibini yapmalı ve işlemini tamamladıktan sonra ilgili alanı serbest bırakmalı. Yoksa “memory leakage” ismi verilen “bellek sızıntısı” oluşur.
  • Heap bellekte oluşturulan verilere programın herhangi bir yerinden erişilebilir. Ancak stack verileri yerel değişkenler ve sadece o an içerisinde bulunduğu segment tarafından erişilebilir.

 

  • KAYNAKÇA

    • technopedia.com
    • geeksforgeeks.com

Talha SEVİNÇ

Merhaba,ben Talha Sevinç. Gazi Üniversitesi Elektrik Elektronik Mühendisliği bölümü mezunuyum. "Bilgelik için tek anahtar soru sormaktır."felsefesini benimsemiş, bilgiye aç, bildiklerini  insanlarla paylaşmaya hevesli biriyim. Elimden geldiğince insanlara yardımcı olmak için buradayım.

100% LikesVS
0% Dislikes

Talha SEVİNÇ

Merhaba,ben Talha Sevinç. Gazi Üniversitesi Elektrik Elektronik Mühendisliği bölümü mezunuyum. "Bilgelik için tek anahtar soru sormaktır."felsefesini benimsemiş, bilgiye aç, bildiklerini  insanlarla paylaşmaya hevesli biriyim. Elimden geldiğince insanlara yardımcı olmak için buradayım.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.