EXP-101: 4-LIFO (Last In, First Out) Nedir ?

Bilgisayar bilimlerinde birçok veri yapısı ve sistemin çalışma prensibi, belirli kurallara göre organize edilmiştir. Bu kurallardan biri olan LIFO (Last In, First Out), özellikle yığın (stack) veri yapısının temelini oluşturur. Bu yazıda LIFO’nun ne olduğunu, nasıl çalıştığını, hangi alanlarda kullanıldığını ve neden önemli olduğunu detaylı olarak inceleyeceğiz.

LIFO Nedir?

LIFO (Last In, First Out) ifadesi, son girenin ilk çıktığı bir işleyiş modelini ifade eder. Yani bir yapıya en son eklenen veri, ilk önce erişilir veya sistemden çıkarılır. Tıpkı üst üste dizilmiş tabaklar gibi düşünebilirsin: en son koyduğun tabağı ilk alırsın.

Basit Örnek:

  1. Tabak 1 (ilk giren)
  2. Tabak 2
  3. Tabak 3 (son giren)

İlk çıkarılacak tabak: Tabak 3
Son çıkarılacak tabak: Tabak 1

LIFO ile Çalışan Veri Yapısı: Stack (Yığın)

Bilgisayar bilimlerinde LIFO prensibini uygulayan en yaygın veri yapısı stack (yığın)‘dır.

Stack Özellikleri:

  • PUSH: Yığına veri ekler. (LIFO sırasıyla en üste eklenir)
  • POP: Yığından veri çıkarır. (En üstteki veri çıkarılır)
  • Top: Yığının en üstündeki elemanı gösterir ama kaldırmaz.

Örnek:

push 1   ; yığının durumu: [1]
push 2 ; yığının durumu: [2, 1]
push 3 ; yığının durumu: [3, 2, 1]
pop ; 3 çıkarılır
pop ; 2 çıkarılır

LIFO Nerelerde Kullanılır ?

1. Fonksiyon Çağrıları (Call Stack)

Bir programda bir fonksiyon çağrıldığında, önceki fonksiyonun adresi ve durumu yığına kaydedilir. Yeni fonksiyon tamamlandığında, en son giren bu bilgiler yığından alınarak geri dönüş yapılır. Bu tam anlamıyla bir LIFO işlemidir.

2. Undo (Geri Al) Sistemleri

Birçok uygulamada (örneğin Word, Photoshop), yapılan işlemler bir yığında tutulur. Geri al (Undo) yapıldığında, en son yapılan işlem ilk olarak iptal edilir.

3. Derleyici ve Yorumlayıcılar

İfadelerin (örneğin matematiksel parantez yapıları) analizinde LIFO mantığı kullanılır. Parantezlerin düzgün kapanıp kapanmadığını kontrol etmek için yığın yapıları idealdir.

4. Oyunlarda State Yönetimi

Oyun içi sahne geçişleri, menüler, en son gidilen yer bilgileri gibi durumlarda LIFO tabanlı yapılar tercih edilir.

LIFO’nun Zorlukları

  • Stack overflow: Aşırı sayıda PUSH işlemi yapıldığında yığının sınırı aşılabilir.
  • Bellek yönetimi: LIFO yapılar uygun şekilde yönetilmezse bellek sızıntılarına veya beklenmeyen davranışlara neden olabilir.
  • Erişim kısıtlılığı: Yalnızca en üstteki elemana erişilebilir. Alt katmanlara doğrudan erişim yapılamaz.

Kaynakça:

https://www.corelan.be

Exploit Geliştirme 101 (2. Baskı) – M. ALPARSLAN AKYILDIZ

Hacking: The Art of Exploitation, 2nd Edition