Bölüm 9: Sanal Bellek

İşletim Sistemleri · Çalışma Soruları
Sanal BellekSayfa Hatası ve EATYer Değiştirme AlgoritmalarıYer Değiştirme İzlemeÇalışma Kümesi ve ThrashingCOW ve Tasarım
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Giriş

Nasıl çalışalım?

1 · Önce çözünHer slaytta bir soru var. Cevabı açmadan önce kâğıda kendi cevabınızı yazın; çoktan seçmelide eleme gerekçenizi de not edin.
2 · Cevabı açın“Cevabı göster” kutusu doğru cevabı ve kısa gerekçeyi verir. Açık uçlu sorularda kendi cevabınızı anahtar kavramlarla karşılaştırın.
3 · Adım adım izleyinHesaplama ve kod sorularının ardından gelen “Adım Adım Çözüm” slaytında › düğmesiyle çözümü satır satır ilerletin.

31 soru · Çoktan seçmeli: 13 · Açık uçlu: 4 · Doğru / Yanlış: 3 · Hesaplama: 10 · Kod izleme: 1. Sorular konu başlıklarına göre gruplanmış ve kolaydan zora sıralanmıştır.

Soru 1 · Sanal Bellek

RAM’den Büyük Toplam

Çoktan seçmeli 16 GB RAM’i olan bir sunucuda çalışan süreçlerin sanal boyutlarının toplamı 41 GB görünüyor ve sistem sorunsuz çalışıyor. Bunu mümkün kılan temel fikir hangisidir?

  1. Çekirdek, belleği sıkıştırarak fiziksel RAM’i kalıcı olarak 41 GB’a büyütür
  2. Süreçler sırayla çalıştığı için aynı anda yalnızca bir sürecin belleği gerekir
  3. Her sürecin yalnızca o an kullandığı sayfaları RAM’de tutulur; geri kalanı ya hiç yüklenmemiştir ya da diskteki takas alanındadır
  4. Süreçlerin adres uzayları birleştirilir; tüm süreçler tek bir ortak sayfa tablosu kullanır
Cevabı göster

Doğru cevap: C · Her sürecin yalnızca o an kullandığı sayfaları RAM’de tutulur; geri kalanı ya hiç yüklenmemiştir ya da diskteki takas alanındadır

Sanal bellek, mantıksal adres uzayını fiziksel bellekten ayırır. Sayfa tablosundaki geçerli/mevcut biti hangi sayfanın RAM’de olduğunu söyler; diğerleri talep geldiğinde diskten getirilir. Sıkıştırma (zswap gibi) yardımcı olabilir ama RAM’i “büyütmez”.

Soru 2 · Sanal Bellek

Fiziksel Bellekten Fazlasını Vermek

Açık uçlu Bir öğrenci “RAM 8 GB ise hiçbir süreç toplamda 8 GB’tan fazla bellek kullanamaz” diyor. Bu iddiayı sanal bellekle çürütün: mekanizmanın donanım ve İS tarafındaki bileşenlerini ve bir sayfanın diske gidip geri gelmesini kısaca anlatın.

Cevabı göster
  • Donanım (MMU): her bellek erişiminde sanal adresi sayfa tablosuyla çerçeveye çevirir; sayfa yoksa (geçersiz bit) sayfa hatası tuzağı üretir. TLB çeviriyi hızlandırır.
  • İS: her sürece kendi sanal adres uzayını ve sayfa tablosunu verir, sayfaları talep geldiğinde yükler, diskte takas alanı tutar.
  • Gidiş-dönüş: RAM dolunca yer değiştirme algoritması bir kurban seçer; kirliyse takasa yazılır, PTE geçersiz yapılır. Sayfaya yeniden erişilince hata oluşur, sayfa diskten boş çerçeveye okunur, PTE güncellenir ve komut yeniden çalıştırılır.

Bedeli: diskten gelen her sayfa milisaniyeler sürer; kazanç ise yerelliğe bağlıdır.

Soru 3 · Sanal Bellek

Sanal Bellek: Doğru mu?

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin ve gerekçelendirin.

  1. Her süreç kendi sanal adres uzayına sahip olduğu için bir süreç, başka bir sürecin çerçevelerine kendi sayfa tablosu üzerinden ulaşamaz.
  2. Paylaşılan bir kütüphanenin kod sayfaları, birden çok sürecin sayfa tablosunda aynı fiziksel çerçeveye eşlenebilir.
  3. Sanal bellek kullanan bir sistemde sayfa hatası her zaman bir programlama hatasıdır ve süreç sonlandırılır.
Cevabı göster
  1. Doğru. Bir süreç yalnızca kendi sayfa tablosunda eşlenmiş çerçevelere erişebilir; koruma ve yalıtım sanal belleğin temel kazanımlarındandır.
  2. Doğru. Salt okunur kod sayfaları paylaşılır; libc bellekte bir kez bulunur ama her süreç onu kendi adres uzayında görür.
  3. Yanlış. Talebe bağlı sayfalamada sayfa hatası olağandır: geçerli ama RAM’de olmayan sayfa yüklenir ve süreç devam eder. Yalnızca geçersiz adrese erişim süreci sonlandırır.

Soru 4 · Sanal Bellek

İlk Komutta Ne Olur?

Çoktan seçmeli Bir İS saf talebe bağlı sayfalama kullanıyor: bir program başlatıldığında hiçbir sayfası belleğe yüklenmeden program sayacı ilk komutun adresine ayarlanıyor. CPU ilk komutu getirmeye çalıştığında ne olur?

  1. Sayfa hatası oluşur; İS kod sayfasını yükler ve komut yeniden başlatılır
  2. Süreç geçersiz adres nedeniyle sonlandırılır
  3. Komut doğrudan diskten okunarak yürütülür; RAM kullanılmaz
  4. TLB kodu önceden yüklediği için hata oluşmaz
  5. Çekirdek sürecin tüm sayfalarını tek seferde yükler
Cevabı göster

Doğru cevap: A · Sayfa hatası oluşur; İS kod sayfasını yükler ve komut yeniden başlatılır

Sayfa tablosundaki tüm girdiler “bellekte değil” durumundadır; ilk erişim sayfa hatası üretir. Program, ilk anda bir dizi hatayla çalışma kümesini oluşturur, sonra yerellik sayesinde hata oranı düşer.

Soru 5 · Sanal Bellek

Tembel Yüklemenin Bedeli

Çoktan seçmeli Talebe bağlı sayfalama, programın hiç dokunulmayan kısımlarını belleğe almadığı için yer kazandırır. Bu yaklaşımın doğrudan bedeli nedir?

  1. Süreçlerin birbirinin belleğini okuyabilmesi
  2. Her sürecin sayfa tablosunun ortadan kalkması
  3. Dış parçalanmanın artması
  4. Bir sayfaya ilk erişimin, sayfa hatası ve ikincil depolamadan okuma nedeniyle çok daha uzun sürmesi
  5. Çoklu programlama derecesinin düşmesi
Cevabı göster

Doğru cevap: D · Bir sayfaya ilk erişimin, sayfa hatası ve ikincil depolamadan okuma nedeniyle çok daha uzun sürmesi

Her ilk erişim bir hataya ve disk/SSD G/Ç’sine dönüşebilir. Sayfalama dış parçalanma üretmez; korumayı da bozmaz. Tersine, daha az bellek kullanıldığı için bellekte daha fazla süreç tutulabilir.

Soru 6 · Sayfa Hatası ve EAT

Bir Sayfa Hatasının Yolculuğu

Açık uçlu Bir süreç, takas alanında duran bir sayfadaki diziye yazmaya çalışıyor. MMU’nun tuzak üretmesinden komutun yeniden çalışmasına kadar İS’nin yaptıklarını sırayla yazın. Boş çerçeve yoksa araya hangi adımlar girer?

Cevabı göster
  1. MMU, PTE’de geçerli bitin 0 olduğunu görür ve sayfa hatası tuzağı üretir; kip çekirdeğe geçer, yazmaçlar kaydedilir.
  2. İS adresin sürecin adres uzayında yasal olup olmadığını denetler; değilse süreç sonlandırılır (SIGSEGV).
  3. Boş bir çerçeve bulunur. Yoksa: yer değiştirme algoritması kurban seçer; kurban kirliyse diske yazılır, PTE’si geçersiz yapılır.
  4. Sayfanın takastaki yeri bulunur, disk okuması başlatılır; süreç bekler durumuna geçer, CPU başka sürece verilir.
  5. Okuma bitince kesme gelir; PTE çerçeve numarası ve geçerli bitle güncellenir, TLB girdisi düzeltilir.
  6. Süreç hazır kuyruğuna döner; çalıştığında hataya yol açan komut baştan yeniden yürütülür.

Soru 7 · Sayfa Hatası ve EAT

Adres 0’a Yazmak

Çoktan seçmeli Bir C programında int *p = NULL; *p = 5; satırı çalışıyor. İS’lerin çoğu adres uzayının 0. sayfasını hiçbir çerçeveye eşlemez. Ne olur?

  1. Sayfa hatası oluşur; İS sayfayı takastan getirip yazmaya izin verir
  2. MMU hata üretir; İS adresin geçerli bir bölgeye ait olmadığını görür ve sürece SIGSEGV göndererek onu sonlandırır
  3. Yazma çekirdek belleğine yapılır ve sistem çöker
  4. Derleyici bu satırı derlemeyi reddeder
  5. Değer TLB’ye yazılır, belleğe hiç ulaşmaz
Cevabı göster

Doğru cevap: B · MMU hata üretir; İS adresin geçerli bir bölgeye ait olmadığını görür ve sürece SIGSEGV göndererek onu sonlandırır

Sayfa hatası işleyicisi önce erişimin yasal olup olmadığına bakar. 0. sayfa bilerek geçersiz bırakıldığı için NULL işaretçi hataları anında yakalanır; bu bir “geçerli ama bellekte değil” durumu değildir.

Soru 8 · Sayfa Hatası ve EAT

Etkin Erişim Süresi

Hesaplama Bellek erişimi 120 ns, bir sayfa hatasının toplam servis süresi (takas okuma dâhil) 6 ms. (a) Her 2000 erişimden birinde hata oluyorsa etkin erişim süresi (EAT) nedir? (b) Yavaşlamanın %10’u geçmemesi için hata olasılığı en fazla ne olmalıdır?

Cevabı göster

(a) EAT = (1 − p) × 120 + p × 6 000 000 ns, p = 1/2000 → 119,94 + 3 000 = 3 119,94 ns ≈ 3,12 µs; bellek yaklaşık 26 kat yavaşlar.

(b) EAT ≤ 132 ns olmalı: 120 + p × (6 000 000 − 120) ≤ 132 → p ≤ 12 / 5 999 880 ≈ 2 × 10−6, yani yaklaşık 500 000 erişimde en fazla bir hata.

Soru 8 · Adım Adım Çözüm

Soru 8: Adım Adım Çözüm

1. Formül: EAT = (1 − p) × tbellek + p × thata. Birimleri eşitleyin: 6 ms = 6 000 000 ns.

2. p = 1/2000 = 0,0005 → isabet katkısı 0,9995 × 120 = 119,94 ns.

3. Hata katkısı 0,0005 × 6 000 000 = 3 000 ns → EAT = 3 119,94 ns; 3 119,94 / 120 ≈ 26 kat yavaş.

4. (b) Hedef: 1,10 × 120 = 132 ns → 120 − 120p + 6 000 000p ≤ 132 → 5 999 880 p ≤ 12.

5. p ≤ 2,0 × 10−6 (1 / 499 990). Ders: hata servis süresi bellekten ~50 000 kat uzun olduğu için çok küçük hata oranları bile başarıma hâkimdir.

Soru 9 · Sayfa Hatası ve EAT

Tek Düzeyli Sayfa Tablosu Boyutu

Hesaplama 32 bitlik sanal adres kullanan bir sistemde her sayfa tablosu girdisi (PTE) 4 bayt. (a) Sayfa boyutu 8 KB ise tek düzeyli sayfa tablosu kaç bayttır? (b) Sayfa boyutu 2 KB’a düşürülürse ne olur?

Cevabı göster

(a) 8 KB = 213 → ofset 13 bit, sayfa numarası 32 − 13 = 19 bit → 219 girdi × 4 B = 221 B = 2 MB.

(b) 2 KB = 211 → 221 girdi × 4 B = 223 B = 8 MB. Sayfa 4 kat küçülünce tablo 4 kat büyür; bu tablo her süreç için ayrıdır.

Soru 9 · Adım Adım Çözüm

Soru 9: Adım Adım Çözüm

1. Ofset bit sayısı = log2(sayfa boyutu): 8 KB = 8 192 = 213 → 13 bit.

2. Sayfa numarası bitleri = 32 − 13 = 19 → girdi sayısı 219 = 524 288.

3. Boyut = 524 288 × 4 B = 2 097 152 B = 2 MB.

4. 2 KB = 211: 221 = 2 097 152 girdi × 4 B = 8 MB.

Ders: boyut = 2(adres bitleri − ofset bitleri) × PTE boyutu. Sayfa küçüldükçe tablo büyür, iç parçalanma azalır.

Soru 10 · Sayfa Hatası ve EAT

64 Bitlik Sistemde Düz Tablo

Hesaplama Bir 64 bitlik işlemci sanal adresin yalnızca 48 bitini kullanıyor; sayfa boyutu 16 KB, PTE boyutu 8 bayt. Tek düzeyli (düz) bir sayfa tablosu her süreç için ne kadar yer kaplardı? Bu sonuç gerçek sistemlerin tasarımını nasıl etkiler?

Cevabı göster

16 KB = 214 → sayfa numarası 48 − 14 = 34 bit → 234 girdi × 8 B = 237 B = 128 GB (süreç başına!).

Bu yüzden düz tablo kullanılmaz: çok düzeyli tablolar (x86-64’te 4–5 düzey) yalnızca kullanılan bölgeler için alt tablo ayırır; alternatif olarak ters (inverted) ya da karma sayfa tabloları kullanılır.

Soru 10 · Adım Adım Çözüm

Soru 10: Adım Adım Çözüm

1. 16 KB = 16 384 = 214 → ofset 14 bit.

2. Sayfa numarası 48 − 14 = 34 bit → 234 ≈ 17,2 milyar girdi.

3. 234 × 23 B = 237 B = 128 × 230 B = 128 GB.

4. Sürecin gerçekten kullandığı birkaç yüz MB için bile bu kadar tablo ayırmak olanaksızdır → çok düzeyli tablo, yalnızca dolu dalları tutar.

Soru 11 · Yer Değiştirme Algoritmaları

Dört Algoritmayı Karşılaştırın

Açık uçlu Bir arkadaşınıza FIFO, OPT (optimal), LRU ve saat (ikinci şans) algoritmalarını anlatacaksınız. Her biri için kurbanı nasıl seçtiğini, bir güçlü ve bir zayıf yönünü içeren kısa bir tablo hazırlayın.

Cevabı göster
AlgoritmaKurbanGüçlüZayıf
FIFOBelleğe en önce yüklenen sayfaKuyrukla çok basitKullanımı gözetmez; Belady anomalisi
OPTBir sonraki kullanımı en uzak gelecekte olan (ya da hiç kullanılmayacak)En az hata; ölçütGeleceği bilmek gerekir, gerçeklenemez
LRUEn uzun süredir kullanılmayan sayfaYerellikle OPT’ye yakınHer erişimde zaman damgası/yığın: donanım maliyeti
Saatİbre R = 1 olanların bitini sıfırlayıp geçer; ilk R = 0 sayfayı çıkarırTek bitle ucuz LRU yaklaşımıHepsi R = 1 ise FIFO’ya döner

Dikkat: LRU en son kullanılanı değil, en eski kullanılanı çıkarır; en son kullanılanı çıkaran MRU’dur.

Soru 12 · Yer Değiştirme Algoritmaları

LRU Hangi Sayfayı Çıkarır?

Çoktan seçmeli Dört çerçeveli bir bellekte sayfaların son kullanım anları (saat tiki) şöyle: A → 12, B → 3, C → 9, D → 15. Şu an tik 16 ve bellekte olmayan E sayfasına erişiliyor. LRU hangi sayfayı çıkarır?

  1. A, çünkü en uzun süredir bellekte duran odur
  2. B, çünkü en uzun süredir kullanılmayan odur
  3. D, çünkü en son kullanılan odur
  4. C, çünkü sıralamada ortadadır
  5. Hiçbiri; LRU önce E’nin gelecekte kullanılıp kullanılmayacağına bakar
Cevabı göster

Doğru cevap: B · B, çünkü en uzun süredir kullanılmayan odur

LRU son kullanım anı en küçük olanı (B, tik 3) seçer. D’yi seçmek MRU (en son kullanılanı çıkar) olurdu; “en uzun süredir bellekte duran” ölçütü ise FIFO’dur ve yükleme anına bakar, son kullanıma değil.

Soru 13 · Yer Değiştirme Algoritmaları

Çerçeve Arttı, Hata Arttı

Çoktan seçmeli Bir deneyde aynı referans dizisi önce 3, sonra 4 çerçeveyle çalıştırılıyor; hata sayısı 9’dan 10’a çıkıyor. Kullanılan algoritma hangisi olabilir?

  1. LRU
  2. OPT
  3. Yığın (stack) özelliği taşıyan herhangi bir algoritma
  4. FIFO
  5. Hiçbiri; çerçeve sayısı artınca hata sayısı hiçbir algoritmada artmaz
Cevabı göster

Doğru cevap: D · FIFO

Bu, Belady anomalisidir ve FIFO’da görülür. LRU ve OPT yığın algoritmalarıdır: n çerçeveyle bellekte olan sayfalar kümesi, n + 1 çerçeveyle olanın alt kümesidir; bu yüzden çerçeve artınca hata sayısı artamaz.

Soru 14 · Yer Değiştirme Algoritmaları

OPT Neden Gerçek Sistemde Yok?

Çoktan seçmeli OPT algoritması bilinen bir referans dizisi için en az hatayı verir. Buna rağmen İS’lerde kullanılmamasının nedeni ve ders kitaplarında yine de anlatılmasının nedeni nedir?

  1. Sayfaların gelecekte ne zaman kullanılacağını bilmeyi gerektirir; diğer algoritmaları değerlendirmek için alt sınır (ölçüt) olarak kullanılır
  2. Çok fazla donanım biti ister; ama en hızlı algoritmadır
  3. Yalnızca tek çerçeveli sistemlerde çalışır; tarihsel olarak önemlidir
  4. Belady anomalisi gösterir; bu yüzden yalnızca anomaliyi öğretmek için anlatılır
Cevabı göster

Doğru cevap: A · Sayfaların gelecekte ne zaman kullanılacağını bilmeyi gerektirir; diğer algoritmaları değerlendirmek için alt sınır (ölçüt) olarak kullanılır

Gelecek bilinmez; OPT ancak bir iz (trace) kaydedildikten sonra çevrimdışı çalıştırılabilir. “LRU, OPT’ye göre yalnızca %8 fazla hata yaptı” gibi karşılaştırmalar için kullanılır.

Soru 15 · Yer Değiştirme Algoritmaları

Saat İbresi Nerede Durur?

Çoktan seçmeli Saat algoritmasında dört çerçeve var: A (R = 1), B (R = 0), C (R = 1), D (R = 0); ibre A’yı gösteriyor. Önce bellekte olmayan E, hemen ardından bellekte olmayan F sayfasına erişiliyor. Sırasıyla hangi sayfalar çıkarılır?

  1. Önce A, sonra C
  2. Önce B, sonra C
  3. Önce B, sonra D
  4. Önce D, sonra B
  5. Önce A, sonra B
Cevabı göster

Doğru cevap: C · Önce B, sonra D

E için: A’nın R’si 1 → 0 yapılır, geçilir; B’nin R’si 0 → B çıkar, E yerine yüklenir (R = 1), ibre C’ye ilerler. F için: C’nin R’si 1 → 0, geçilir; D’nin R’si 0 → D çıkar. Referans biti 1 olan sayfa ikinci bir şans kazanır.

Soru 16 · Yer Değiştirme Algoritmaları

(R, M) Sınıfına Göre Kurban

Çoktan seçmeli NRU algoritmasında dört sayfanın (R, M) bitleri: K (1, 0), L (0, 1), N (1, 1), S (1, 0). Saat kesmesi R bitlerini son temizlediğinden beri bu değerler oluşmuş. NRU hangi sayfayı çıkarmayı tercih eder?

  1. L, çünkü yakın zamanda kullanılmamıştır; (0, 1) sınıfı (1, 0) sınıfından önce gelir
  2. K, çünkü temizdir ve diske yazılması gerekmez
  3. N, çünkü hem kullanılmış hem değiştirilmiştir
  4. S, çünkü listede en sondadır
Cevabı göster

Doğru cevap: A · L, çünkü yakın zamanda kullanılmamıştır; (0, 1) sınıfı (1, 0) sınıfından önce gelir

Sınıf sırası: 0 = (0, 0), 1 = (0, 1), 2 = (1, 0), 3 = (1, 1). (0, 0) sayfa yok; en düşük sınıf L’dir. Kirli bir sayfayı yazmak pahalıdır ama yakında yeniden kullanılması muhtemel temiz bir sayfayı çıkarmak daha kötüdür: R biti öncelikli ölçüttür.

Soru 17 · Yer Değiştirme Algoritmaları

Sayaçlar ve Kirli Bit

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.

  1. Yaşlanma (aging) algoritması, geleceği tahmin eden bir OPT türevidir.
  2. LFU’da geçmişte çok sık kullanılmış bir sayfa, artık hiç kullanılmasa bile uzun süre bellekte kalabilir.
  3. Kirli (M = 1) bir sayfayı kurban seçmek, temiz bir sayfayı seçmekten daha pahalıdır.
Cevabı göster
  1. Yanlış. Yaşlanma NFU’dan türetilmiş bir LRU yaklaşımıdır: her saat tikinde sayaç bir bit sağa kaydırılır, R biti en soldan eklenir; geçmişe bakar.
  2. Doğru. Sayaç yalnızca artar; eski yoğun kullanım “unutulmaz”. Yaşlanma bunu kaydırma ile çözer.
  3. Doğru. Kirli sayfa çerçeve boşaltılmadan önce diske yazılmalıdır; temiz sayfanın diskte güncel kopyası zaten vardır.

Soru 18 · Yer Değiştirme İzleme

FIFO ile Hata Sayısı

Hesaplama Üç çerçeveli, başlangıçta boş bir bellekte referans dizisi 6 2 3 4 5 6 2 5 3 5 3 4 3 1 işleniyor. FIFO kaç sayfa hatası üretir? Çerçeve tablosunu çizin.

Cevabı göster

11 hata (isabetler yalnızca 8, 11, 13. referanslarda). Dikkat: 4. referansta çıkarılan 6, iki adım sonra yeniden istenir; FIFO bir sayfanın ne kadar yakın zamanda ya da sık kullanıldığını hiç dikkate almaz.

Soru 18 · Adım Adım Çözüm

Soru 18: Adım Adım Çözüm

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata6kuyruk (eski → yeni): 6

1. referans 6: Hata; boş çerçeve 0’a yüklenir. Toplam hata: 1

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662kuyruk (eski → yeni): 6 2

2. referans 2: Hata; boş çerçeve 1’e yüklenir. Toplam hata: 2

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623kuyruk (eski → yeni): 6 2 3

3. referans 3: Hata; boş çerçeve 2’ye yüklenir. Toplam hata: 3

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423kuyruk (eski → yeni): 2 3 4

4. referans 4: Hata; kuyruğun başındaki (en önce yüklenen) 6 çıkar. Toplam hata: 4

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453kuyruk (eski → yeni): 3 4 5

5. referans 5: Hata; kuyruğun başındaki (en önce yüklenen) 2 çıkar. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456kuyruk (eski → yeni): 4 5 6

6. referans 6: Hata; kuyruğun başındaki (en önce yüklenen) 3 çıkar. Toplam hata: 6

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256kuyruk (eski → yeni): 5 6 2

7. referans 2: Hata; kuyruğun başındaki (en önce yüklenen) 4 çıkar. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256kuyruk (eski → yeni): 5 6 2

8. referans 5: İsabet; kuyruk değişmez. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236kuyruk (eski → yeni): 6 2 3

9. referans 3: Hata; kuyruğun başındaki (en önce yüklenen) 5 çıkar. Toplam hata: 8

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236235kuyruk (eski → yeni): 2 3 5

10. referans 5: Hata; kuyruğun başındaki (en önce yüklenen) 6 çıkar. Toplam hata: 9

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236235235kuyruk (eski → yeni): 2 3 5

11. referans 3: İsabet; kuyruk değişmez. Toplam hata: 9

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236235235435kuyruk (eski → yeni): 3 5 4

12. referans 4: Hata; kuyruğun başındaki (en önce yüklenen) 2 çıkar. Toplam hata: 10

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236235235435435kuyruk (eski → yeni): 3 5 4

13. referans 3: İsabet; kuyruk değişmez. Toplam hata: 10

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256236235235435435415kuyruk (eski → yeni): 5 4 1

14. referans 1: Hata; kuyruğun başındaki (en önce yüklenen) 3 çıkar. Toplam hata: 11

Soru 19 · Yer Değiştirme İzleme

Aynı Dizi, LRU

Hesaplama Aynı dizi (6 2 3 4 5 6 2 5 3 5 3 4 3 1) ve üç boş çerçeveyle LRU kaç hata üretir? FIFO ile farkın nereden kaynaklandığını gösterin.

Cevabı göster

10 hata. FIFO’dan farklı olarak 9. referansta (3) LRU, yakın zamanda kullanılan 5’i korur ve 6’yı çıkarır; 10. ve 11. referanslar isabet olur.

Soru 19 · Adım Adım Çözüm

Soru 19: Adım Adım Çözüm

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata6en eski kullanım → en yeni: 6

1. referans 6: Hata; boş çerçeve 0’a yüklenir. Toplam hata: 1

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662en eski kullanım → en yeni: 6 2

2. referans 2: Hata; boş çerçeve 1’e yüklenir. Toplam hata: 2

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623en eski kullanım → en yeni: 6 2 3

3. referans 3: Hata; boş çerçeve 2’ye yüklenir. Toplam hata: 3

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423en eski kullanım → en yeni: 2 3 4

4. referans 4: Hata; en uzun süredir kullanılmayan 6 çıkar. Toplam hata: 4

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453en eski kullanım → en yeni: 3 4 5

5. referans 5: Hata; en uzun süredir kullanılmayan 2 çıkar. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456en eski kullanım → en yeni: 4 5 6

6. referans 6: Hata; en uzun süredir kullanılmayan 3 çıkar. Toplam hata: 6

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256en eski kullanım → en yeni: 5 6 2

7. referans 2: Hata; en uzun süredir kullanılmayan 4 çıkar. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256en eski kullanım → en yeni: 6 2 5

8. referans 5: İsabet; 5 en yeni kullanılan olur. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253en eski kullanım → en yeni: 2 5 3

9. referans 3: Hata; en uzun süredir kullanılmayan 6 çıkar. Toplam hata: 8

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253253en eski kullanım → en yeni: 2 3 5

10. referans 5: İsabet; 5 en yeni kullanılan olur. Toplam hata: 8

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253253253en eski kullanım → en yeni: 2 5 3

11. referans 3: İsabet; 3 en yeni kullanılan olur. Toplam hata: 8

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253253253453en eski kullanım → en yeni: 5 3 4

12. referans 4: Hata; en uzun süredir kullanılmayan 2 çıkar. Toplam hata: 9

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253253253453453en eski kullanım → en yeni: 5 4 3

13. referans 3: İsabet; 3 en yeni kullanılan olur. Toplam hata: 9

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623423453456256256253253253453453413en eski kullanım → en yeni: 4 3 1

14. referans 1: Hata; en uzun süredir kullanılmayan 5 çıkar. Toplam hata: 10

Soru 20 · Yer Değiştirme İzleme

Aynı Dizi, OPT

Hesaplama Aynı dizi (6 2 3 4 5 6 2 5 3 5 3 4 3 1) için OPT kaç hata üretir? Üç algoritmanın sonuçlarını sıralayın.

Cevabı göster

8 hata. Sıralama: OPT (8) < LRU (10) < FIFO (11). OPT bir alt sınırdır; hiçbir çevrimiçi algoritma bu dizide 3 çerçeveyle 8’den az hata yapamaz.

Soru 20 · Adım Adım Çözüm

Soru 20: Adım Adım Çözüm

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata6sonraki kullanım (adım): 6→6

1. referans 6: Hata; boş çerçeve 0’a yüklenir. Toplam hata: 1

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662sonraki kullanım (adım): 6→6 2→7

2. referans 2: Hata; boş çerçeve 1’e yüklenir. Toplam hata: 2

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623sonraki kullanım (adım): 6→6 2→7 3→9

3. referans 3: Hata; boş çerçeve 2’ye yüklenir. Toplam hata: 3

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624sonraki kullanım (adım): 6→6 2→7 4→12

4. referans 4: Hata; bir sonraki kullanımı en uzakta olan 3 çıkar. Toplam hata: 4

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625sonraki kullanım (adım): 6→6 2→7 5→8

5. referans 5: Hata; bir sonraki kullanımı en uzakta olan 4 çıkar. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625sonraki kullanım (adım): 6→— 2→7 5→8

6. referans 6: İsabet. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625sonraki kullanım (adım): 6→— 2→— 5→8

7. referans 2: İsabet. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625sonraki kullanım (adım): 6→— 2→— 5→10

8. referans 5: İsabet. Toplam hata: 5

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325sonraki kullanım (adım): 3→11 2→— 5→10

9. referans 3: Hata; bir sonraki kullanımı en uzakta olan 6 çıkar. Toplam hata: 6

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325325sonraki kullanım (adım): 3→11 2→— 5→—

10. referans 5: İsabet. Toplam hata: 6

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325325325sonraki kullanım (adım): 3→13 2→— 5→—

11. referans 3: İsabet. Toplam hata: 6

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325325325345sonraki kullanım (adım): 3→13 4→— 5→—

12. referans 4: Hata; bir sonraki kullanımı en uzakta olan 2 çıkar. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325325325345345sonraki kullanım (adım): 3→— 4→— 5→—

13. referans 3: İsabet. Toplam hata: 7

referans62345625353431çerçeve 0çerçeve 1çerçeve 2hata662623624625625625625325325325345345145sonraki kullanım (adım): 1→— 4→— 5→—

14. referans 1: Hata; bir sonraki kullanımı en uzakta olan 3 çıkar. Toplam hata: 8

Soru 21 · Yer Değiştirme İzleme

Belady Anomalisini Gösterin

Hesaplama Referans dizisi: 3 4 5 6 3 4 7 3 4 5 6 7. FIFO ile 3 ve 4 çerçevede hata sayılarını bulun. Aynı karşılaştırmayı LRU için yapın ve sonucu yorumlayın.

Cevabı göster

FIFO: 3 çerçeve → 9, 4 çerçeve → 10 hata (çerçeve arttı, hata arttı: Belady anomalisi).

LRU: 3 çerçeve → 10, 4 çerçeve → 8 hata. LRU bir yığın algoritması olduğundan çerçeve eklemek hata sayısını asla artırmaz.

Soru 21 · Adım Adım Çözüm

Soru 21: Adım Adım Çözüm

referans345634734567çerçeve 0çerçeve 1çerçeve 2hata334345645635634734734734754756756kuyruk (eski → yeni): 7 5 6

FIFO, 3 çerçeve (son durum) · 12. referans 7: İsabet; kuyruk değişmez. Toplam hata: 9

referans345634734567çerçeve 0çerçeve 1çerçeve 2çerçeve 3hata334345345634563456745673567346734563456745kuyruk (eski → yeni): 4 5 6 7

FIFO, 4 çerçeve (son durum) · 12. referans 7: Hata; kuyruğun başındaki (en önce yüklenen) 3 çıkar. Toplam hata: 10

referans345634734567çerçeve 0çerçeve 1çerçeve 2hata334345645635634734734734534564567en eski kullanım → en yeni: 5 6 7

LRU, 3 çerçeve (son durum) · 12. referans 7: Hata; en uzun süredir kullanılmayan 4 çıkar. Toplam hata: 10

referans345634734567çerçeve 0çerçeve 1çerçeve 2çerçeve 3hata334345345634563456347634763476347534657465en eski kullanım → en yeni: 4 5 6 7

LRU, 4 çerçeve (son durum) · 12. referans 7: Hata; en uzun süredir kullanılmayan 3 çıkar. Toplam hata: 8

Soru 22 · Yer Değiştirme İzleme

Döngü Sırası ve Sayfa Hatası

Kod izleme Sayfa boyutu 4 KB, int 4 bayt. Dizi için yalnızca 1 çerçeve ayrılmış (kod ve değişkenler başka yerde), dizi başlangıçta bellekte değil ve sayfa sınırından başlıyor. doldur1 ve doldur2 kaçar sayfa hatası üretir?

#define SATIR 256
#define SUTUN 1024
int a[SATIR][SUTUN];

void doldur1(void) {
    for (int i = 0; i < SATIR; i++)
        for (int j = 0; j < SUTUN; j++)
            a[i][j] = 0;
}

void doldur2(void) {
    for (int j = 0; j < SUTUN; j++)
        for (int i = 0; i < SATIR; i++)
            a[i][j] = 0;
}
Cevabı göster

Bir satır = 1024 × 4 B = 4 KB = tam bir sayfa.

doldur1: bir satırın 1024 öğesi aynı sayfada → her satırda 1 hata → 256 hata.

doldur2: iç döngü her adımda başka satıra (başka sayfaya) geçer → her erişim hata → 256 × 1024 = 262 144 hata.

Program yapısı yerelliği belirler; bellek düzenine uygun döngü sırası binlerce kat fark yaratır.

Soru 23 · Çalışma Kümesi ve Thrashing

İzleme Ekranında Ne Görüyorsunuz?

Çoktan seçmeli Bir sunucunun izleme ekranında CPU kullanımı %7, takas diskinin kullanımı %100 ve sayfa hatası oranı çok yüksek. Uzun vadeli çizelgeleyici “CPU boşta” diye kuyruğa yeni işler almaya devam ediyor. Durum ve en doğru müdahale nedir?

  1. Disk yavaş; daha hızlı bir CPU takılmalıdır
  2. Thrashing: süreçlerin çalışma kümeleri belleğe sığmıyor; bazı süreçler askıya alınıp (takasa atılıp) çoklu programlama derecesi düşürülmelidir
  3. Kilitlenme: süreçler birbirini bekliyor; bir süreç sonlandırılmalıdır
  4. CPU boşta olduğu için daha fazla süreç alınması doğrudur; durum kendiliğinden düzelir
  5. Sayfa tablosu taşmış; sayfa boyutu küçültülmelidir
Cevabı göster

Doğru cevap: B · Thrashing: süreçlerin çalışma kümeleri belleğe sığmıyor; bazı süreçler askıya alınıp (takasa atılıp) çoklu programlama derecesi düşürülmelidir

Süreçler zamanlarının çoğunu sayfa beklemekle geçirir, CPU boş kalır; yeni süreç eklemek her sürecin çerçeve payını daha da azaltır ve durumu kötüleştirir. Çözüm yükü azaltmak ya da bellek eklemektir.

Soru 24 · Çalışma Kümesi ve Thrashing

Thrashing: Neden ve Önlem

Açık uçlu Thrashing’in nasıl başladığını CPU kullanımı – çoklu programlama derecesi ilişkisiyle açıklayın. İS’nin bunu önlemek için kullanabileceği iki yöntemi yazın.

Cevabı göster

Nasıl başlar: çoklu programlama arttıkça CPU kullanımı önce yükselir. Bir noktadan sonra süreçlerin toplam çalışma kümesi fiziksel belleği aşar; her süreç sürekli hata yapar ve başkasının sayfasını çıkarır (özellikle genel yer değiştirmede). CPU boşta kalır, kullanım hızla düşer.

  • Çalışma kümesi modeli: her sürecin son Δ referanstaki sayfa kümesi izlenir; ΣWSS > çerçeve sayısı ise bir süreç askıya alınır.
  • Sayfa hatası frekansı (PFF): sürecin hata oranı üst sınırı aşarsa çerçeve verilir, alt sınırın altındaysa çerçeve geri alınır; boş çerçeve yoksa süreç askıya alınır.

Yerel yer değiştirme, thrashing’in bir süreçten diğerlerine yayılmasını sınırlar.

Soru 25 · Çalışma Kümesi ve Thrashing

Çalışma Kümesini Bulun

Hesaplama Bir sürecin sayfa referansları (zaman 1’den başlayarak): 1 4 4 2 5 1 1 3 5 5 6 7 6 6 2. Pencere Δ = 5 referans. Zaman 10’daki ve zaman 15’teki çalışma kümesi W(t, Δ) nedir? Her biri kaç çerçeve ister?

Cevabı göster

W(10) = son 5 referans (6–10): 1, 1, 3, 5, 5 → {1, 3, 5}, 3 çerçeve.

W(15) = referans 11–15: 6, 7, 6, 6, 2 → {2, 6, 7}, 3 çerçeve.

Boyut aynı kalsa da küme tamamen değişmiştir: süreç yeni bir yerellik bölgesine geçmiştir. Δ çok küçükse yerellik yakalanmaz, çok büyükse birden çok bölge birleşir.

Soru 26 · Çalışma Kümesi ve Thrashing

Eşit ve Orantılı Tahsis

Hesaplama Üç süreç sırasıyla 20, 60 ve 120 sayfalık sanal belleğe sahip; dağıtılacak 50 çerçeve var. Eşit tahsis ve orantılı tahsis ile her sürece kaç çerçeve düşer? Hangisi neden daha adildir?

Cevabı göster

Eşit: 50 / 3 → her birine 16 çerçeve, 2 çerçeve boş havuzda kalır.

Orantılı: ai = si / S × m, S = 200 → 20/200 × 50 = 5, 60/200 × 50 = 15, 120/200 × 50 = 30.

Eşit tahsis küçük sürece gereğinden fazla, büyüğe az çerçeve verir. Orantılı tahsis daha dengelidir; öncelik de hesaba katılabilir. Her sürecin, komut kümesinin gerektirdiği en az çerçeve sayısının altına düşmemesi gerekir.

Soru 27 · Çalışma Kümesi ve Thrashing

Yerel mi Genel mi?

Çoktan seçmeli Genel (global) yer değiştirme ile yerel (local) yer değiştirme arasındaki farkı en iyi anlatan ifade hangisidir?

  1. Genelde kurban tüm çerçeveler arasından seçilir, sürecin çerçeve sayısı zamanla değişebilir; yerelde kurban yalnızca hatayı yapan sürecin kendi çerçevelerinden seçilir
  2. Genelde yalnızca çekirdek sayfaları, yerelde yalnızca kullanıcı sayfaları çıkarılır
  3. Yerel yer değiştirme toplam iş verimini her zaman artırır
  4. Genel yer değiştirmede bir sürecin hata oranı yalnızca kendi davranışına bağlıdır
Cevabı göster

Doğru cevap: A · Genelde kurban tüm çerçeveler arasından seçilir, sürecin çerçeve sayısı zamanla değişebilir; yerelde kurban yalnızca hatayı yapan sürecin kendi çerçevelerinden seçilir

Genel yer değiştirme daha esnektir ve genellikle daha yüksek iş verimi sağlar, ama bir sürecin hata oranı diğerlerinin davranışına bağlı hâle gelir. Yerel yer değiştirme süreçleri birbirinden yalıtır, kullanılmayan çerçeveleri ise boşa bekletebilir.

Soru 28 · COW ve Tasarım

Kopyalama Ne Zaman Olur?

Çoktan seçmeli fork() sonrasında ebeveyn ve çocuk, yazarken kopyalama (COW) ile 300 sayfayı paylaşıyor; sayfalar ikisinde de salt okunur işaretli. Çocuk 10 sayfayı okuyor, ardından 2 sayfaya yazıyor; ebeveyn hiçbir şey yapmıyor. Kaç sayfa kopyalanır?

  1. 300, çünkü fork() tüm adres uzayını kopyalar
  2. 12, çünkü okunan ve yazılan her sayfa kopyalanır
  3. 2, çünkü yalnızca yazma girişimi koruma hatasına yol açar ve o sayfa kopyalanır
  4. 10, çünkü yalnızca okunan sayfalar kopyalanır
  5. 0, çünkü COW’da sayfalar hiçbir zaman kopyalanmaz
Cevabı göster

Doğru cevap: C · 2, çünkü yalnızca yazma girişimi koruma hatasına yol açar ve o sayfa kopyalanır

Okuma paylaşılan çerçevede sorunsuz yapılır. Salt okunur sayfaya yazma girişimi koruma hatası üretir; İS sayfanın COW olduğunu görür, yeni bir çerçeveye kopyalar, yazana yazılabilir olarak eşler. Böylece fork() hızlı olur ve exec() öncesi gereksiz kopya yapılmaz.

Soru 29 · COW ve Tasarım

COW ve Bellek Eşlemeli Dosyalar

Doğru / Yanlış Aşağıdaki ifadeleri değerlendirin.

  1. COW’da çocuk süreç paylaşılan bir sayfayı okuduğunda o sayfanın özel bir kopyası oluşturulur.
  2. mmap ile eşlenen bir dosyanın sayfaları erişildikçe talebe bağlı olarak yüklenir; bu, her read() çağrısındaki çekirdek → kullanıcı kopyalamasını ortadan kaldırır.
  3. MAP_SHARED ile eşlenmiş bir bölgeye yazılan veri sonunda dosyanın kendisine yansır ve aynı dosyayı eşleyen diğer süreçlerce görülür.
Cevabı göster
  1. Yanlış. Kopya yalnızca yazma girişiminde oluşur; okuma paylaşılan çerçevede yapılır.
  2. Doğru. Dosya sayfaları sayfa önbelleğinden doğrudan sürecin adres uzayına eşlenir; erişim sıradan bellek okuması olur, sistem çağrısı ve kopyalama azalır.
  3. Doğru. Paylaşılan eşlemede kirli sayfalar dosyaya geri yazılır; MAP_PRIVATE eşlemede ise yazma COW ile özel kopya üretir, dosya değişmez.

Soru 30 · COW ve Tasarım

TLB Erimi Hesabı

Hesaplama Bir işlemcinin veri TLB’si 64 girdili. (a) 4 KB sayfalarla TLB’nin kapsadığı bellek (TLB erimi) nedir? (b) Aynı TLB 2 MB’lık büyük sayfalarla kullanılırsa? (c) 300 MB’lık bir dizi üzerinde rastgele erişen bir program için bunun anlamı nedir?

Cevabı göster

(a) 64 × 4 KB = 256 KB. (b) 64 × 2 MB = 128 MB (512 kat).

(c) 4 KB sayfalarla erişimlerin çok büyük kısmı TLB ıskalaması yapar ve sayfa tablosu yürüyüşü gerekir; 2 MB sayfalarla verinin yaklaşık %43’ü (128 / 300) TLB kapsamındadır. Bedeli: büyük sayfalarda iç parçalanma artar ve sayfa ayırmak için bitişik fiziksel bellek gerekir.

Soru 31 · COW ve Tasarım

Sayfa Boyutunu Büyütmek

Çoktan seçmeli Bir İS tasarımcısı sayfa boyutunu 4 KB’tan 16 KB’a çıkarmayı düşünüyor. Aşağıdakilerden hangisi bu değişikliğin olumsuz bir sonucudur?

  1. Sayfa tablosu girdisi sayısının azalması
  2. Bir diske tek seferde daha fazla veri aktarılması
  3. TLB eriminin artması
  4. Süreçlerin son sayfasındaki ortalama boş alanın (iç parçalanmanın) artması
Cevabı göster

Doğru cevap: D · Süreçlerin son sayfasındaki ortalama boş alanın (iç parçalanmanın) artması

Bir sürecin son sayfası ortalama yarı boş kalır: ortalama kayıp 2 KB’tan 8 KB’a çıkar. Ayrıca kullanılmayan veriler de belleğe gelir. Diğer seçenekler büyük sayfanın yararlarıdır.

Özet

Özet: Sık Yapılan Hatalar

Yanlış düşünceDoğrusu
LRU en son kullanılan sayfayı çıkarır.LRU en uzun süredir kullanılmayanı çıkarır; en son kullanılanı çıkaran MRU’dur.
Çerçeve eklemek her algoritmada hatayı azaltır.FIFO’da Belady anomalisi olabilir; LRU ve OPT gibi yığın algoritmalarında olmaz.
Sayfa hatası her zaman bir hatadır, süreç ölür.Geçerli ama bellekte olmayan sayfa yüklenir; yalnızca yasa dışı erişim sonlandırır.
COW’da okumada da kopya oluşur.Kopya yalnızca yazma girişiminde oluşur.
Yaşlanma bir OPT türevidir.Yaşlanma, NFU’dan türetilmiş bir LRU yaklaşımıdır.
Thrashing’de CPU boşsa yeni iş almak iyidir.Yeni iş durumu kötüleştirir; çoklu programlama düşürülmelidir.
Sayfa tablosu boyutu = adres uzayı / PTE.Boyut = 2(adres bitleri − ofset bitleri) × PTE boyutu.

Son

Bölüm 9: Sanal Bellek
Sonraki: Bölüm 10 Çalışma Soruları
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.