İşletim Sistemleri Soru ve Cevapları

2023-2024 Final Sınavı

Soru 1: Bilgisayarda birçok süreç (process) aynı anda çalışıyor sanırız. Fiziksel olarak sadece 1 adet işlemci bulunmasına rağmen birden fazla sürecin aynı anda çalışıyor görünmesi nasıl sağlanır?

Cevap:

Tek işlemcili bir sistemde birden fazla sürecin aynı anda çalışıyor gibi görünmesi, işletim sisteminin çoklu görev (multitasking) ve bağlam anahtarlama (context switching) mekanizmaları sayesinde sağlanır. Bu süreç, CPU'nun süreçler arasında hızlı geçiş yapmasıyla mümkün olur ve kullanıcıya süreçlerin paralel çalıştığı izlenimi verir. Aşağıda bu mekanizma detaylı bir şekilde açıklanmıştır:

1. Çoklu Görev (Multitasking)

Çoklu görev, işletim sisteminin birden fazla süreci aynı anda yönetmesini sağlar. Tek işlemcili sistemlerde, CPU aynı anda yalnızca bir süreci çalıştırabilir. Ancak işletim sistemi, süreçlere kısa süreli CPU zaman dilimleri (time slices veya quantum) atayarak, hepsinin çalıştığı illüzyonunu yaratır. Bu, genellikle önleyici çoklu görev (preemptive multitasking) ile gerçekleştirilir:

  • Önleyici Çoklu Görev: İşletim sistemi, bir sürecin CPU'yu ne kadar süre kullanacağını belirler. Süreç, zaman dilimi dolduğunda veya daha yüksek öncelikli bir süreç hazır olduğunda kesilir.
  • Zaman Paylaşımı: CPU zamanı, süreçler arasında adil bir şekilde paylaştırılır (örneğin, Round Robin algoritması).

2. Bağlam Anahtarlama (Context Switching)

Bağlam anahtarlama, CPU'nun bir süreçten diğerine geçiş yapması için gereken işlemdir. İşletim sistemi, mevcut sürecin durumunu kaydeder ve yeni bir sürecin durumunu yükler:

  • Durum Kaydetme: Çalışan sürecin program sayacı (program counter), yazmaçlar (registers) ve yığın işaretçisi gibi bilgileri, Süreç Denetim Bloğu (PCB)'na kaydedilir.
  • Yeni Durum Yükleme: Bir sonraki sürecin PCB'sinden bilgiler alınır ve CPU yazmaçlarına yüklenir.
  • CPU Kontrolü: CPU, yeni sürecin kodunu yürütmeye başlar.

Bağlam anahtarlama, mikro veya nanosaniye mertebesinde gerçekleşir, bu nedenle kullanıcı geçişlerin farkına varmaz.

3. Çizelgeleme (Scheduling)

İşletim sistemi, hangi sürecin ne zaman çalışacağını belirlemek için çizelgeleme algoritmaları kullanır:

  • Round Robin: Süreçlere eşit zaman dilimleri atanır.
  • Öncelik Tabanlı: Yüksek öncelikli süreçler önce çalışır.
  • En Kısa İş Önce: Hızlı tamamlanacak süreçler önceliklendirilir.

4. Kesmeler (Interrupts)

Kesmeler, bağlam anahtarlamasını tetikler. Örneğin, bir zamanlayıcı kesmesi (timer interrupt), bir sürecin zaman diliminin dolduğunu bildirir ve başka bir sürece geçiş yapılır.

Örnek:

Bir sistemde üç süreç çalışıyor: metin editörü (P1), web tarayıcı (P2), müzik çalar (P3). İşletim sistemi:

  1. P1'e 10 ms verir, P1 bir belgeyi düzenler.
  2. Zamanlayıcı kesmesiyle P1 durdurulur, durumu kaydedilir.
  3. P2 çalıştırılır, bir web sayfası yükler (10 ms).
  4. P3 çalıştırılır, müzik çalar (10 ms).

Kullanıcı, tüm süreçlerin aynı anda çalıştığını düşünür, ancak CPU her seferinde bir süreci çalıştırır.

Analitik Perspektif:

Bağlam anahtarlamasının hızı ve çizelgelemenin etkinliği, çoklu görev illüzyonunu sağlar. Ancak, sık bağlam anahtarlamaları ek yük (overhead) yaratabilir. Performans, CPU zamanının süreçler arasında adil ve verimli paylaşılmasına bağlıdır.

Soru 2: Bilgisayarda çalışan süreçlere ihtiyaç duymaları halinde, gerçekte var olan fiziksel bellek miktarından daha fazla bellek alanı nasıl tahsis edilir?

Cevap:

Fiziksel bellek (RAM) miktarından daha fazla bellek tahsisi, sanal bellek (virtual memory) mekanizmasıyla sağlanır. Sanal bellek, süreçlere fiziksel bellekten bağımsız, geniş bir adres alanı sunar ve sabit diskteki takas alanı (swap space) ile desteklenir. Aşağıda bu süreç detaylı bir şekilde açıklanmıştır:

1. Sanal Bellek Kavramı

Sanal bellek, her sürece kendi sanal adres alanını tahsis eder. Bu adres alanı, fiziksel belleğin boyutundan bağımsızdır ve süreçlerin büyük bellek taleplerini karşılar:

  • Süreç İzolasyonu: Her süreç, diğer süreçlerin bellek alanına erişemez.
  • Esneklik: Süreçler, fiziksel bellekten daha fazla bellek talep edebilir.

2. Sayfalama (Paging)

Sanal bellek, genellikle sayfalama ile uygulanır:

  • Bellek, sabit boyutlu sayfalara (örneğin, 4 KB) bölünür.
  • Sayfa Tablosu: Sanal sayfa numaralarını fiziksel çerçeve numaralarına eşler.
  • Adres Çevirisi: Bellek Yönetim Birimi (MMU), sanal adresleri fiziksel adreslere çevirir.

3. Talebe Bağlı Sayfalama (Demand Paging)

Fiziksel bellek yetersizse, yalnızca o an ihtiyaç duyulan sayfalar belleğe yüklenir:

  • Eğer bir sayfa fiziksel bellekte yoksa, bir sayfa hatası oluşur.
  • İşletim sistemi, sayfayı takas alanından veya dosya sisteminden yükler.
  • Fiziksel bellek doluysa, bir sayfa (örneğin, LRU algoritmasıyla) takas alanına yazılır.

4. Takas Alanı (Swap Space)

Takas alanı, sabit diskte ayrılmış bir bölümdür ve fiziksel belleğin uzantısı gibi çalışır. Kullanılmayan sayfalar buraya taşınır, böylece fiziksel bellekten daha fazla bellek sağlanır.

5. Bellek Aşırı Taahhüdü (Overcommitment)

İşletim sistemi, süreçlere ihtiyaç duydukları anda fiziksel bellek tahsis eder. Örneğin, bir süreç 1 GB talep etse bile, sadece bir kısmını kullanıyorsa, kalan alan fiziksel bellekte tutulmaz.

Örnek:

4 GB RAM ve 8 GB takas alanı olan bir sistemde:

  • P1: 3 GB, P2: 2 GB, P3: 4 GB talep ediyor (toplam 9 GB).
  • İşletim sistemi, her sürece sanal adres alanı tahsis eder.
  • Aktif sayfalar RAM’de (örneğin, 2 GB), geri kalan takas alanında tutulur.
  • Sayfa hatalarıyla gerekli sayfalar yüklenir.

Analitik Perspektif:

Sanal bellek, fiziksel bellek sınırlarını aşar, ancak sayfa hataları performansı etkileyebilir (disk erişimi yavaş). TLB ve etkili sayfa değiştirme algoritmaları, performansı optimize eder. Yoğun takas alanı kullanımı (thrashing), sistem yavaşlamasına neden olabilir.

Soru 3: Kilitlenme (deadlock) nedir? Bir sistemde kilitlenmenin oluşması için gerekli dört koşul nelerdir? Her koşulu, gerçek dünyadan bir örnekle (örneğin, bir trafik senaryosu) açıklayınız.

Cevap:

Kilitlenme (deadlock), birden fazla sürecin, birbirlerinin serbest bırakmasını beklediği kaynaklar nedeniyle süresiz olarak bekleme durumunda kalmasıdır. Hiçbir süreç ilerleyemez ve sistem tıkanır. Kilitlenme, paylaşılan kaynakların (örneğin, bellek, kilitler) kullanıldığı sistemlerde yaygındır.

Kilitlenmenin Dört Koşulu (Coffman Koşulları):

Kilitlenme, aşağıdaki dört koşulun aynı anda sağlanmasıyla oluşur:

  1. Karşılıklı Dışlama (Mutual Exclusion): En az bir kaynak, aynı anda yalnızca bir süreç tarafından kullanılabilir.
  2. Tut ve Bekle (Hold and Wait): Bir süreç, bir kaynağı tutarken başka bir kaynağı bekler.
  3. Önleme Yok (No Preemption): Kaynaklar, süreç gönüllü olarak bırakmadıkça zorla alınamaz.
  4. Dairesel Bekleme (Circular Wait): Süreçler, bir döngü oluşturacak şekilde birbirlerinin kaynaklarını bekler.

1. Karşılıklı Dışlama

Tanım: Kaynak, yalnızca bir süreç tarafından kullanılabilir; diğer süreçler bekler.

Trafik Örneği: Bir dar köprü, aynı anda yalnızca bir yönden araç geçişine izin verir. Bir kamyon köprüyü kullanıyorsa, karşı yönden gelen araçlar bekler.

Açıklama: Köprü (kaynak), karşılıklı dışlama özelliğine sahiptir. Eğer kaynak paylaşılamazsa, kilitlenme riski artar, çünkü süreçler kaynak için sırayla bekler.

2. Tut ve Bekle

Tanım: Bir süreç, bir kaynağı tutarken başka bir kaynağı talep eder.

Trafik Örneği: Bir kavşakta, araç A doğu-batı şeridini tutuyor ve kuzey-güney şeridini bekliyor. Araç B, kuzey-güney şeridini tutuyor ve doğu-batı şeridini bekliyor.

Açıklama: Her araç, bir şeridi tutarak diğerini beklerse, ilerleyemezler, bu da kilitlenmeye yol açar.

3. Önleme Yok

Tanım: Kaynaklar, süreç tarafından gönüllü olarak bırakılmadıkça alınamaz.

Trafik Örneği: Bir kavşakta, bir otobüs dar bir yolu kapatarak ilerliyor ve taksinin geçmesini engelliyor. Trafik polisi, otobüsü zorla geri çekemez.

Açıklama: Otobüs yolu bırakmazsa, taksi bekler ve kilitlenme oluşabilir.

4. Dairesel Bekleme

Tanım: Süreçler, dairesel bir zincir oluşturacak şekilde birbirlerinin kaynaklarını bekler.

Trafik Örneği: Dört yönlü bir kavşakta:

  • Araç A, batı şeridini tutuyor, kuzey-güney şeridini bekliyor.
  • Araç B, güney şeridini tutuyor, batı-doğu şeridini bekliyor.
  • Araç C, doğu şeridini tutuyor, güney-kuzey şeridini bekliyor.
  • Araç D, kuzey şeridini tutuyor, doğu-batı şeridini bekliyor.

Açıklama: Her araç, bir sonraki aracın şeridini bekler, bu da dairesel beklemeye ve kilitlenmeye neden olur.

Analitik Perspektif:

Dört koşulun tamamı sağlanmadıkça kilitlenme oluşmaz. İşletim sistemleri, bir koşulu ortadan kaldırarak kilitlenmeyi önler. Örneğin, dairesel beklemeyi önlemek için kaynak sıralaması kullanılabilir. Ancak, her strateji performans ve esneklik açısından trade-off’lar içerir.

Soru 4: Kilitlenme koşullarından her birini önlemek için uygulanabilecek bir strateji öneriniz.

Cevap:

Kilitlenmeyi önlemek için, dört koşuldan (karşılıklı dışlama, tut ve bekle, önleme yok, dairesel bekleme) herhangi birini ortadan kaldıran bir strateji uygulanabilir. Aşağıda her koşulu önlemek için bir strateji önerilmiştir:

1. Karşılıklı Dışlamayı Önleme: Kaynakları Paylaşımlı Yapma

Strateji: Kaynakların eşzamanlı erişime izin verecek şekilde tasarlanması.

Açıklama: Kaynaklar, birden fazla sürecin aynı anda kullanabileceği şekilde yapılandırılır. Örneğin, bir yazıcı için bir spooler sistemi, yazdırma işlerini sıraya koyar ve doğrudan erişimi engeller.

Avantajlar: Bekleme süresi azalır, kilitlenme riski sıfıra iner.

Dezavantajlar: Tüm kaynaklar paylaşılamaz (örneğin, veritabanı yazma işlemleri). Veri tutarlılığı için senkronizasyon gerekir.

2. Tut ve Beklemeyi Önleme: Tüm Kaynakları Baştan Tahsis Etme

Strateji: Süreçlerin tüm kaynakları yürütme öncesi alması zorunlu kılınır.

Açıklama: Bir süreç, ihtiyaç duyacağı tüm kaynakları baştan talep eder. Eğer kaynaklar mevcut değilse, süreç hiç başlatılmaz.

Avantajlar: Tut ve bekle durumu ortadan kalkar.

Dezavantajlar: Kaynak israfı, süreçlerin kaynak ihtiyaçlarını önceden bilme zorunluluğu, uzun bekleme süreleri.

3. Önleme Yok Koşulunu Önleme: Kaynakları Zorla Geri Alma

Strateji: Kaynakların işletim sistemi tarafından zorla alınması (preemption).

Açıklama: Bir süreç, ihtiyaç duyduğu kaynağı alamıyorsa, tuttuğu kaynaklar geri alınır ve başka süreçlere tahsis edilir.

Avantajlar: Süreçlerin kaynakları süresiz tutması engellenir.

Dezavantajlar: Süreç durumu bozulabilir, fiziksel cihazlar için zor uygulanır, ek hesaplama yükü.

4. Dairesel Beklemeyi Önleme: Sıralı Kaynak Erişimi

Strateji: Kaynaklara bir sıralama atanır ve süreçler kaynakları bu sırayla talep eder.

Açıklama: Örneğin, yazıcı (R1), disk (R2), tarayıcı (R3) sıralanır. Süreçler, yalnızca bu sırayla talep edebilir.

Avantajlar: Dairesel bekleme imkansız hale gelir, uygulama basit.

Dezavantajlar: Süreçlerin doğal akışını kısıtlar, ek bekleme süreleri yaratabilir.

Analitik Perspektif:

Dairesel beklemeyi önleme, en yaygın ve pratik stratejidir. Karşılıklı dışlama, kaynak doğası gereği genellikle kaldırılamaz. Tut ve bekle, kaynak israfına yol açar; önleme, fiziksel cihazlar için zordur. Sistem tasarımında, performans ve esneklik arasındaki denge dikkate alınmalıdır.

Soru 5: İşletim sisteminde bellek yönetimi (memory management) bileşenine neden ihtiyaç duyulur?

Cevap:

Bellek yönetimi, işletim sisteminin fiziksel ve sanal belleği süreçler arasında verimli, güvenli ve etkili bir şekilde tahsis eden bileşenidir. Çoklu süreç sistemlerinde, sınırlı bellek kaynaklarının paylaşılması gerektiğinden, bellek yönetimi vazgeçilmezdir. Aşağıda ihtiyaç nedenleri detaylı bir şekilde açıklanmıştır:

1. Bellek Tahsisini Yönetme

Süreçler, kod, veri ve yığın için bellek gerektirir. Bellek yönetimi, fiziksel belleği süreçlere adil bir şekilde tahsis eder.

Örnek: 8 GB RAM’de üç süreç (tarayıcı, editör, oyun) 10 GB talep ederse, bellek yönetimi sanal bellekle bu talebi karşılar.

2. Süreç İzolasyonu ve Güvenlik

Her süreç, kendi bellek alanında çalışmalı ve diğer süreçlerin verilerine erişmemelidir. Bellek yönetimi, sanal adres alanları ve sayfa tablolarıyla izolasyon sağlar.

Örnek: Bir tarayıcı, bankacılık uygulamasının verilerine erişemez.

3. Bellek Parçalanmasını Azaltma

Dahili (tahsis edilen bloğun kullanılmayan kısmı) ve harici (dağınık boş alanlar) parçalanma, belleğin verimsiz kullanılmasına yol açar. Bellek yönetimi, sayfalama veya birleştirme ile bu sorunları azaltır.

4. Sanal Bellek Desteği

Fiziksel bellek yetersizse, sanal bellek, takas alanıyla süreçlere daha büyük adres alanları sunar.

Örnek: 4 GB RAM’de 8 GB talep eden bir süreç, takas alanıyla çalışabilir.

5. Bellek Paylaşımı ve Verimlilik

Süreçler, ortak verilere (örneğin, kütüphaneler) erişebilir. Bellek yönetimi, kopya üzerine yazma (copy-on-write) ile paylaşımı optimize eder.

6. Performans Optimizasyonu

TLB, önbellekleme ve etkili tahsis algoritmaları (örneğin, best-fit), bellek erişimini hızlandırır.

7. Hata Yönetimi

Geçersiz bellek erişimleri (örneğin, segmentasyon hatası), bellek yönetimi tarafından tespit edilir ve sistem çökmesi önlenir.

Analitik Perspektif:

Bellek yönetimi, performans, güvenlik ve kaynak verimliliği arasında denge kurar. Sayfalama ve sanal bellek, modern sistemlerde temel araçlardır. Yetersiz bellek yönetimi, sistem kaosuna, güvenlik açıklarına ve düşük performansa yol açar.

Soru 6: Bellek yönetiminde mantıksal adres ve fiziksel adres kavramlarını açıklayınız.

Cevap:

Bellek yönetiminde mantıksal adres (logical address) ve fiziksel adres (physical address), sanal bellek sisteminin temel kavramlarıdır. Süreçlerin bellekle etkileşimini sağlarlar.

1. Mantıksal Adres

Tanım: Sürecin kendi sanal adres alanında kullandığı adrestir. Süreç, fiziksel belleğin detaylarını bilmez; yalnızca mantıksal adreslerle çalışır.

  • Özellikler:
    • Sürece özgüdür; her süreç kendi bağımsız adres alanına sahiptir.
    • Sanal bellekle ilişkilidir, fiziksel bellek boyutundan bağımsızdır.
    • Örneğin, 0x1000 adresi, farklı süreçlerde farklı fiziksel konumlara işaret edebilir.
  • Örnek: Bir C programında `&variable`, mantıksal bir adrestir.

2. Fiziksel Adres

Tanım: Belleğin (RAM) gerçek, donanımsal konumunu temsil eden adrestir.

  • Özellikler:
    • Sistem genelinde benzersizdir; doğrudan RAM’e işaret eder.
    • Fiziksel bellek boyutuyla sınırlıdır (örneğin, 8 GB RAM).
    • CPU ve MMU tarafından kullanılır.
  • Örnek: Fiziksel adres 0xA000, RAM’deki bir bayta işaret eder.

Adres Çevirisi:

İşletim sistemi, mantıksal adresleri fiziksel adreslere çevirir:

  • Sayfalama: Mantıksal adres, sayfa numarası ve ofset olarak bölünür. Sayfa tablosu, sayfa numarasını fiziksel çerçeveye eşler.
  • MMU: Çeviriyi gerçekleştirir, TLB ile hızlandırılır.
  • Sayfa Hatası: Eğer sayfa fiziksel bellekte yoksa, takas alanından yüklenir.

Örnek:

İki süreç (P1, P2) ve 8 GB RAM:

  • P1, mantıksal adres 0x1000’e erişir → Fiziksel adres 0xA000.
  • P2, mantıksal adres 0x1000’e erişir → Fiziksel adres 0xB000.

Sayfa tablosu, her sürecin adresini farklı fiziksel konumlara eşler.

Analitik Perspektif:

Mantıksal adresler, süreç izolasyonu ve esneklik sağlar. Fiziksel adresler, donanımla doğrudan iletişim kurar. Adres çevirisi, sayfa hataları ve TLB isabet oranı, sistem performansını etkiler.

Soru 7: Bellekte boş alanlar hangi veri yapıları ile tutulabilir? Açıklayınız.

Cevap:

Bellekte boş alanların izlenmesi için kullanılan veri yapıları, belleğin verimli tahsisini sağlar. Başlıca veri yapıları şunlardır:

1. Bağlı Liste (Linked List)

Açıklama: Boş bellek blokları, bağlı listede düğümler olarak tutulur. Her düğüm, başlangıç adresini, boyutunu ve bir sonraki bloğa işaretçiyi içerir.

  • Nasıl Çalışır: Liste taranır, uygun blok tahsis edilir, blok bölünebilir veya birleştirilir.
  • Örnek: Boş bloklar: [0x1000, 200 KB], [0x3000, 100 KB]. 150 KB talep edilirse, 0x1000 bloğu bölünür (150 KB tahsis, 50 KB boş).
  • Avantajlar: Basit, esnek, birleştirme kolay.
  • Dezavantajlar: Yavaş tarama (O(n)), harici parçalanma, ek bellek ihtiyacı.
  • Kullanım: Heap yönetimi (malloc).

2. Bit Haritası (Bitmap)

Açıklama: Bellek, sabit boyutlu birimlere bölünür; her birim bir bit ile temsil edilir (`0`: boş, `1`: tahsisli).

  • Nasıl Çalışır: Ardışık boş bitler aranır, tahsis edilir, bitler güncellenir.
  • Örnek: 8 birim, bit haritası `00110100`. 2 birim talep edilirse, `11110100` olur.
  • Avantajlar: Kompakt, hızlı bit işlemleri, harici parçalanma tespiti kolay.
  • Dezavantajlar: Ardışık blok bulma zor, sabit boyutlu birimlere uygun.
  • Kullanım: Sayfalama, fiziksel sayfa yönetimi.

3. Ağaç Yapıları (Tree Structures)

Açıklama: Boş bloklar, ikili ağaç veya kırmızı-siyah ağaç gibi hiyerarşik yapılarla tutulur.

  • Nasıl Çalışır: Uygun blok aranır, tahsis edilir, ağaç güncellenir.
  • Örnek: [0x1000, 200 KB] bloğu, 150 KB tahsis için bölünür, kalan 50 KB ağaca eklenir.
  • Avantajlar: Hızlı arama (O(log n)), esnek.
  • Dezavantajlar: Karmaşık yönetim, ek bellek ihtiyacı.
  • Kullanım: Sanal bellek yönetimi (Linux VMA).

4. Kumpas Sistemi (Buddy System)

Açıklama: Bellek, ikinin katları boyutunda bloklara bölünür; her boyut için bir liste tutulur.

  • Nasıl Çalışır: Uygun blok tahsis edilir, yoksa büyük blok bölünür. Serbest bırakıldığında kumpasla birleştirilir.
  • Örnek: 100 KB talep için 128 KB tahsis edilir, 256 KB blok bölünür.
  • Avantajlar: Hızlı birleştirme, düzenli bloklar.
  • Dezavantajlar: Dahili parçalanma, sınırlı esneklik.
  • Kullanım: Linux fiziksel sayfa tahsisi.

Analitik Perspektif:

Bağlı liste esnek, ancak yavaştır. Bit haritası kompakt, ancak sabit boyutlara uygundur. Ağaçlar hızlı ve esnek, kumpas sistemi düzenli ancak dahili parçalanma yaratır. Modern sistemler, bu yapıların kombinasyonunu kullanır.

Soru 8: Bellek yönetiminde dahili ve harici parçalanma arasındaki farkı açıklayınız.

Cevap:

Dahili parçalanma (internal fragmentation) ve harici parçalanma (external fragmentation), bellek tahsisinde ortaya çıkan ve belleğin verimsiz kullanılmasına yol açan sorunlardır. Aşağıda farkları açıklanmıştır:

1. Dahili Parçalanma

Tanım: Bir sürece tahsis edilen bellek bloğunun, ihtiyaç duyulandan büyük olması ve kullanılmayan kısmın boşa gitmesidir.

  • Nasıl Oluşur: Sabit boyutlu tahsis (örneğin, sayfalama) sırasında, süreç bloğun tamamını kullanamaz.
  • Örnek: 4 KB’lik bir sayfaya 3 KB’lik bir süreç tahsis edilirse, 1 KB boşa gider.
  • Etkiler: Bellek israfı, kullanılabilir alanı azaltır.
  • Çözüm: Küçük sayfa boyutları, dinamik tahsis.
  • Görüldüğü Yer: Sayfalama, sabit bölmeli tahsis.

2. Harici Parçalanma

Tanım: Toplamda yeterli boş bellek olmasına rağmen, bu alanların dağınık ve ardışık olmaması nedeniyle tahsis edilememesidir.

  • Nasıl Oluşur: Değişken boyutlu tahsislerde, süreçlerin tahsis ve serbest bırakılması boş alanları parçalar.
  • Örnek: 900 KB boş bellek (200 KB, 300 KB, 400 KB), ancak 600 KB’lik ardışık blok yok.
  • Etkiler: Süreç tahsisini engeller, performansı düşürür.
  • Çözüm: Birleştirme, sayfalama, kumpas sistemi.
  • Görüldüğü Yer: Değişken bölmeli tahsis, heap yönetimi.

Farklar:

Özellik Dahili Parçalanma Harici Parçalanma
Yer Tahsis edilmiş blok içinde Boş bloklar arasında
Etkiler Bellek israfı Tahsis engeli
Çözüm Küçük sayfalar, dinamik tahsis Birleştirme, sayfalama

Analitik Perspektif:

Sayfalama, harici parçalanmayı çözer, ancak dahili parçalanma yaratır. Değişken tahsis, dahili parçalanmayı önler, ancak harici parçalanmaya yol açar. Modern sistemler, sayfalama ve kumpas sistemiyle bu sorunları dengeler.

Soru 9: Fiziksel bellekte olmayan bir sayfaya erişilmeye çalışıldığında neler olur? Adım adım açıklayınız.

Cevap:

Fiziksel bellekte olmayan bir sayfaya erişildiğinde, bir sayfa hatası (page fault) oluşur ve işletim sistemi, talebe bağlı sayfalama ile sayfayı yükler. Süreç adım adım şöyledir:

1. Mantıksal Adrese Erişim

Süreç, bir mantıksal adrese (örneğin, 0x1234) erişmeye çalışır. Bu adres, sanal adres alanındaki bir sayfa numarası ve ofset içerir.

2. MMU Adres Çevirisi

Bellek Yönetim Birimi (MMU), sayfa tablosuna bakar. Eğer sayfanın varlık biti `0` ise, sayfa fiziksel bellekte değildir.

3. Sayfa Hatası Kesmesi

MMU, bir sayfa hatası kesmesi üretir. CPU, mevcut talimatı durdurur ve kontrol işletim sistemine geçer.

4. Hata İşleme

İşletim sistemi, hatanın türünü analiz eder:

  • Geçerli Hata: Sayfa, takas alanında veya dosyada varsa yüklenir.
  • Geçersiz Hata: Adres geçersizse (örneğin, null işaretçi), segmentasyon hatası üretilir.

5. Yer Açma

Fiziksel bellek doluysa, bir sayfa (örneğin, LRU ile) çıkarılır:

  • Değiştirilmişse, takas alanına yazılır.
  • Değiştirilmemişse, atılır.

6. Sayfanın Yüklenmesi

Sayfa, diskten (takas alanı veya dosya) fiziksel belleğe yüklenir. Sayfa tablosu güncellenir (varlık biti `1`).

7. Sürecin Yeniden Başlatılması

Süreç durumu geri yüklenir, talimat tekrar yürütülür ve erişim tamamlanır.

Örnek:

Süreç, 0x1234’e (sayfa 1, ofset 0x234) erişir:

  1. Sayfa 1 fiziksel bellekte değil, sayfa hatası oluşur.
  2. Sayfa, takas alanında bulunur.
  3. LRU ile bir sayfa çıkarılır, çerçeve 5 boşalır.
  4. Sayfa 1, çerçeve 5’e yüklenir, sayfa tablosu güncellenir.
  5. Süreç devam eder, 0x1234 erişimi tamamlanır.

Analitik Perspektif:

Sayfa hataları, disk I/O nedeniyle yavaştır (ms vs. ns). Düşük sayfa hatası oranı, TLB ve etkili algoritmalar performans için kritik. Yoğun sayfa değiştirme (thrashing), sistemi yavaşlatır.

Soru 10: Sayfa yer değiştirme (page replacement) algoritmalarından 3 tanesini açıklayınız.

Cevap:

Sayfa yer değiştirme algoritmaları, fiziksel bellek dolu olduğunda hangi sayfanın çıkarılacağını belirler. Üç yaygın algoritma şunlardır:

1. İlk Giren İlk Çıkar (FIFO)

Açıklama: En uzun süredir bellekte olan sayfa çıkarılır. Bellek, bir kuyruk gibi yönetilir.

  • Nasıl Çalışır: Yeni sayfa kuyruğun sonuna eklenir, yer açmak için kuyruğun başındaki sayfa çıkarılır.
  • Örnek: 3 çerçeve, referans dizisi `1, 2, 3, 4, 1, 2` → 6 sayfa hatası.
  • Avantajlar: Basit, düşük maliyet (O(1)).
  • Dezavantajlar: Düşük performans, Belady anormalliği.
  • Kullanım: Basit sistemler.

2. En Az Kullanılan (LRU)

Açıklama: En uzun süredir kullanılmayan sayfa çıkarılır. Lokalite ilkesine dayanır.

  • Nasıl Çalışır: Sayfaların son kullanım zamanı takip edilir, en eski sayfa çıkarılır.
  • Örnek: 3 çerçeve, referans dizisi `1, 2, 3, 4, 1, 2` → 5 sayfa hatası.
  • Avantajlar: Yüksek performans, lokaliteye uygun.
  • Dezavantajlar: Karmaşık, zaman damgası takibi gerekir.
  • Kullanım: Modern sistemler, önbellek yönetimi.

3. Saat Algoritması (Clock Algorithm)

Açıklama: LRU’nun basit bir yaklaşık versiyonudur. Sayfalar dairesel bir listede tutulur, referans biti kullanılır.

  • Nasıl Çalışır: Referans biti `1` olan sayfalara ikinci şans verilir, `0` olanlar çıkarılır.
  • Örnek: 3 çerçeve, referans dizisi `1, 2, 3, 4, 1, 2` → ~5 sayfa hatası.
  • Avantajlar: Basit, LRU’ya yakın performans, donanım desteğiyle uygulanabilir.
  • Dezavantajlar: LRU kadar hassas değil.
  • Kullanım: Linux, Windows.

Analitik Perspektif:

LRU ve saat algoritması, lokaliteye uygunluklarıyla yüksek performans sunar. FIFO basit, ancak etkisizdir. Algoritma seçimi, sistem ihtiyaçlarına ve donanım desteğine bağlıdır. Sayfa hatası oranı, performansı belirler.