Bölüm 9: Sanal Bellek
Çoktan Seçmeli · Giriş
Soru 1: RAM’den Büyük Toplam
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?
C: Sanal bellek mantıksal adres alanını fiziksel bellekten ayırır. Sayfa tablosundaki geçerli biti hangi sayfanın RAM’de olduğunu söyler; diğerleri erişildiğinde getirilir. Sıkıştırma (zswap, zram) yardımcı olur ama RAM’i büyütmez; süreçler de eş zamanlı olarak bellekte durur ve her birinin kendi sayfa tablosu vardır.
Çoktan Seçmeli · Talebe Bağlı Sayfalama
Soru 2: Adres 0’a Yazmak
Bir C programında int *p = NULL; *p = 5; satırı çalışıyor. İşletim sistemi adres alanının 0. sayfasını hiçbir bölgeye (VMA) ait saymaz. Ne olur?
B: MMU girdide geçersiz biti görür ve tuzak üretir. Çekirdek önce referansın geçerli bir bölgede olup olmadığına bakar: 0. sayfa bilerek boş bırakıldığı için bu “geçerli ama bellekte değil” durumu değil, geçersiz referanstır. A yalnızca geçerli bölgedeki bir sayfa için doğru olurdu; TLB veri değil çeviri önbelleğidir.
Çıktı Sorusu · Talebe Bağlı Sayfalama
Soru 3: Adres Çevirisi ve Sayfa Hatası
Sayfa boyutu 1 KB (1024 bayt). Sürecin sayfa tablosu yanda: sayfa 1 geçerli bir bölgede ama takasta, sayfa 3 ise hiçbir bölgeye ait değil. Sırayla 300, 2100, 1500, 4500, 3200 sanal adreslerine erişiliyor. Her biri için sayfa, ofset ve fiziksel adres (ya da ne olacağı) nedir?
Cevabı göster
| sanal | sayfa | ofset | fiziksel adres / sonuç |
|---|---|---|---|
| 300 | 0 | 300 | 5 × 1024 + 300 = 5 420 |
| 2 100 | 2 | 52 | 9 × 1024 + 52 = 9 268 |
| 1 500 | 1 | 476 | sayfa hatası (takastan yüklenir) |
| 4 500 | 4 | 404 | 7 × 1024 + 404 = 7 572 |
| 3 200 | 3 | 128 | SIGSEGV (bölge yok) |
Sayfa = ⌊adres / 1024⌋, ofset = adres mod 1024; fiziksel adres = çerçeve × 1024 + ofset. Ofset çeviride değişmez.
1500: sayfa 1 geçerli bir bölgede ama bellekte değil → büyük sayfa hatası; sayfa okunur, erişim tekrarlanır. 3200: sayfa 3 hiçbir bölgede değil → geçersiz referans, süreç sonlandırılır.
Çıktı Sorusu · Performans
Soru 4: Etkin Erişim Süresi
Bellek erişimi 100 ns, bir sayfa hatasının toplam hizmet süresi (tuzak + HDD’den okuma + yeniden başlatma) 8 ms.
- Bin erişimde bir hata olursa (p = 0,001) etkin erişim süresi nedir? Bellek kaç kat yavaşlar?
- Yavaşlamanın %10’u geçmemesi için p en çok ne olmalıdır?
- Takas bir NVMe SSD’ye taşınır ve hata hizmet süresi 50 µs’ye inerse (a) ne olur?
Cevabı göster
EAT = (1 − p) × ma + p × hata süresi; birimleri eşitle: 8 ms = 8 000 000 ns.
(a) 0,999 × 100 + 0,001 × 8 000 000 = 99,9 + 8 000 = 8 099,9 ns (yaklaşık 8,1 µs): bellek yaklaşık 81 kat yavaşlar.
(b) 110 > 100 + 7 999 900 p → p < 10 / 7 999 900 = 1,25 × 10⁻⁶: yaklaşık 800 000 erişimde birden az hata.
(c) 99,9 + 0,001 × 50 000 = 149,9 ns: yavaşlama %50’ye iner. Hızlı depolama cezayı küçültür ama bellek hâlâ yüzlerce kat hızlıdır; hata oranını düşük tutmak yine yer değiştirme algoritmasının işidir.
Çoktan Seçmeli · Yazınca Kopyalama
Soru 5: Kaç Sayfa Kopyalanır?
fork() sonrasında ebeveyn ve çocuk, yazınca kopyalama ile 300 sayfayı paylaşıyor. Önce çocuk 10 sayfayı okuyor ve A ile B sayfalarına yazıyor. Ardından ebeveyn A ve C sayfalarına yazıyor. Toplam kaç sayfa kopyalanır?
A: Çocuğun A ve B’ye yazması iki koruma hatası ve iki kopya üretir. Ebeveyn A’ya yazdığında A’nın özgün çerçevesinin referans sayısı artık 1’dir: kopyaya gerek yoktur, sayfa yalnızca yazılabilir yapılır. C hâlâ paylaşılıyor (referans sayısı 2) → üçüncü kopya. Okumalar hiç kopya üretmez (D yanlış); B ise her yazmanın kopyaladığını varsayar.
Çoktan Seçmeli · Bellek Eşlemeli Dosyalar
Soru 6: MAP_PRIVATE ile Yazmak
Bir süreç notlar.txt dosyasını mmap(…, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0) ile eşliyor, p[0] = 'X' yazıyor ve munmap çağırıyor. Aynı anda başka bir süreç dosyayı MAP_SHARED ile eşlemiş durumda. Hangisi doğrudur?
D: MAP_PRIVATE eşlemede ilk yazma bir koruma hatası üretir ve çekirdek sayfanın özel bir kopyasını çıkarır (yazınca kopyalama). Değişiklik yalnızca bu sürecin adres alanındadır; munmap ile kaybolur. Dosyaya ve aynı dosyayı eşleyen herkese yansıyan davranış MAP_SHARED’dır (A ve B onu anlatır).
Adım Adım Çalıştırma · Sayfa Yer Değiştirme
Soru 7: LRU ile Sayfa Hataları
Üç boş çerçeve ve 4 2 5 2 3 4 2 5 4 3 4 1 referans dizisiyle LRU kaç sayfa hatası üretir? Her hatada hangi sayfa çıkar?
Üç çerçeve boş; referans dizisi 4 2 5 2 3 4 2 5 4 3 4 1. son[k], çerçevedeki sayfanın son kullanıldığı t değeridir.
1. referans 4: hata; boş çerçeve Ç0’ye yüklenir.
2. referans 2: hata; boş çerçeve Ç1’ye yüklenir.
3. referans 5: hata; boş çerçeve Ç2’ye yüklenir.
4. referans 2: bellekte → isabet; yalnızca son[Ç1] = 3 olur.
5. referans 3: hata. Son kullanımlar (4→0, 2→3, 5→2); en küçük 0 olan 4 çıkar, yerine 3 gelir.
6. referans 4: hata. Son kullanımlar (3→4, 2→3, 5→2); en küçük 2 olan 5 çıkar, yerine 4 gelir.
7. referans 2: bellekte → isabet; yalnızca son[Ç1] = 6 olur.
8. referans 5: hata. Son kullanımlar (3→4, 2→6, 4→5); en küçük 4 olan 3 çıkar, yerine 5 gelir.
9. referans 4: bellekte → isabet; yalnızca son[Ç2] = 8 olur.
10. referans 3: hata. Son kullanımlar (5→7, 2→6, 4→8); en küçük 6 olan 2 çıkar, yerine 3 gelir.
11. referans 4: bellekte → isabet; yalnızca son[Ç2] = 10 olur.
12. referans 1: hata. Son kullanımlar (5→7, 3→9, 4→10); en küçük 7 olan 5 çıkar, yerine 1 gelir. Toplam 8 hata.
for (t = 0; t < 12; t++) { p = ref[t]; k = bul(p); // yoksa -1 if (k < 0) { // sayfa hatası hata++; if (dolu < 3) k = dolu++; else k = en_eski(son); // LRU cer[k] = p; } son[k] = t; // son kullanım }
Çıktı Sorusu · Sayfa Yer Değiştirme
Soru 8: Aynı Dizi: FIFO ve OPT
Aynı dizi (4 2 5 2 3 4 2 5 4 3 4 1) ve üç boş çerçeveyle FIFO ve OPT kaçar sayfa hatası üretir? LRU’nun sonucuyla birlikte üç algoritmayı sıralayın.
OPT’de eşitlik olursa (iki sayfa da bir daha hiç kullanılmıyorsa) çerçeve numarası küçük olan çıkar.
Cevabı göster
FIFO: 10 hata
| ref | 4 | 2 | 5 | 2 | 3 | 4 | 2 | 5 | 4 | 3 | 4 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ç0 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 5 | 5 | 5 | 5 | 1 |
| Ç1 | 2 | 2 | 2 | 2 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | |
| Ç2 | 5 | 5 | 5 | 5 | 2 | 2 | 2 | 2 | 4 | 4 | ||
| hata | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● |
OPT: 6 hata
| ref | 4 | 2 | 5 | 2 | 3 | 4 | 2 | 5 | 4 | 3 | 4 | 1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ç0 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 1 |
| Ç1 | 2 | 2 | 2 | 2 | 2 | 2 | 5 | 5 | 5 | 5 | 5 | |
| Ç2 | 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | ||
| hata | ● | ● | ● | ● | ● | ● |
Kırmızı: hatayla yüklenen, yeşil: isabet. Sıralama OPT (6) < LRU (8) < FIFO (10). FIFO 6. referansta iki adım önce kullanılan 2’yi yalnızca en önce yüklendiği için atar ve 7. referans hata olur (10. referansta 4 için de aynısı). OPT bir alt sınırdır.
Çoktan Seçmeli · Sayfa Yer Değiştirme
Soru 9: Çerçeve Arttı, Hata?
Referans dizisi 3 4 5 6 3 4 7 3 4 5 6 7. FIFO bu dizide 3 boş çerçeveyle 9 sayfa hatası üretiyor. Çerçeve sayısı 4’e çıkarılırsa FIFO kaç hata üretir?
C: Bu dizi, sunumdaki 1 2 3 4 1 2 5 1 2 3 4 5 dizisinin sayıları değiştirilmiş hâlidir: Belady anomalisi. 4 çerçevede 3, 4 isabet olur ama 7 gelince en eski 3 atılır; ardından 3, 4, 5, 6, 7 hep atılmış olanı ister → 10 hata. LRU ve OPT yığın algoritmalarıdır: n çerçevedeki küme n + 1 çerçevedekinin alt kümesi olduğundan çerçeve eklemek hatayı artıramaz (LRU: 10 → 8).
Adım Adım Çalıştırma · Sayfa Yer Değiştirme
Soru 10: Saat Algoritması
Üç boş çerçeve ve 2 3 2 1 5 2 4 5 3 2 5 2 dizisiyle saat (ikinci şans) algoritması nasıl çalışır? Yüklenen ya da erişilen sayfanın R biti 1 olur; el yalnızca hatada döner.
Üç çerçeve dairesel bir listede; boş çerçevelerin R’si 0 sayılır, el Ç0’ı gösteriyor. Dizi: 2 3 2 1 5 2 4 5 3 2 5 2.
1. referans 2: hata. el boş Ç0’de durur, 2 yüklenir.
2. referans 3: hata. el boş Ç1’de durur, 3 yüklenir.
3. referans 2: bellekte → isabet; R ← 1, el kıpırdamaz.
4. referans 1: hata. el boş Ç2’de durur, 1 yüklenir.
5. referans 5: hata. El R = 1 olan 2, 3, 1 için R ← 0 yapıp ilerler; Ç0’deki 2 (R = 0) çıkar, yerine 5 gelir; el bir ilerler.
6. referans 2: hata. Ç1’deki 3 (R = 0) çıkar, yerine 2 gelir; el bir ilerler.
7. referans 4: hata. Ç2’deki 1 (R = 0) çıkar, yerine 4 gelir; el bir ilerler.
8. referans 5: bellekte → isabet; R ← 1, el kıpırdamaz.
9. referans 3: hata. El R = 1 olan 5, 2, 4 için R ← 0 yapıp ilerler; Ç0’deki 5 (R = 0) çıkar, yerine 3 gelir; el bir ilerler.
10. referans 2: bellekte → isabet; R ← 1, el kıpırdamaz.
11. referans 5: hata. El R = 1 olan 2 için R ← 0 yapıp ilerler; Ç2’deki 4 (R = 0) çıkar, yerine 5 gelir; el bir ilerler.
12. referans 2: bellekte → isabet; R ← 1, el kıpırdamaz. Toplam 8 hata (LRU 7, FIFO 9).
for (t = 0; t < 12; t++) { k = bul(ref[t]); if (k >= 0) { R[k] = 1; continue; } hata++; while (R[el] == 1) { // ikinci şans R[el] = 0; el = (el + 1) % 3; } cer[el] = ref[t]; // kurbanın yeri R[el] = 1; el = (el + 1) % 3; }
Çoktan Seçmeli · Sayfa Yer Değiştirme
Soru 11: NRU Hangi Sayfayı Atar?
NRU algoritmasında dört sayfanın (R, M) bitleri yanda. Saat kesmesi R bitlerini son temizlediğinden beri bu değerler oluşmuş. Bir sayfa hatasında NRU hangi sayfayı atar?
B: Sınıflar: 0 = (0, 0), 1 = (0, 1), 2 = (1, 0), 3 = (1, 1). (0, 0) sayfa olmadığından en düşük boş olmayan sınıf 1’dir: L. Kirli bir sayfayı yazmak pahalıdır ama yakın zamanda kullanılmış temiz bir sayfayı atmak daha kötüdür; NRU’da R biti öncelikli ölçüttür. Sınıf 1, değişmiş sayfanın R’si saat tıkıyla silinince oluşur.
Çıktı Sorusu · Sayfa Yer Değiştirme
Soru 12: Yaşlanma Sayaçları
Dört sayfanın (0–3) 8 bitlik yaşlanma sayaçları başlangıçta 0. Beş saat tıkında görülen R bitleri aşağıda. Her tıkta sayaç bir bit sağa kaydırılır, R en sola eklenir. 5. tıktan sonra sayaçlar nedir, yaşlanma hangi sayfayı atar? NFU (sayaç += R) hangisini atardı?
| tık | s0 | s1 | s2 | s3 |
|---|---|---|---|---|
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 2 | 1 | 0 | 1 | 0 |
| 3 | 0 | 1 | 1 | 0 |
| 4 | 0 | 1 | 0 | 1 |
Cevabı göster
| sayfa | sayaç | değer | NFU |
|---|---|---|---|
| 0 | 00111000 | 56 | 3 |
| 1 | 11000000 | 192 | 2 |
| 2 | 01101000 | 104 | 3 |
| 3 | 10011000 | 152 | 3 |
Son tık en anlamlı bittir: sayfa 0’ın R bitleri 1, 1, 1, 0, 0 sırasıyla geldiği için en yeni iki biti 0’dır → 00111000 = 56, en küçük değer. Yaşlanma sayfa 0’ı atar.
NFU tüm geçmişi eşit sayar: sayfa 1 yalnızca iki kez kullanıldı (2) → NFU sayfa 1’i atardı, oysa sayfa 1 son iki tıkta kullanılan tek sayfadır. Yaşlanmanın LRU’ya NFU’dan iyi yaklaşmasının nedeni budur.
Çıktı Sorusu · Çalışma Kümesi
Soru 13: Çalışma Kümesini Bulmak
Bir sürecin sayfa referansları (zaman 1’den başlayarak) aşağıda. Pencere Δ = 5 referans. W(7, Δ), W(10, Δ) ve W(15, Δ) nedir? Her biri kaç çerçeve ister?
Cevabı göster
W(t, Δ) = t’de biten son Δ referanstaki farklı sayfalar.
- W(7): referans 3–7 = 4 2 5 1 1 → {1, 2, 4, 5}, 4 çerçeve.
- W(10): 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.
W(10) ile W(15) aynı boyutta ama hiç ortak sayfası yok: süreç yeni bir yerelliğe geçmiştir. Δ çok küçükse yerellik kaçırılır, çok büyükse birkaç yerellik üst üste biner.
Çıktı Sorusu · Çerçeve Tahsisi
Soru 14: Eşit ve Orantılı Tahsis
Üç sürecin sanal boyutları sırasıyla 15, 45 ve 140 sayfa; dağıtılacak 64 çerçeve var. Eşit tahsis ve orantılı tahsis (aşağı yuvarlayarak) her sürece kaç çerçeve verir? Kaç çerçeve boşta kalır? Hangisi neden daha dengelidir?
Cevabı göster
| P1 (15) | P2 (45) | P3 (140) | boşta | |
|---|---|---|---|---|
| eşit ⌊64 / 3⌋ | 21 | 21 | 21 | 1 |
| orantılı | 4 | 14 | 44 | 2 |
Orantılı: aᵢ = sᵢ / S × m, S = 200 → 15 / 200 × 64 = 4,8 → 4; 45 / 200 × 64 = 14,4 → 14; 140 / 200 × 64 = 44,8 → 44.
Eşit tahsis 15 sayfalık P1’e ihtiyacından fazla, 140 sayfalık P3’e az çerçeve verir. Orantılı tahsis boyuta göre dağıtır; öncelik de hesaba katılabilir. Alt sınır olarak her süreç, bir komutun aynı anda dokunabileceği sayfa sayısı kadar çerçeve almalıdır.
Çoktan Seçmeli · Thrashing
Soru 15: İzleme Ekranında Ne Var?
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 doğru müdahale nedir?
D: Süreçlerin çalışma kümelerinin toplamı belleği aşmıştır (Σ |WSᵢ| > m): atılan sayfa hemen yeniden gerekir, süreçler zamanlarını sayfa beklemekle geçirir, CPU boşta kalır. Yeni iş eklemek her sürecin çerçeve payını daha da küçültür (C durumu kötüleştirir). Çare çoklu programlama derecesini düşürmek ya da RAM eklemektir; PFF bu kararı otomatik verir.
Çıktı Sorusu · Tasarım Konuları
Soru 16: Döngü Sırası ve Sayfa Hatası
Sayfa boyutu 4 KB, int 4 bayt. Dizi sayfa sınırından başlıyor ve başlangıçta bellekte değil; dizi için 32 çerçeve ayrılmış, yer değiştirme LRU (kod ve değişkenler ayrı çerçevelerde). doldur1 ve doldur2 kaçar sayfa hatası üretir?
int a[64][1024]; // 64 satır × 4 KB void doldur1(void) { for (int i = 0; i < 64; i++) for (int j = 0; j < 1024; j++) a[i][j] = 0; } void doldur2(void) { for (int j = 0; j < 1024; j++) for (int i = 0; i < 64; i++) a[i][j] = 0; }
Cevabı göster
Bir satır 1024 × 4 B = 4 KB = tam bir sayfa; dizi 64 sayfa, 32 çerçeveye sığmaz.
doldur1: satır satır gider; her satırın ilk öğesi bir hata, kalan 1023 öğe isabet → 64 hata.
doldur2: iç döngü her adımda başka satıra, yani başka sayfaya geçer. Bir sütunda 64 sayfaya dokunulur, LRU ancak son 32’sini tutar; sonraki sütun yine sayfa 0’dan başlar ve o çoktan atılmıştır. Her erişim hata: 64 × 1024 = 65 536 hata.
Aynı iş, 1024 kat fark. C diziyi satır öncelikli saklar; iç döngü son indisi gezmelidir.
Çoktan Seçmeli · Tasarım Konuları
Soru 17: TLB Erimi ve Büyük Sayfa
Bir veritabanının sıcak verisi 48 MB. İşlemcinin ikinci düzey TLB’sinde 1024 girdi var. 4 KB sayfalarla TLB erimi nedir ve sayfalar 2 MB’lık büyük sayfalara çevrilirse ne değişir?
A: TLB erimi = girdi sayısı × sayfa boyutu: 1024 × 4 KB = 4 MB, 1024 × 2 MB = 2 GB. 48 MB’lık sıcak veri 4 KB sayfalarla erime sığmaz, erişimlerin çoğu TLB ıskası ve sayfa tablosu yürüyüşü olur. Girdi sayısını artırmak pahalıdır; sayfayı büyütmek daha etkilidir. Bedeli iç parçalanma ve büyük bitişik bölge bulma gereğidir.
Klasik Soru · Tasarım Konuları
Soru 18: Ön Sayfalama Kârlı mı?
Askıdan dönen bir süreç için çalışma kümesindeki s = 40 sayfa önceden getiriliyor ve bunların α = 0,6’sı gerçekten kullanılıyor. Tek tek sayfa hatasıyla bir sayfayı getirmek 5 ms, 40 sayfayı tek seferde okumak 30 ms sürüyor.
- Ön sayfalamasız ve ön sayfalamalı G/Ç süresi nedir?
- α hangi değerin altına inerse ön sayfalama zarar ettirir?
- Süreyle ölçülmeyen bedeli nedir?
Cevabı göster
(a) Kullanılan sayfa α × s = 24. Ön sayfalamasız: 24 hata × 5 ms = 120 ms. Ön sayfalamalı: tek toplu okuma 30 ms; 90 ms kazanç.
(b) Kazanç 40α × 5 ms, bedel 30 ms: 200α > 30 → α > 0,15. Bu örnekte toplu okuma ucuz olduğu için eşik düşüktür; toplu okumanın maliyeti tek tek hatalara yaklaştıkça eşik yükselir.
(c) (1 − α) × s = 16 gereksiz sayfa çerçeve tutar ve başka sayfaları atmaya yol açabilir. Linux’ta readahead ve madvise(MADV_WILLNEED), Windows’ta Prefetcher aynı fikri kullanır.
Adım Adım Çalıştırma · Çekirdek Belleği
Soru 19: Buddy Sistemi
256 KB’lık bir bölgede buddy ayırıcı aşağıdaki istekleri sırayla işliyor. Her adımda bloklar ve boş listeler nasıl değişir? İç parçalanma toplamı ne olur?
Çekirdeğin elinde fiziksel olarak bitişik 256 KB var. Ofsetler KB; boşN, N KB’lık boş blokların ofset listesi. Her istek 2’nin kuvvetine yukarı yuvarlanır.
A = 40 KB → 64 KB’lık blok gerekir. Bölmeler: 256 → 2 × 128, 128 → 2 × 64; A, ofset 0’deki 64 KB’ı alır (iç parçalanma 24 KB).
B = 20 KB → 32 KB’lık blok gerekir. Bölmeler: 64 → 2 × 32; B, ofset 64’deki 32 KB’ı alır (iç parçalanma 12 KB).
C = 100 KB → 128 KB. Listede hazır 128 KB’lık boş blok var (ofset 128): bölme gerekmez.
D = 30 KB → 32 KB. Listede hazır 32 KB’lık boş blok var (ofset 96): bölme gerekmez.
B bırakılır. Kardeşi (ofset 64 ⊕ 32 = 96) kullanımda → birleşme yok; 32 KB’lık boş blok listeye girer.
D bırakılır. Kardeşi (ofset 96 ⊕ 32 = 64) boş → birleşir: 64 KB. Yeni bloğun kardeşi dolu, birleşme durur.
A bırakılır. Kardeşi (ofset 0 ⊕ 64 = 64) boş → birleşir: 128 KB. Yeni bloğun kardeşi dolu, birleşme durur.
A = ayir(40); // KB
B = ayir(20);
C = ayir(100);
D = ayir(30);
birak(B);
birak(D);
birak(A);Çoktan Seçmeli · Gerçek Sistemler
Soru 20: Boş Sayfalar Azalınca
Linux’ta bir bölgenin boş sayfa sayısı önce low, sonra min su seviyesinin altına iniyor. Sırasıyla ne olur?
C: low altında kswapd uyanır ve sayfaları arka planda geri kazanır (etkin / etkin olmayan listeler, MGLRU’da nesiller). min altında ayırma yapan süreç doğrudan geri kazanım yapar: gecikme artar. OOM öldürücü ancak geri kazanım hiç sonuç vermezse devreye girer; zswap ise takası kapatmaz, takasın önünde sıkıştırılmış bir önbellektir.