Bölüm 8: Bellek Yönetimi
Giriş
Nasıl Çalışalım?
Birimler: 1 KB = 210 bayt, 1 MB = 220, 1 GB = 230. Adres hesaplarında önce sayfa (ya da birim) boyutunu 2’nin kuvveti olarak yazın: konum (offset) bit sayısı onun üssüdür; kalan üst bitler sayfa numarasıdır.
Soru 1 · Adres Uzayı ve Bağlama
Bellek Yöneticisinin İşi Değil
Aşağıdakilerden hangisi İS’nin bellek yönetimi bileşeninin görevlerinden biri değildir?
- Belleğin hangi bölgelerinin boş, hangilerinin dolu olduğunu izlemek
- Süreçlere bellek ayırmak ve iş bitince geri almak
- Süreçlerin birbirinin belleğine erişmesini engellemek
- Bellek yetmediğinde sayfaları ya da süreçleri diske takas etmek
- Hazır kuyruğundan sıradaki çalışacak süreci seçmek
Cevabı göster
Doğru cevap: E) Hazır kuyruğundan sıradaki çalışacak süreci seçmek
Sıradaki süreci seçmek CPU çizelgeleyicisinin işidir. Bellek yönetimi: boş/dolu takibi, tahsis ve geri alma, koruma, yer değiştirme (relocation) ve takas.
Soru 2 · Adres Uzayı ve Bağlama
Neden Mantıksal Adres?
Mantıksal ve fiziksel adres kavramlarını tanımlayın. Programların fiziksel adres yerine mantıksal adres kullanmasının (bellek soyutlaması) iki avantajını ve bir bedelini yazın.
Cevabı göster
- Mantıksal (sanal) adres: CPU’nun ürettiği, sürecin kendi adres uzayındaki adres; her süreç 0’dan başlayan özel bir uzay görür.
- Fiziksel adres: Bellek biriminin gördüğü gerçek RAM adresi. Dönüşümü her erişimde donanım (MMU) yapar.
- Avantajlar: yalıtım ve koruma (süreç başkasının belleğini adresleyemez); yer değiştirme (program her çalıştırmada farklı fiziksel yere, hatta parçalı olarak yüklenebilir); fiziksel bellekten büyük adres uzayı (sanal bellek) ve paylaşım.
- Bedel: her erişimde çeviri gerekir (MMU, TLB donanımı), tablolar bellek kaplar ve İS karmaşıklaşır.
Soru 3 · Adres Uzayı ve Bağlama
Taban ve Limit
Bir sürecin taban (relocation) yazmacı 30000, limit yazmacı 12000. Süreç sırasıyla 5000, 11999 ve 12000 mantıksal adreslerine erişiyor. Sonuçlar nedir?
- 35000, 41999, 42000
- 35000, 41999, tuzak
- 5000, 11999, tuzak
- 35000, tuzak, tuzak
- 17000, 18001, tuzak
Cevabı göster
Doğru cevap: B) 35000, 41999, tuzak
MMU önce mantıksal < limit denetler, sonra tabanı ekler: 5000 → 35000; 11999 → 41999; 12000 ≥ 12000 → koruma hatası (tuzak), İS’ye geçilir. Geçerli adresler 0–11999’dur.
Soru 4 · Adres Uzayı ve Bağlama
Bağlama Zamanı
Bir program çalışırken İS onu bellekte başka bir yere taşıyabiliyor (ör. sıkıştırma ya da takas sonrası farklı yere yükleme). Bunun mümkün olması için adres bağlama ne zaman yapılmalıdır?
- Derleme zamanında (mutlak kod)
- Yükleme zamanında (yer değiştirebilir kod)
- Yürütme zamanında, her erişimde donanımla (MMU)
- Bağlama zamanında, bağlayıcı tarafından
- Hiç bağlama gerekmez
Cevabı göster
Doğru cevap: C) Yürütme zamanında, her erişimde donanımla (MMU)
Derleme ya da yükleme zamanında bağlanan adresler sabitlenir; süreç taşınınca geçersizleşir. Yürütme zamanı bağlamada her erişim o anki taban/tablo değerleriyle çevrilir; taşımak için yalnızca yazmaç ya da tablo güncellenir.
Soru 5 · Adres Uzayı ve Bağlama
Dinamiklik İçermeyen Teknik
Bölüm sayısının ve her bölümün boyunun açılışta belirlendiği, sonra hiç değişmediği teknik hangisidir? Bu tekniğin tipik israfı nedir?
- Değişken bölümleme; dış parçalanma
- Sabit bölümleme; iç parçalanma
- Sayfalama; dış parçalanma
- Kesimleme; iç parçalanma
- Buddy sistemi; hiç israf yok
Cevabı göster
Doğru cevap: B) Sabit bölümleme; iç parçalanma
Sabit bölümlemede her süreç kendisine yeten bir bölüme konur; bölümün kullanılmayan kalanı başkasına verilemez (iç parçalanma). Ayrıca aynı anda çalışabilecek süreç sayısı bölüm sayısıyla sınırlıdır.
Soru 6 · Adres Uzayı ve Bağlama
Sızıntı Kalıcı mı?
Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.
“Bir süreç malloc ile aldığı öbek (heap) belleğini free etmeden sonlanırsa, bu bellek sistem yeniden başlatılana kadar kaybolur.”
Cevabı göster
Yanlış. Süreç sonlandığında İS sürecin tüm adres uzayını (kod, veri, öbek, yığın sayfaları) ve açık dosyalarını geri alır. Sızıntı, çalışan uzun ömürlü süreçlerde sorundur. Ayrıca free belleği genellikle İS’ye değil, süreç içindeki ayırıcının boş listesine geri verir; çöp toplama ise İS’nin değil dil çalışma zamanının (JVM gibi) işidir.
Soru 7 · Parçalanma ve Yerleştirme
İki Tür Parçalanma
(a) Sayfa boyutu 4 KB olan bir sistemde 37 KB’lık bir süreç yükleniyor. Ne kadar iç parçalanma oluşur? (b) Değişken bölümlemeli bir sistemde boş delikler 6 KB, 9 KB ve 4 KB; 12 KB’lık bir istek karşılanabilir mi? Bu durumun adı nedir?
Cevabı göster
(a) ⌈37 / 4⌉ = 10 sayfa = 40 KB ayrılır → son sayfada 3 KB iç parçalanma (ayrılmış ama kullanılmayan alan).
(b) Toplam boş alan 19 KB ≥ 12 KB, ama hiçbir delik tek başına 12 KB değil → istek karşılanamaz: dış parçalanma (boş alan bitişik değil). Çözüm: sıkıştırma ya da bitişik olmayan tahsis (sayfalama).
Soru 8 · Parçalanma ve Yerleştirme
En İyi Uyan ve İç Parçalanma
Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.
“En iyi uyan (best-fit) yerleştirme algoritması iç parçalanmayı azaltmak için kullanılır.”
Cevabı göster
Yanlış. Yerleştirme algoritmaları (ilk, en iyi, en kötü uyan) değişken bölümlemede dış parçalanmayı etkiler; süreç tam istediği kadar alan aldığı için iç parçalanma zaten yoktur. En iyi uyan büyük delikleri korur ama kullanılamayacak kadar küçük artıklar üretme eğilimindedir.
Soru 9 · Parçalanma ve Yerleştirme
Sayfalama ve Parçalanma
Aşağıdaki ifade doğru mu, yanlış mı? Gerekçenizi yazın.
“Sayfalamada dış parçalanma oluşmaz; buna karşılık sürecin son sayfasında iç parçalanma görülebilir.”
Cevabı göster
Doğru. Her boş çerçeve herhangi bir sayfaya verilebildiği için bitişik alan gerekmez: dış parçalanma yoktur. Sürecin son sayfası genellikle tam dolmaz; süreç başına ortalama yarım sayfa iç parçalanma beklenir. Sayfa büyüdükçe bu israf artar.
Soru 10 · Parçalanma ve Yerleştirme
Sıkıştırmanın Ön Koşulu
Bellekteki süreçleri bir uca kaydırıp boş alanı tek parçada toplayan sıkıştırma (compaction) için hangisi doğrudur?
- Her sistemde ucuz ve anında yapılabilir.
- Yalnızca yürütme zamanında (dinamik) yer değiştirme destekleniyorsa yapılabilir ve büyük miktarda bellek kopyalaması gerektirir.
- Bellek sızıntılarını giderir.
- İç parçalanmayı ortadan kaldırmak için kullanılır.
- Yalnızca derleme zamanı bağlamada çalışır.
Cevabı göster
Doğru cevap: B) Yalnızca yürütme zamanında (dinamik) yer değiştirme destekleniyorsa yapılabilir ve büyük miktarda bellek kopyalaması gerektirir.
Taşınan sürecin adresleri yeni konuma göre çevrilebilmelidir; bu ancak taban yazmacı ya da tablo ile çalışma zamanında bağlamada mümkündür. Bellek boyunca kopyalama pahalıdır ve sürerken süreçler durur. Sızıntıyla ilgisi yoktur.
Soru 11 · Parçalanma ve Yerleştirme
İlk, En İyi, En Kötü Uyan
Bellekteki boş delikler adres sırasıyla 150, 400, 80, 250 ve 600 KB. İstekler sırayla 230, 120, 380 ve 90 KB. Her isteğin hangi deliğe yerleştiğini ilk uyan, en iyi uyan ve en kötü uyan için bulun. Hangi algoritmada bir istek karşılanamaz?
Cevabı göster
| İstek | İlk uyan | En iyi uyan | En kötü uyan |
|---|---|---|---|
| 230 | 400 → 170 | 250 → 20 | 600 → 370 |
| 120 | 150 → 30 | 150 → 30 | 400 → 280 |
| 380 | 600 → 220 | 400 → 20 | yer yok |
| 90 | 170 → 80 | 600 → 510 | 370 → 280 |
En kötü uyan 380 KB’ı yerleştiremez: büyük delikleri parçalayıp en büyüğü 370’e düşürdü (toplam boş alan yeterli olsa da). Bu veride en iyi uyan, 600’lük deliği son isteğe kadar bütün tutar.
Soru 11 · Çözüm
Adım Adım Çözüm
İlk uyan: ilk yeten delik. En iyi uyan: yetenlerin en küçüğü. En kötü uyan: en büyük delik.
Başlangıç delikleri (adres sırasıyla). Turuncu: o adımda seçilen delik; kalan değer yazılıdır.
230 K: ilk uyan ilk yeterli delik olan 400’e; en iyi uyan yetenler (400, 250, 600) içinde en küçüğü 250’ye; en kötü uyan en büyüğü 600’e koyar.
120 K: ilk uyan ve en iyi uyan 150’ye koyar (en iyi uyanda yetenler 150, 400, 600). En kötü uyan o anki en büyük deliğe, 400’e koyar.
380 K: ilk uyan 600’e, en iyi uyan 400’e (kalan 20). En kötü uyanda en büyük delik 370: yer yok (kırmızı çerçeve).
90 K: ilk uyan 170’e (80 kalır), en iyi uyan yeten tek büyük delik 600’e, en kötü uyan 370’e koyar.
Soru 12 · Parçalanma ve Yerleştirme
Sonraki Uyan
Sonraki uyan (next-fit) algoritması ilk uyandan nasıl ayrılır?
- Her aramaya listenin başından değil, son yerleştirmenin yapıldığı yerden devam eder.
- Her zaman en büyük deliği seçer.
- İsteği en yakın 2’nin kuvvetine yuvarlar.
- Delikleri boyuta göre sıralı tutar.
- Yalnızca sayfalama ile birlikte kullanılır.
Cevabı göster
Doğru cevap: A) Her aramaya listenin başından değil, son yerleştirmenin yapıldığı yerden devam eder.
Sonraki uyan aramayı kaldığı yerden sürdürür; listenin başındaki küçük artıkların taranmasını önler ama benzetimlerde ilk uyandan biraz daha kötü parçalanma verir.
Soru 13 · Boş Alan Takibi
Biteşlem mi, Bağlı Liste mi?
Boş bellek bölgelerini izlemek için kullanılan iki veri yapısını açıklayın. Kapladığı alan, boş yer arama hızı ve serbest bırakmada komşularla birleştirme açısından karşılaştırın.
Cevabı göster
- Biteşlem (bitmap): Bellek sabit tahsis birimlerine bölünür; her birim için 1 bit (0 boş, 1 dolu). Alanı sabittir ve küçüktür. k birimlik yer aramak, art arda k sıfır aramak demektir: yavaş (doğrusal tarama). Serbest bırakma bitleri sıfırlamaktır; birleştirme kendiliğindendir. Birim küçüldükçe biteşlem büyür, büyüdükçe iç parçalanma artar.
- Bağlı liste: Her düğüm bir bölgeyi tutar (boş/dolu, başlangıç, uzunluk). Alanı bölge sayısıyla orantılıdır. İlk/en iyi uyan gibi algoritmalar listeyi tarar; boş bölgeler ayrı listede tutulursa arama hızlanır. Serbest bırakmada komşu boş düğümlerle birleştirme yapılmalıdır (adres sırası ve çift bağlantı kolaylaştırır).
Soru 14 · Boş Alan Takibi
Biteşlem Boyutu
512 MB’lık bellek 4 KB’lık tahsis birimleriyle biteşlemde izleniyor. Biteşlem kaç bayt yer kaplar? Birim 1 KB’a indirilirse ne olur?
- 4 KB
- 16 KB
- 128 KB
- 1 MB
- 16 MB
Cevabı göster
Doğru cevap: B) 16 KB
Birim sayısı 229 / 212 = 217 = 131072 bit → / 8 = 16 KB (belleğin yalnızca ≈ %0,003’ü). 1 KB birimde 219 bit = 64 KB: biteşlem 4 kat büyür, buna karşılık birim başına iç parçalanma azalır.
Soru 15 · Boş Alan Takibi
Biteşlemde Arama
18 birimlik bir belleğin biteşlemi (birim 0’dan başlayarak, 1 = dolu): 1 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 1. İlk uyan ile 3 birimlik bir istek hangi birimden başlar? Ardından (ilk istek yerleşmişken) 4 birimlik bir istek nereye yerleşir? 5 birimlik istek karşılanabilir mi?
- 3 → 4; 4 → 13; 5 karşılanır
- 3 → 8; 4 → 13; 5 karşılanamaz
- 3 → 8; 4 → 14; 5 karşılanamaz
- 3 → 2; 4 → 8; 5 karşılanır
- 3 → 13; 4 → 8; 5 karşılanamaz
Cevabı göster
Doğru cevap: B) 3 → 8; 4 → 13; 5 karşılanamaz
Sıfır dizileri: 2 (1 birim), 4–5 (2), 8–10 (3), 13–16 (4). 3 birim → 8 (8–10 dolar). 4 birim → 13 (13–16). 5 birim: toplam boş 10 birim olsa da hiçbir dizi 5 uzunlukta değil → karşılanamaz.
Soru 15 · Çözüm
Adım Adım Çözüm
Gri: dolu (1). Mavi: boş (0). Turuncu: o adımda bulunan dizi.
Önce sıfır dizilerini ve uzunluklarını çıkarın: 1, 2, 3, 4 birim.
3 birimlik istek: 2 ve 4–5 yetmez; ilk yeten dizi 8–10. Bitler 1 yapılır.
4 birimlik istek: kalan diziler [2], [4–5], [13–16]; yalnız 13–16 yeter.
5 birim için en uzun boş dizi bile yetmez. Başlangıçta da 4’ten uzun dizi yoktu: dış parçalanmanın biteşlemdeki görünümü.
Soru 16 · Boş Alan Takibi
Listede Birleştirme
Bağlı listeyle izlenen bellekte, iki boş bölge arasında kalan X süreci sonlanıyor. Liste adres sırasında ve komşu boş bölgeler hemen birleştiriliyor. Listedeki düğüm sayısı nasıl değişir?
- Değişmez
- 1 artar
- 1 azalır
- 2 azalır (üç düğüm tek boş düğüme dönüşür)
- 3 azalır
Cevabı göster
Doğru cevap: D) 2 azalır (üç düğüm tek boş düğüme dönüşür)
Boş – X – Boş üçlüsü tek bir boş bölge olur: üç düğüm yerine bir düğüm, yani liste 2 düğüm kısalır. Yalnız bir komşu boşsa 1 azalır, hiçbiri boş değilse X’in düğümü “boş” olarak işaretlenir ve sayı değişmez.
Soru 17 · Boş Alan Takibi
Buddy Sistemi
512 KB’lık bellek buddy (kardeş) sistemiyle yönetiliyor. Sırasıyla A = 45 KB, B = 100 KB, C = 20 KB, D = 60 KB isteniyor; sonra B, C ve A bırakılıyor. Her isteğe verilen blok boyu ve toplam iç parçalanma nedir? En sonda bellek hangi bloklardan oluşur?
Cevabı göster
Bloklar: A 64, B 128, C 32, D 64 KB. İç parçalanma 19 + 28 + 12 + 4 = 63 KB.
B bırakılınca birleşme yok (kardeşi bölünmüş). C bırakılınca 96–128 ile birleşir → 64–128 (64 K). A bırakılınca 0–64 + 64–128 → 128, + 128–256 → 0–256 boş (256 K). Son durum: 0–256 boş, 256–320 D, 320–384 boş, 384–512 boş.
Soru 17 · Çözüm
Adım Adım Çözüm
Bölme: blok ikiye ayrılır. Birleştirme: aynı boyda ve adresleri yalnızca o boyun bitinde farklı iki boş kardeş birleşir.
Bloklar yalnızca 2’nin kuvveti boyutundadır; her istek yukarı yuvarlanır.
A = 45 K → 64 K. 512 → 256 + 256 → 128 + 128 → 64 + 64 bölünür; A ilk 64’ü alır (iç parçalanma 19 K).
B = 100 K → 128 K. Uygun en küçük boş blok 128–256 (bölme gerekmez). İç parçalanma 28 K.
C = 20 K → 32 K. Boş 64–128 bölünür: C 64–96’yı alır (iç parçalanma 12 K).
D = 60 K → 64 K. Kalan 256–512 bölünür: 128 + 128 → 64 + 64; D 256–320’yi alır (4 K).
B bırakılır. Kardeşi 0–128 bölünmüş (A ve C içinde) → birleşme yok.
C bırakılır. Kardeşi 96–128 boş → 64–128 (64 K). Onun kardeşi 0–64’te A var → dur.
A bırakılır: 0–64 + 64–128 → 0–128, + 128–256 → 0–256. Kardeşi 256–512 bölünmüş (D) → dur.
Soru 18 · Boş Alan Takibi
Kim Kimin Kardeşi?
Buddy sisteminde 0–64 KB aralığı boş bir 64 KB blok, 96–128 KB aralığı da boş bir 32 KB blok. 64–96 aralığı dolu. Bu iki boş blok birleştirilebilir mi?
- Evet, ikisi de boş olduğu için hemen birleşir.
- Hayır; birleşebilmek için aynı boyda ve birbirinin kardeşi olmaları gerekir. 96–128’in kardeşi 64–96’dır.
- Evet, ama önce sıkıştırma yapılmalıdır.
- Hayır, çünkü buddy sisteminde hiç birleştirme yapılmaz.
- Evet, 96 KB’lık tek bir blok oluşur.
Cevabı göster
Doğru cevap: B) Hayır; birleşebilmek için aynı boyda ve birbirinin kardeşi olmaları gerekir. 96–128’in kardeşi 64–96’dır.
Kardeş, bölünmeden doğan eş bloktur: 32 K’lık 96–128’in kardeşi 64–96’dır; o bırakılınca 64–128 oluşur ve ancak o zaman 0–64 ile birleşip 0–128 olur. 96 K gibi 2’nin kuvveti olmayan bir blok buddy’de yoktur.
Soru 19 · Sayfalama ve Adres Çevirisi
Ondalık Adres Çevirisi
Sayfa boyutu 2 KB. Sayfa tablosunda 4. sayfa 7. çerçeveye eşlenmiş. Mantıksal adres 9000’in fiziksel karşılığı nedir?
- 9000
- 14336
- 15144
- 7808
- 16384
Cevabı göster
Doğru cevap: C) 15144
p = ⌊9000 / 2048⌋ = 4, d = 9000 − 4·2048 = 808. Fiziksel = 7·2048 + 808 = 15144. Konum değişmez; yalnızca sayfa numarası çerçeve numarasıyla değiştirilir.
Soru 20 · Sayfalama ve Adres Çevirisi
Onaltılık Adres Çevirisi
32 bitlik sanal adres, 4 KB sayfa. Sanal adres 0x0003A7F4. Sayfa tablosu girdisi 0x3A, çerçeve 0x1C2 değerini gösteriyor ve geçerli biti 1. (a) Sayfa numarası ve konum kaç bittir? (b) Fiziksel adres nedir?
Cevabı göster
(a) 4 KB = 212 → konum 12 bit, sayfa numarası 32 − 12 = 20 bit.
(b) Son 3 onaltılık hane konumdur: d = 0x7F4, p = 0x0003A = 58. Fiziksel = çerçeve ‖ konum = 0x1C27F4.
Soru 20 · Çözüm
Adım Adım Çözüm
Onaltılıda her hane 4 bittir: 12 bitlik konum = son 3 hane.
4 KB = 212: alttaki 12 bit (3 onaltılık hane) konum, üstteki 20 bit sayfa numarası.
MMU sayfa numarasını (0x3A = 58) sayfa tablosunda indis olarak kullanır; girdi geçerli, çerçeve 0x1C2.
Çerçeve numarası konumun önüne eklenir: 0x1C2 ‖ 0x7F4 = 0x1C27F4. Konum hiç değişmez.
Soru 21 · Sayfalama ve Adres Çevirisi
Sayfa Tablosu Boyutu
32 bit sanal adres, 8 KB sayfa, sayfa tablosu girdisi (PTE) 4 bayt. Tek seviyeli (doğrusal) sayfa tablosu her süreç için ne kadar yer kaplar?
- 512 KB
- 1 MB
- 2 MB
- 4 MB
- 8 MB
Cevabı göster
Doğru cevap: C) 2 MB
Sayfa sayısı 232 / 213 = 219 = 524 288 girdi. Boyut 219 × 4 B = 221 B = 2 MB (100 süreçte 200 MB!). Sayfa boyutu yarıya inseydi (4 KB) tablo 4 MB olurdu.
Soru 22 · Sayfalama ve Adres Çevirisi
64 Bitte Tek Tablo?
48 bitlik sanal adres kullanan bir sistemde sayfa 16 KB, PTE 8 bayt. Doğrusal sayfa tablosu kaç bayt olur? Bu sonuç 64 bit sistemlerin sayfa tablosunu nasıl düzenlemesi gerektiğini gösterir?
Cevabı göster
248 / 214 = 234 girdi × 8 B = 237 B = 128 GB — süreç başına, fiziksel bellekten büyük. Doğrusal tablo kullanılamaz.
- Çok seviyeli tablo (x86-64’te 4 ya da 5 seviye): yalnızca kullanılan bölgelerin alt tabloları oluşturulur.
- Karma ya da ters sayfa tablosu: boyut sanal uzayla değil kullanılan sayfa ya da fiziksel çerçeve sayısıyla orantılı.
- Büyük sayfalar (2 MB, 1 GB) girdi sayısını azaltır. Bedel: TLB ıskasında daha çok bellek erişimi.
Soru 23 · Sayfalama ve Adres Çevirisi
İki Seviyeli Sayfalama
32 bit adres, 4 KB sayfa, iki seviyeli tablo: 10 bit üst indis (PT1), 10 bit alt indis (PT2), 12 bit konum; her tablo 1024 girdi × 4 B = 4 KB. (a) 0x01402A9F için PT1, PT2 ve konum nedir? (b) Bir süreç adres uzayının en altındaki 12 MB’ı ve en üstündeki 4 MB’ı kullanıyor. Kaç sayfa tablosu gerekir, toplam kaç KB?
Cevabı göster
(a) İkili: 0000 0001 01 | 00 0000 0010 | 1010 1001 1111 → PT1 = 5, PT2 = 2, konum = 0xA9F.
(b) Her alt tablo 1024 × 4 KB = 4 MB kapsar: alttaki 12 MB için 3, üstteki 4 MB için 1 alt tablo + 1 üst tablo = 5 tablo = 20 KB (doğrusal tablo 4 MB olurdu).
Soru 23 · Çözüm
Adım Adım Çözüm
Adresi ikiliye açın ve 10 | 10 | 12 bit olarak bölün.
0x01402A9F = 0000 0001 0100 0000 0010 1010 1001 1111 (her onaltılık hane 4 bit).
Üst 10 bit 0000000101 = 5: üst tablonun 5. girdisi (20–24 MB bölgesinin alt tablosu).
Sonraki 10 bit 0000000010 = 2: o alt tablonun 2. girdisi.
Alt 12 bit = 0xA9F: sayfa içindeki konum.
TLB ıskasında 2 tablo erişimi + 1 veri erişimi. Kullanılmayan bölgelerin alt tabloları hiç oluşturulmaz: (b)’deki 20 KB tasarrufun kaynağı.
Soru 24 · TLB ve Sayfa Tablosu Yapıları
Etkili Erişim Süresi
Bellek erişimi 80 ns, TLB araması 10 ns, tek seviyeli sayfa tablosu, TLB isabet oranı %95. (a) Etkili erişim süresi (EES) nedir? (b) EES’nin 92 ns’ye inmesi için isabet oranı en az kaç olmalıdır?
- (a) 90 ns; (b) %95
- (a) 94 ns; (b) %97,5
- (a) 94 ns; (b) %99
- (a) 98 ns; (b) %97,5
- (a) 170 ns; (b) %100
Cevabı göster
Doğru cevap: B) (a) 94 ns; (b) %97,5
(a) İsabet: 10 + 80 = 90 ns; ıska: 10 + 80 (tablo) + 80 (veri) = 170 ns. EES = 0,95·90 + 0,05·170 = 94 ns.
(b) 90α + 170(1 − α) ≤ 92 → 170 − 80α ≤ 92 → α ≥ 0,975 (%97,5).
Soru 25 · TLB ve Sayfa Tablosu Yapıları
TLB Iskası Ne Demek?
Bir bellek erişiminde TLB ıskası (miss) oluştu. Kesin olarak söylenebilecek olan hangisidir?
- Sayfa bellekte değildir; sayfa hatası oluşacaktır.
- Çeviri TLB’de yoktur; sayfa tablosuna bakılmalıdır. Sayfa bellekte olabilir de olmayabilir de.
- Süreç sonlandırılmalıdır.
- TLB tamamen boşaltılmalıdır.
- Adres geçersizdir.
Cevabı göster
Doğru cevap: B) Çeviri TLB’de yoktur; sayfa tablosuna bakılmalıdır. Sayfa bellekte olabilir de olmayabilir de.
TLB yalnızca son kullanılan çevirilerin önbelleğidir. Iskada tablo yürünür; girdi geçerliyse çeviri TLB’ye yüklenip erişim sürer. Sayfa hatası ancak tablodaki girdi “bellekte değil” derse oluşur.
Soru 26 · TLB ve Sayfa Tablosu Yapıları
PTE’de Ne Yoktur?
Doğrusal bir sayfa tablosunun girdisinde (PTE) normalde aşağıdakilerden hangisi saklanmaz?
- Çerçeve numarası
- Geçerli/mevcut biti
- Koruma bitleri (okuma/yazma/çalıştırma)
- Kirli (dirty) ve başvuru (referenced) bitleri
- Girdinin ait olduğu sanal sayfa numarası
Cevabı göster
Doğru cevap: E) Girdinin ait olduğu sanal sayfa numarası
Doğrusal tabloda sanal sayfa numarası tablonun indisidir; girdide ayrıca tutulmaz. (Ters ve karma tablolarda ise eşleşme için sanal sayfa numarası saklanır.) Tablo taban yazmacı da girdide değil, CPU’da (ör. x86 CR3) tutulur.
Soru 27 · TLB ve Sayfa Tablosu Yapıları
Bağlam Değişiminde TLB
Bağlam değiştirmede önceki sürecin TLB girdileri yeni süreç için anlamsızdır. TLB’yi her geçişte boşaltmadan bu sorunu çözen donanım özelliği hangisidir?
- Kirli bit
- Adres uzayı tanımlayıcısı (ASID; x86’da PCID)
- Ters sayfa tablosu
- Sayfa renklendirme
- Taban yazmacı
Cevabı göster
Doğru cevap: B) Adres uzayı tanımlayıcısı (ASID; x86’da PCID)
Her TLB girdisine sürecin ASID’si eklenir; donanım yalnızca o anki ASID ile eşleşen girdileri kullanır. Böylece farklı süreçlerin çevirileri TLB’de birlikte durabilir ve geçişten sonra TLB soğuk başlamaz.
Soru 28 · TLB ve Sayfa Tablosu Yapıları
Ters Sayfa Tablosu
Ters (inverted) sayfa tablosu için hangisi doğrudur?
- Her sürecin her sanal sayfası için bir girdi vardır.
- Sistemde fiziksel çerçeve başına bir girdi vardır; girdi (süreç kimliği, sanal sayfa) çiftini tutar.
- TLB’nin yerini alır, bellekte hiç tablo kalmaz.
- Yalnızca 16 bit sistemlerde kullanılır.
- Paylaşımlı sayfaları çok kolaylaştırır.
Cevabı göster
Doğru cevap: B) Sistemde fiziksel çerçeve başına bir girdi vardır; girdi (süreç kimliği, sanal sayfa) çiftini tutar.
Tablo boyutu fiziksel bellekle orantılıdır, süreç sayısından bağımsızdır. Bedeli: aramada tüm tablo taranmasın diye karma tablo gerekir ve bir çerçeveyi birden çok sanal adrese eşlemek (paylaşım) zorlaşır.
Soru 29 · Kesimleme ve Kütüphaneler
Kesim Tablosu
Kesim tablosu (taban, limit): 0 → (1400, 600), 1 → (6300, 300), 2 → (4100, 1000), 3 → (3200, 500). Mantıksal adresler (kesim, konum) biçiminde: (0, 430), (1, 310), (2, 999), (3, 500). Fiziksel adresleri bulun.
- 1830, 6610, 5099, 3700
- 1830, tuzak, 5099, tuzak
- 1830, tuzak, tuzak, 3700
- tuzak, tuzak, 5099, 3700
- 430, tuzak, 999, tuzak
Cevabı göster
Doğru cevap: B) 1830, tuzak, 5099, tuzak
Konum < limit ise fiziksel = taban + konum, değilse tuzak: (0, 430) → 1830; (1, 310): 310 ≥ 300 → tuzak; (2, 999) → 5099; (3, 500): 500 ≥ 500 → tuzak (geçerli konumlar 0–499).
Soru 30 · Kesimleme ve Kütüphaneler
Sayfalama mı, Kesimleme mi?
Sayfalama ile kesimlemenin karşılaştırması için hangisi doğrudur?
- Kesimler sabit boyludur, sayfalar değişken boyludur.
- Kesimleme programın mantıksal bölümlerini (kod, veri, yığın) değişken boylu birimlerle ifade eder ve dış parçalanmaya açıktır; sayfalama sabit boylu birimler kullanır ve iç parçalanma bırakır.
- Kesimleme adres çevirisi gerektirmez.
- Sayfalama, her bölüme ayrı koruma vermeyi imkânsız kılar.
- İkisi de dış parçalanmayı tamamen ortadan kaldırır.
Cevabı göster
Doğru cevap: B) Kesimleme programın mantıksal bölümlerini (kod, veri, yığın) değişken boylu birimlerle ifade eder ve dış parçalanmaya açıktır; sayfalama sabit boylu birimler kullanır ve iç parçalanma bırakır.
Kesimler programcının gördüğü mantıksal birimlerdir; ayrı koruma ve paylaşım kolaydır ama değişken boy dış parçalanma getirir. Sayfalama programcıya görünmez, sabit boylu çerçevelerle dış parçalanmayı yok eder. x86’nın eski modeli ikisini birleştirir; günümüzde düz model + sayfalama yaygındır.
Soru 31 · Kesimleme ve Kütüphaneler
Statik ve Paylaşımlı Kütüphane
Statik ve dinamik (paylaşımlı) kütüphane arasındaki farkları yazın. Paylaşımlı kütüphanenin iki avantajını ve bir riskini belirtin.
Cevabı göster
- Statik (.a, .lib): Kütüphane kodu bağlama sırasında yürütülebilir dosyanın içine kopyalanır. Dosya büyür; her program kendi kopyasını belleğe yükler; çalışmak için dış dosyaya ihtiyaç duymaz.
- Paylaşımlı (.so, .dll): Yürütülebilir dosya yalnızca başvuru taşır; kütüphane yükleme ya da çalışma zamanında bağlanır (ör. PLT/GOT ile tembel bağlama).
- Avantajlar: salt okunur kodun bellekte tek kopyası birçok süreçte paylaşılır (bellek ve disk tasarrufu); kütüphane güncellenince programlar yeniden derlenmeden yamayı alır.
- Risk: sürüm uyumsuzluğu (“DLL cehennemi”), kütüphane eksikse program açılmaz; ilk çağrılarda küçük bir bağlama gecikmesi.
Soru 32 · Kesimleme ve Kütüphaneler
Dinamik Yükleme
Bir programın nadiren çağrılan hata işleme yordamları programla birlikte belleğe alınmıyor; yalnızca ilk çağrıldıklarında diskten yükleniyor. Bu tekniğin adı nedir?
- Statik bağlama
- Dinamik yükleme
- Takas (swapping)
- Sıkıştırma
- Yer değiştirme yazmacı
Cevabı göster
Doğru cevap: B) Dinamik yükleme
Dinamik yüklemede yordam ihtiyaç anında yüklenir; kullanılmayan kod hiç bellek tüketmez. İS’den özel destek gerektirmez, program tasarımıyla yapılır; dinamik bağlama ise kütüphane başvurularının çalışma zamanında çözülmesidir.
Özet
Özet: Sık Yapılan Hatalar
- Konum bit sayısını sayfa sayısından hesaplamak: konum = log₂(sayfa boyutu); sayfa numarası bitleri = adres bitleri − konum bitleri.
- Sayfa tablosu boyutunu sayfa sayısıyla bırakmak: girdi sayısı × PTE boyu ile çarpın; birimleri (KB/MB) 2’nin kuvvetiyle çevirin.
- İç ve dış parçalanmayı karıştırmak: iç = ayrılmış bloğun içindeki boşluk; dış = bloklar arasındaki dağınık boşluklar. Best-fit iç parçalanmayı azaltmaz.
- Limit denetimini ≤ ile yapmak: geçerli konumlar 0 … limit − 1; konum = limit tuzaktır.
- TLB ıskasını sayfa hatası sanmak; EES’de ıskada iki bellek erişimi (tablo + veri) olduğunu unutmak.
- Buddy’de bitişik her boş bloğu birleştirmek: yalnızca aynı boydaki kardeşler birleşir.
- Sızıntının süreç bitince de sürdüğünü düşünmek: İS sürecin tüm belleğini geri alır.