Üye Kayıt Üye Giriş
biz-sizi-arayalim
biz-sizi-arayalim
Bilgisayarlı Muhasebe Eğitim Seti
Masaüstü bilgisayarı cebe sığdırdılar
Masaüstü bilgisayarı cebe sığdırdılar
Avast ve Windows Güncellemeleri Çakışınca!
Avast ve Windows Güncellemeleri Çakışınca!
Toshiba'nın İddialı Bilgisayar Tableti!
Toshiba'nın İddialı Bilgisayar Tableti!
Yeni Microsoft'un Windows tanıtılıyor
Yeni Microsoft'un Windows tanıtılıyor
Skype 7, Mac ve Windows İçin Yayınlandı!
Skype 7, Mac ve Windows İçin Yayınlandı!
kpss-egitim-setleri

Çalışabilen Dosyanın Bölümleri ve UNIX/Linux Sistemlerinde Process’in Bellek Alanı


İngilizce DVD Eğitim Seti

Çalışabilen Dosyanın Bölümleri ve UNIX/Linux Sistemlerinde Process’in Bellek Alanı

Tipik bir çalışabilen dosya temelde 5 bölümden oluşur.


Header
.text // Kod
.data // Data (ilk değer verilmiş)
.bss // Data (ilk değer verilmemiş)
.stack // Stack


Bu bölümler şüphesiz çalışabilen dosyanın formatı ile ilgilidir. Örneğin MZ, ELF, a.out
formatlarında tipik olarak bölümler yukarıdaki gibidir. Programın kod bölümünde
fonksiyonların makine komutları tutulur (bu bölüm genellikle .text biçiminde
isimlendirilmektedir).


.data bölümü static ömürlü nesnelerin tutulduğu bölümdür. .data bölümü genellikle ikiye
ayrılır; .data ismi ile belirtilen bölüm ilk değer verilmiş static nesneleri, .bss biçiminde
isimlendirilen alan ise ilk değer verilmemiş static nesneleri içerir. Yerel değişkenler tipik
olarak stack bölümünde tutulurlar. İlk değer verilmemiş static ömürlü nesnelerin ayrı bir
bölümde tutulmasının nedeni çalışabilen dosyada gereksiz yer kaplamasını engellemektir.


Örneğin,
int g_a[1000000];


bu global dizi .data bölümünde tutulsaydı, çalışabilen dosya en azından 4MB olurdu. Halbuki
.bss bölümünde bu dizi bilgisi “burada şu uzunlukta dizi var” biçiminde yazılmaktadır.
Şüphesiz .bss bölümü açılıp yüklendiğinde yükleyici tarafından bu bölüm sıfırlar ile
doldurulmaktadır. .bss bölümü bazı sistemlerde yükleyici tarafından değil, derleyicinin
başlangıç kodu tarafından sıfırlanmaktadır.


UNIX/Linux sistemelrinde tipik olarak process’in bellek alanı şöyledir:


Header
.text
.data
.bss
Heap
Stack
System


Görüldüğü gibi stack bölümü boşuna büyürse heap bölgesiyle çakışır ve probleme yol açar.
Bazı dosya formatlarında ve sistemlerde stack bölgesinin en fazla ne kadar büyütüleceği
belirlenmektedir. Örneğin Win32 sistemlerinde stack uzunluğu PE formatında belirlenir ve

stack bu uzunluğu çalışma zamanında aşamaz. Eğer aşarsa koruma mekanizmasından
faydalanılarak program sonlandırılır. Bazı sistemlerde (örneğin DOS ve UNIX sistemlerinde)
stack sınırlanmaz, ancak programın çalışma zamanı sırasında heap bölgesiyle çakışma
sonucunda program çökebilir. Tabii işletim sistemleri koruma mekanizmasından
faydalanılarak stack ile heap bölgesinin çakışmasını kolaylıkla tespit ederler. Yani stack
bölgesinin serbest büyüyebildiği sistemlerde stack çakışması yine tespit edilebilmektedir.

Arapça Eğitim Seti
Bilgisayar Dershanesi Ders Sahibi;
Bilgisayar Dershanesi

Yorumlar

Yorum Yapabilmek İçin Üye Girişi Yapmanız Gerekmektedir.

ETİKETLER

SEO En İyi SEO Firması Opencart Opencart E Ticaret İngilizce Öğren Fransızca Öğren Rusça Öğren Arapça Öğren Almanca Öğren Çince Öğren Japonca Öğren İspanyolca Öğren Hollandaca Öğren Kürtçe Öğren