İşletim Sistemleri Soru ve Cevapları

2023-2024 Vize Sınavı

Soru 1: İşletim sisteminin temel fonksiyonlarını birer cümle ile listeleyiniz.

Cevabı Göster/Gizle

Cevap:

İşletim sisteminin temel fonksiyonları, sistem kaynaklarını yönetmek, kullanıcı ile donanım arasında arayüz sağlamak ve uygulama yazılımlarının çalışmasını desteklemektir. Aşağıda temel fonksiyonlar detaylı bir şekilde birer cümle ile listelenmiştir:

  • Süreç Yönetimi: İşletim sistemi, süreçlerin oluşturulmasını, yürütülmesini, çizelgelenmesini ve sonlandırılmasını koordine ederek CPU’nun verimli kullanımını sağlar.
  • Bellek Yönetimi: Fiziksel ve sanal belleği süreçler arasında güvenli, adil ve verimli bir şekilde tahsis ederek bellek kaynaklarının optimal kullanımını garantiler.
  • Dosya Sistemi Yönetimi: Verilerin saklanması, düzenlenmesi ve erişimi için dosya sistemlerini organize eder, diskteki verilere kolay erişim sağlar.
  • Giriş/Çıkış Yönetimi: Klavye, fare, disk gibi donanım cihazlarıyla iletişim kurarak giriş/çıkış işlemlerini koordine eder ve cihazlar arası veri akışını yönetir.
  • Güvenlik ve Erişim Kontrolü: Sistem kaynaklarına yalnızca yetkili kullanıcıların ve süreçlerin erişmesini sağlayarak veri güvenliğini ve sistem bütünlüğünü korur.
  • Kullanıcı Arayüzü: Komut satırı veya grafik arayüz aracılığıyla kullanıcıların sistemle kolayca etkileşim kurmasını sağlar, böylece donanım karmaşıklığını soyutlar.

Örnek: Bir işletim sistemi, bir metin editörünün (süreç) çalışmasını başlatır, belleği tahsis eder, kullanıcının yazdığı verileri diske kaydeder ve yalnızca yetkili kullanıcıların bu dosyaya erişmesine izin verir.

Analitik Perspektif: İşletim sistemi, donanım ve yazılım arasında bir köprü görevi görerek kaynak kullanımını optimize eder, sistem performansını artırır ve kullanıcı deneyimini basitleştirir; ancak her fonksiyonun etkinliği, sistem tasarımı ve donanım kapasitesine bağlıdır.

Soru 2: İşlemci ile ana bellek arasında veri erişimini hızlandırmak için neler yapılabilir?

Cevabı Göster/Gizle

Cevap:

İşlemci ile ana bellek arasındaki veri erişimini hızlandırmak için çeşitli teknikler kullanılır; bu teknikler, bellek erişim süresini azaltarak sistem performansını artırır ve CPU’nun verimli çalışmasını sağlar:

  1. Önbellek (Cache) Kullanımı:
    • Hızlı SRAM tabanlı önbellek, sık kullanılan verileri ve talimatları CPU’ya yakın bir yerde depolar, böylece ana belleğe (RAM) erişim ihtiyacını azaltır.
    • Önbellek hiyerarşisi (L1, L2, L3), erişim sürelerini 2-10 ns’ye düşürürken, RAM erişimi 50-100 ns sürebilir.
    • Detay: Önbellek, temporal (aynı veriye tekrar erişim) ve spatial (yakın verilere erişim) lokalite ilkelerine dayanır.
    • Örnek: Bir programın döngü değişkenleri L1 önbelleğinde saklanır, böylece CPU tekrar tekrar RAM’e erişmez.
  2. Çeviri Önbelleği (TLB):
    • Translation Lookaside Buffer (TLB), sanal adresleri fiziksel adreslere çevirmek için sayfa tablosu girişlerini önbelleğe alır, böylece adres çevirisi süresini azaltır.
    • TLB isabeti, adres çevirisini nanosaniyeler içinde tamamlar; isabetsizlik durumunda sayfa tablosuna erişim gerekir.
    • Örnek: Bir süreç, sanal adres 0x1000’e eriştiğinde, TLB bu adresi fiziksel adrese hızlıca çevirir.
  3. Bellek Hiyerarşisi:
    • CPU yazmaçları (en hızlı, ~1 ns), önbellek, RAM ve disk arasında hiyerarşik bir yapı, veri erişim hızını optimize eder.
    • Hiyerarşi, sık kullanılan verilerin CPU’ya yakın tutulmasını sağlar.
    • Örnek: Bir veritabanı sorgusu önce önbellekte aranır, bulunamazsa RAM’den, en kötü ihtimalle diskten alınır.
  4. Önceden Getirme (Prefetching):
    • CPU’nun gelecekte ihtiyaç duyacağı veriler, tahmine dayalı olarak önbelleğe önceden yüklenir.
    • Modern CPU’lar, döngü veya veri erişim modellerini analiz ederek prefetching yapar.
    • Örnek: Bir döngüde dizinin ardışık elemanları önbelleğe önceden getirilir, erişim süresi azalır.
  5. Paralel Bellek Erişimi:
    • Çoklu bellek bankaları veya interleaved bellek, aynı anda birden fazla veri erişimine izin vererek bant genişliğini artırır.
    • Örnek: Çift kanallı RAM, aynı anda iki veri bloğuna erişim sağlar, bant genişliğini iki katına çıkarır.

Örnek: Bir oyun, grafik verilerini L1 önbelleğinde tutar, TLB sanal adresleri çevirir ve önceden getirme, sonraki kareleri önbelleğe yükler, böylece oyun akıcı çalışır.

Analitik Perspektif: Önbellek ve TLB, lokalite ilkelerine dayanarak erişim hızını artırır; ancak önbellek isabetsizliği, yanlış önceden getirme veya sınırlı bant genişliği performansı düşürebilir. Modern sistemler, bu teknikleri birleştirerek en iyi performansı hedefler.

Soru 3: Kabuğun (shell) temel işlevi nedir?

Cevabı Göster/Gizle

Cevap:

Kabuk (shell), kullanıcı ile işletim sistemi arasında bir arayüz sağlayarak komutların girilmesini, yorumlanmasını ve yürütülmesini sağlar, böylece kullanıcıların sistemle etkileşimini kolaylaştırır.

  • Komut Yorumlama: Kullanıcının girdiği komutları (örneğin, ls, cd) algılar, işletim sistemine uygun sistem çağrılarına çevirir ve yürütür.
  • Betik Desteği: Komut dosyaları (shell script) aracılığıyla tekrarlayan veya karmaşık görevleri otomatikleştirir, örneğin, dosya işleme veya sistem bakımı.
  • Kullanıcı Arayüzü: Komut satırı (CLI) veya grafik arayüz (GUI) ile kullanıcıların sistem kaynaklarına erişmesini sağlar, donanım karmaşıklığını soyutlar.
  • Özellikler:
    • Boru (Pipe): Bir komutun çıktısını başka bir komuta giriş olarak yönlendirir (örneğin, ls | grep txt).
    • Arka Plan Yürütme: Komutların arka planda çalışmasını sağlar (örneğin, command &).
    • Ortam Değişkenleri: Sistem ayarlarını yönetir (örneğin, PATH).
  • Örnek: Linux’ta bash kabuğu, grep "error" log.txt komutuyla log dosyalarında hata arar veya bir betikle sistem güncellemelerini otomatikleştirir.

Örnek: Kullanıcı, bash kabuğunda find / -name "*.txt" | xargs rm komutunu çalıştırarak tüm metin dosyalarını siler; kabuk, komutları sırayla işler ve yönlendirme yapar.

Analitik Perspektif: Kabuk, kullanıcı dostu bir arayüz sunarak sistemin karmaşıklığını soyutlar ve otomasyonu kolaylaştırır; ancak yanlış veya kötü niyetli komutlar sistem hatalarına veya güvenlik açıklarına yol açabilir.

Soru 4: Sistem çağrısının (system call) temel amacı nedir?

Cevabı Göster/Gizle

Cevap:

Sistem çağrısı, kullanıcı seviyesindeki bir programın işletim sisteminden donanım veya sistem kaynaklarına erişim gibi hizmetler talep etmesini sağlayan bir mekanizmadır.

  • Amaç: Kullanıcı süreçlerinin, dosya okuma/yazma, bellek tahsisi, süreç oluşturma gibi işlemleri güvenli ve kontrollü bir şekilde gerçekleştirmesini sağlamak.
  • Nasıl Çalışır:
    • Kullanıcı programı, bir sistem çağrısı (örneğin, open(), fork()) yapar.
    • CPU, kullanıcı modundan çekirdek moduna geçer, bu geçiş bir kesme (interrupt) ile tetiklenir.
    • İşletim sistemi, isteği işler ve sonucu kullanıcı programına döndürür.
  • Örnekler:
    • write(): Bir dosyaya veri yazmak.
    • fork(): Yeni bir süreç oluşturmak.
    • getpid(): Süreç kimliğini almak.
  • Güvenlik: Sistem çağrıları, donanıma doğrudan erişimi engelleyerek yalnızca işletim sisteminin yetkilendirdiği işlemlere izin verir.
  • Örnek: Bir metin editörü, write() sistem çağrısıyla kullanıcının yazdığı verileri diske kaydeder.

Örnek: Bir C programı, open("file.txt", O_RDONLY) çağrısı yaparak bir dosyayı okumak için işletim sisteminden izin alır; işletim sistemi, dosya erişim yetkilerini kontrol eder ve dosyayı açar.

Analitik Perspektif: Sistem çağrıları, güvenlik ve soyutlama sağlar, ancak sık çağrılar bağlam değiştirme maliyeti nedeniyle performansı etkileyebilir; bu nedenle, modern sistemler sistem çağrılarını optimize etmeye çalışır.

Soru 5: İşletim sistemleri bağlamında soyutlama nedir?

Cevabı Göster/Gizle

Cevap:

İşletim sistemlerinde soyutlama, karmaşık donanım ve sistem kaynaklarını kullanıcılar ve uygulamalar için daha basit, anlaşılır ve yönetilebilir bir arayüz olarak sunma işlemidir, böylece düşük seviyeli detaylar gizlenir.

  • Amaç: Kullanıcıların ve programların, donanımın karmaşıklığını bilmeden sistemle etkileşim kurmasını sağlamak, kullanım kolaylığı ve taşınabilirlik sunmak.
  • Örnekler:
    • Sanal Bellek: Süreçlere fiziksel belleğin fiziksel konumlarını ve sınırlamalarını gizleyerek bağımsız, geniş bir adres alanı sunar.
    • Dosya Sistemi: Diskteki fiziksel sektörleri ve veri bloklarını, dosya ve dizin gibi soyut kavramlarla temsil eder, kullanıcıya basit bir erişim sağlar.
    • Süreç Soyutlaması: CPU, bellek ve diğer kaynaklar, her süreç için bağımsız bir yürütme ortamı gibi görünür, süreçler arası çakışmalar önlenir.
    • Aygıt Sürücüleri: Karmaşık donanım cihazlarını (örneğin, yazıcılar) standart arayüzlerle soyutlar.
  • Örnek: Bir program, fopen() ile bir dosyayı açar; işletim sistemi, diskin fiziksel sektörlerini yönetir ve program bu detayları bilmez.

Örnek: Bir kullanıcı, bir USB sürücüsüne dosya kaydeder; işletim sistemi, dosya sistemini ve USB protokolünü soyutlayarak kullanıcıya yalnızca bir “kaydet” arayüzü sunar.

Analitik Perspektif: Soyutlama, kullanım kolaylığı, taşınabilirlik ve güvenlik sağlar, ancak ek soyutlama katmanları performans ek yükü getirebilir; bu nedenle, soyutlama seviyesi sistem tasarımıyla dengelenmelidir.

Soru 6: Eşzamanlılık nedir?

Cevabı Göster/Gizle

Cevap:

Eşzamanlılık (concurrency), birden fazla sürecin veya iş parçacığının aynı anda yürütülüyormuş gibi görünmesini sağlayan işletim sistemi özelliğidir, böylece sistem kaynaklarının verimli kullanımı sağlanır.

  • Açıklama:
    • Tek işlemcili sistemlerde, eşzamanlılık bağlam anahtarlama ile sağlanır; CPU, süreçler arasında hızlı geçiş yaparak paralel çalışma illüzyonu yaratır.
    • Çok işlemcili sistemlerde, gerçek paralel yürütme mümkündür; her çekirdek farklı bir süreci veya iş parçacığını çalıştırabilir.
  • Mekanizmalar:
    • Çizelgeleme (Scheduling): CPU zamanını süreçler arasında adil bir şekilde paylaştırır (örneğin, Round Robin).
    • Bağlam Anahtarlama (Context Switching): Süreçlerin durumlarını kaydedip yükleyerek CPU’yu paylaşır.
    • Senkronizasyon Araçları: Semaforlar, kilitler veya monitörler, süreçler arası veri tutarlılığını sağlar.
  • Örnek: Bir sistemde metin editörü, web tarayıcı ve müzik çalar aynı anda çalışıyormuş gibi görünür; CPU, her birine kısa zaman dilimleri atar.
  • Zorluklar: Yarış koşulları (race conditions) ve kilitlenmeler, yanlış senkronizasyon nedeniyle ortaya çıkabilir.

Örnek: Bir kullanıcı, bir metin editöründe yazı yazarken aynı anda bir tarayıcıda video izler; işletim sistemi, CPU’yu süreçler arasında paylaştırır ve senkronizasyonla çakışmaları önler.

Analitik Perspektif: Eşzamanlılık, sistem kaynaklarının verimli kullanımını sağlar ve kullanıcı deneyimini iyileştirir; ancak yanlış senkronizasyon kilitlenme veya yarış koşullarına yol açabilir, bu nedenle dikkatli tasarım gereklidir.

Soru 7: Linux'ta proc dizininin amacı nedir? Dizin içerisinde hangi bilgiler bulunur?

Cevabı Göster/Gizle

Cevap:

Linux’ta /proc dizini, çalışan sistemin ve süreçlerin dinamik durum bilgilerini sağlayan sanal bir dosya sistemidir, sistem izleme ve hata ayıklamayı kolaylaştırır.

  • Amaç:
    • Sistemin ve süreçlerin gerçek zamanlı bilgilerini kullanıcıya ve uygulamalara sunarak şeffaflık sağlar.
    • Sistem performansını izlemek, hata ayıklamak ve kaynak kullanımını analiz etmek için kullanılır.
    • Sanal bir dosya sistemi olarak, diskte fiziksel alan kaplamaz; bilgiler çekirdek tarafından dinamik olarak oluşturulur.
  • İçerik:
    • Süreç Bilgileri: Her süreç için bir alt dizin (örneğin, /proc/[pid]) bulunur ve şunları içerir:
      • stat: Süreç durumu, CPU kullanımı, öncelik.
      • cmdline: Sürecin komut satırı argümanları.
      • mem: Bellek kullanımı ve adres alanı bilgileri.
      • fd: Açık dosya tanımlayıcıları.
    • Sistem Bilgileri:
      • /proc/cpuinfo: İşlemci modeli, hızı, çekirdek sayısı.
      • /proc/meminfo: Toplam ve kullanılan bellek, takas alanı.
      • /proc/uptime: Sistem çalışma süresi ve boşta kalma süresi.
    • Donanım Bilgileri:
      • /proc/devices: Kullanılan aygıt sürücüleri.
      • /proc/interrupts: Kesme (interrupt) istatistikleri.
  • Örnek: cat /proc/cpuinfo komutu, CPU modelini, hızını ve çekirdek sayısını gösterir; cat /proc/[pid]/status, bir sürecin bellek ve CPU kullanımını listeler.

Örnek: Bir sistem yöneticisi, top komutunun /proc/meminfo ve /proc/stat dosyalarını okuyarak sistemin bellek ve CPU kullanımını izler.

Analitik Perspektif: /proc, sistem şeffaflığı ve hata ayıklama için güçlü bir araçtır, ancak yanlış okuma/yazma işlemleri sistem kararsızlığına neden olabilir; bu nedenle dikkatli kullanım gereklidir.

Soru 8: Von Neumann mimarisinin en önemli özelliği nedir?

Cevabı Göster/Gizle

Cevap:

Von Neumann mimarisinin en önemli özelliği, program talimatlarının ve verilerin aynı bellek alanında saklanmasıdır (stored-program concept), bu da bilgisayarların esnek ve yeniden programlanabilir olmasını sağlar.

  • Açıklama:
    • CPU, talimatları (kod) ve verileri aynı bellekten (örneğin, RAM) alır, böylece programlar bellekte saklanabilir ve değiştirilebilir.
    • Bu, sabit kablolu sistemlere kıyasla programlamayı kolaylaştırır ve genel amaçlı bilgisayarların temelini oluşturur.
  • Avantajlar:
    • Programların kolayca değiştirilmesi ve güncellenmesi.
    • Bellek alanının dinamik olarak kod ve veri arasında paylaşılması.
  • Dezavantajlar:
    • Veri ve talimatların aynı veri yolunu paylaşması (Von Neumann bottleneck), performans sınırlamalarına yol açar.
    • Önbellek ve boru hattı (pipeline) gibi modern teknikler bu sorunu hafifletir.
  • Örnek: Bir C programının kodu ve değişkenleri RAM’de saklanır; CPU, program sayacını kullanarak talimatları sırayla okur ve yürütür.

Örnek: Bir hesap makinesi programı, toplama talimatlarını ve sayısal verileri RAM’de saklar; CPU, bu talimatları okuyarak toplama işlemini gerçekleştirir.

Analitik Perspektif: Von Neumann mimarisi, modern bilgisayarların temelini oluşturur ve esneklik sağlar; ancak performans sınırlamaları nedeniyle Harvard mimarisi (ayrık kod ve veri belleği) gibi alternatifler, özellikle gömülü sistemlerde tercih edilir.

Soru 9: Mikro çekirdek ve monolitik mimariyi karşılaştırınız.

Cevabı Göster/Gizle

Cevap:

Mikro çekirdek ve monolitik mimari, işletim sistemi tasarımında iki farklı yaklaşımdır; her biri farklı avantajlar ve dezavantajlar sunar. Aşağıda detaylı bir karşılaştırma yapılmıştır:

Özellik Mikro Çekirdek Monolitik Mimari
Tanım Çekirdek, yalnızca temel işlevleri (süreç yönetimi, iş parçacığı yönetimi, süreçler arası iletişim) içerir; dosya sistemi, sürücüler ve ağ gibi hizmetler kullanıcı modunda ayrı süreçler olarak çalışır. Çekirdek, tüm işletim sistemi hizmetlerini (süreç yönetimi, bellek yönetimi, dosya sistemi, sürücüler, ağ) tek bir büyük modülde içerir ve çekirdek modunda çalışır.
Örnek Minix, QNX, Mach (macOS’un bazı bileşenleri). Linux, Windows (eski sürümler), Unix.
Avantajlar
  • Modülerlik: Hizmetler ayrı süreçler olarak çalıştığından bakım ve güncelleme kolaydır.
  • Güvenilirlik: Bir hizmetin çökmesi, çekirdeği etkilemez; hatalar izole edilir.
  • Taşınabilirlik: Minimal çekirdek, farklı donanımlara kolayca uyarlanabilir.
  • Güvenlik: Çekirdek dışı hizmetler, daha az yetkiyle çalışır.
  • Yüksek Performans: Tüm hizmetler çekirdek modunda çalıştığından sistem çağrıları hızlıdır.
  • Basitlik: Tek modül, tasarım ve geliştirmeyi kolaylaştırır.
  • Etkili İletişim: Modüller arası iletişim hızlıdır, çünkü hepsi aynı adres alanında çalışır.
Dezavantajlar
  • Performans: Kullanıcı ve çekirdek modları arasında sık geçiş, sistem çağrılarını yavaşlatır.
  • Karmaşıklık: Süreçler arası iletişim (IPC) mekanizmaları karmaşıktır ve ek yük getirir.
  • Geliştirme Zorluğu: Modüler tasarım, daha fazla kodlama ve test gerektirir.
  • Güvenilirlik: Bir modülün çökmesi, tüm çekirdeği ve sistemi etkileyebilir.
  • Bakım: Büyük ve karmaşık çekirdek, güncelleme ve hata ayıklamayı zorlaştırır.
  • Taşınabilirlik: Donanıma özgü kodlar, taşınabilirliği sınırlar.
Kullanım Gömülü sistemler, gerçek zamanlı sistemler ve yüksek güvenilirlik gereken ortamlar (örneğin, otomotiv, havacılık). Genel amaçlı sistemler, masaüstü ve sunucu ortamları, yüksek performans gereken yerler.

Örnek: QNX (mikro çekirdek), bir arabanın kontrol sisteminde modülerlik ve güvenilirlik için kullanılırken; Linux (monolitik), bir web sunucusunda yüksek performans için tercih edilir.

Analitik Perspektif: Mikro çekirdek, modülerlik ve güvenilirlik için uygundur, ancak performans maliyeti yüksektir; monolitik mimari, yüksek performans sunar, ancak bakım ve güvenilirlik açısından zorluklar yaratabilir. Seçim, sistem ihtiyaçlarına ve uygulama alanına bağlıdır.

Soru 10: Kesme tabanlı (preemptive) ile kesme tabanlı olmayan (non-preemptive) çizelgeleme algoritmaları arasındaki fark nedir?

Cevabı Göster/Gizle

Cevap:

Kesme tabanlı (preemptive) ve kesme tabanlı olmayan (non-preemptive) çizelgeleme algoritmaları, süreçlerin CPU’ya erişimini düzenleme yöntemlerinde farklılık gösterir; bu farklar, sistem performansı ve yanıt sürelerini etkiler:

Özellik Kesme Tabanlı (Preemptive) Kesme Tabanlı Olmayan (Non-Preemptive)
Tanım İşletim sistemi, çalışan süreci zaman dilimi dolduğunda veya daha yüksek öncelikli bir süreç hazır olduğunda keser ve CPU’yu başka bir sürece atar. Süreç, CPU’yu gönüllü olarak bırakana (örneğin, I/O isteği veya tamamlanma) veya tamamlanana kadar çalışır; işletim sistemi zorla kesmez.
Örnek Algoritmalar Round Robin, Öncelik Tabanlı Çizelgeleme, Çok Seviyeli Kuyruk. İlk Gelen İlk Hizmet (FCFS), En Kısa İş Önce (SJF), En Kısa Kalan Süre Önce (SRTF).
Avantajlar
  • Hızlı Yanıt: Yüksek öncelikli süreçlere hızlı erişim sağlar, gerçek zamanlı sistemler için uygundur.
  • Adalet: Zaman paylaşımı ile tüm süreçlere CPU zamanı verir, uzun süreçlerin sistemi kilitlemesini önler.
  • Esneklik: Dinamik öncelik değişikliklerine uyum sağlar.
  • Basitlik: Bağlam değiştirme az olduğundan yönetim basittir ve ek yük düşüktür.
  • Verimlilik: Uzun süren süreçler için uygundur, çünkü kesintiye uğramaz.
  • Düşük Maliyet: Bağlam değiştirme nadirdir, bu da CPU kaynaklarını korur.
Dezavantajlar
  • Ek Yük: Sık bağlam değiştirme, CPU zamanını boşa harcar (mikro/nanosaniye mertebesinde).
  • Karmaşıklık: Çizelgeleme algoritmaları daha karmaşıktır, öncelik yönetimi gerekir.
  • Gecikme: Uzun süreçler, kısa veya yüksek öncelikli süreçleri geciktirebilir (konvoy etkisi).
  • Adaletsizlik: Kısa süreçler, uzun süreçlerin tamamlanmasını bekler.
Örnek Round Robin’de bir süreç 10 ms çalışır, zamanlayıcı kesmesiyle durdurulur ve başka bir süreç çalışır. FCFS’de bir süreç, tamamlanana veya I/O isteği yapana kadar CPU’yu tutar.

Örnek: Bir sistemde Round Robin (preemptive) ile bir metin editörü 10 ms çalışır, ardından tarayıcıya geçilir; FCFS (non-preemptive) ile tarayıcı tamamlanana kadar editör bekler.

Analitik Perspektif: Kesme tabanlı algoritmalar, dinamik ve adaletli sistemler için uygundur, özellikle kullanıcı etkileşimli veya gerçek zamanlı sistemlerde; kesme tabanlı olmayanlar ise basitlik ve düşük ek yük gerektiren toplu iş sistemlerinde tercih edilir. Seçim, sistem ihtiyaçlarına ve süreç özelliklerine bağlıdır.

Soru 11: "Round Robin" zamanlama algoritmasında, zaman dilimi (time quantum) çok küçük seçilirse ne olur?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: b) Bağlam değiştirme (context switch) masrafı artar ve sistem verimliliği azalır.

Açıklama:

  • Round Robin Algoritması: Her süreç, sabit bir zaman dilimi (quantum) süresince CPU’yu kullanır; zaman dolduğunda veya süreç kesildiğinde, CPU başka bir sürece geçer.
  • Zaman Dilimi Çok Küçükse:
    • Süreçler sık sık kesilir, bu da bağlam değiştirme (context switch) sayısını artırır.
    • Bağlam değiştirme, süreç durumlarının (program sayacı, yazmaçlar, yığın işaretçisi) kaydedilip yüklenmesini içerir ve bu işlem mikro veya nanosaniye mertebesinde zaman alır.
    • Bu ek yük, CPU’nun süreç yürütmek yerine bağlam değiştirmeye daha fazla zaman harcamasına neden olur, böylece sistem verimliliği azalır.
    • Örnek: 1 ms quantum ile 10 süreç, saniyede 1000 bağlam değiştirmeye yol açar, bu da CPU’nun %10-20’sini tüketebilir.
  • Diğer Şıkların Değerlendirmesi:
    • a) Sistem verimliliği artar ve süreçler daha hızlı tamamlanır: Yanlış, çünkü sık bağlam değiştirme performansı düşürür; süreçler daha az CPU zamanı alır.
    • c) Süreçler arasında adalet sağlanamaz: Yanlış, küçük zaman dilimi adaleti artırır, çünkü her süreç sık sık CPU alır, ancak performans azalır.
    • d) Kilitlenme olasılığı artar: Yanlış, zaman dilimi boyutu kilitlenmeyi doğrudan etkilemez; kilitlenme, kaynak yönetimiyle ilgilidir.

Örnek: Bir sistemde 5 süreç, 1 ms quantum ile çalışıyorsa, CPU her milisaniyede bağlam değiştirir; bu, bir sürecin 100 ms’lik işini tamamlaması için 500 ms’lik toplam sürede ek yük yaratır.

Analitik Perspektif: Zaman dilimi seçimi, adalet ve performans arasında bir dengedir; çok küçük quantum, bağlam değiştirme ek yükünü artırır, çok büyük quantum ise kesme tabanlı olmayan çizelgelemeye yaklaşarak adaleti azaltır. Optimal quantum, sistem yüküne ve süreç sayısına bağlıdır.

Soru 12: Aşağıdaki senkronizasyon mekanizmalarından hangisi, meşgul bekleme (busy waiting) yöntemine dayanır?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: c) Döngüsel Kilit (Spinlock)

Açıklama:

  • Meşgul Bekleme (Busy Waiting): Bir süreç veya iş parçacığı, bir kaynağın serbest olmasını beklerken CPU’yu sürekli kontrol ederek meşgul tutar, bu da CPU’nun boşa çalışmasına neden olur.
  • Spinlock:
    • Süreç, kilidin serbest olmasını beklerken bir döngü içinde durumu kontrol eder (örneğin, while(lock)), bu da meşgul beklemeye örnektir.
    • Genellikle kısa süreli kilitler için kullanılır, özellikle çok çekirdekli sistemlerde, çünkü bağlam değiştirme maliyetinden kaçınılır.
    • Örnek: Bir iş parçacığı, paylaşılan bir belleğe erişmek için spinlock kullanır; kilit serbest olana kadar döngüde bekler.
  • Diğer Şıkların Değerlendirmesi:
    • a) Semafor: Süreçleri engelleyerek (blocked state) bekletir; CPU’yu serbest bırakır, bu nedenle meşgul bekleme değildir.
    • b) Gözleyici (Monitor): İş parçacıklarını kuyruğa alarak bekletir ve CPU’yu serbest bırakır, meşgul bekleme kullanmaz.
    • d) Koşul Değişkeni: Süreçleri askıya alarak (wait state) bekletir, CPU’yu meşgul etmez.

Örnek: Çok çekirdekli bir sistemde, bir iş parçacığı spinlock ile bir veritabanı kilidini kontrol eder; kilit serbest olana kadar döngüde bekler, bu da CPU’yu kısa süreli meşgul tutar.

Analitik Perspektif: Spinlock, kısa süreli kilitler için uygundur ve bağlam değiştirme maliyetini azaltır; ancak uzun beklemelerde CPU israfına yol açar, bu nedenle semafor veya monitör gibi mekanizmalar uzun süreli senkronizasyon için daha verimlidir.

Soru 13: Bir işletim sisteminde, iki süreç arasında süreçler arası iletişim (inter-process communication) için paylaşılan bellek (shared memory) kullanıldığında, hangi durum senkronizasyon gerektirmez?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: c) Her iki süreç de okuma yapıyorsa

Açıklama:

  • Paylaşılan Bellek: Süreçler arası iletişimde, iki süreç aynı bellek bölgesine erişir; veri tutarlılığını sağlamak için genellikle senkronizasyon (kilitler, semaforlar) gerekir.
  • Her İki Süreç de Okuma Yapıyorsa:
    • Veri değiştirilmez, bu nedenle yarış koşulu (race condition) veya veri bozulması riski yoktur.
    • Senkronizasyon (örneğin, kilitler) gerekmez, çünkü okuma işlemleri birbirini etkilemez.
    • Örnek: İki süreç, bir paylaşılan veri tabanındaki sabit bir tabloyu okur; veri değişmediği için kilit gerekmez.
  • Diğer Şıkların Değerlendirmesi:
    • a) Bir süreç yazarken diğer süreç okuma yapıyorsa: Okuma işlemi, yazma sırasında eski veya tutarsız veri alabilir (örneğin, yarım yazılmış veri); senkronizasyon gerekir.
    • b) Her iki süreç de aynı anda yazma yapıyorsa: Yarış koşulu oluşur, veri bozulabilir (örneğin, bir süreç diğerinin yazdığını ezer); kilit şarttır.
    • d) Bir süreç belleği temizlerken diğer süreç erişmeye çalışıyorsa: Veri kaybı veya erişim hatası oluşabilir; senkronizasyon kritik öneme sahiptir.

Örnek: Bir veri analizi uygulaması, iki sürecin paylaşılan bir bellek bölgesindeki sabit bir veri setini okumasını sağlar; süreçler veri değiştirmediği için senkronizasyona gerek yoktur.

Analitik Perspektif: Salt okuma senaryoları, senkronizasyon ek yükünü ortadan kaldırır ve performansı artırır; ancak yazma içeren durumlarda kilitler, semaforlar veya monitörler gibi senkronizasyon mekanizmaları veri tutarlılığı için zorunludur.

Soru 14: Öncelik tersine dönmesi (Priority Inversion) sorunu nedir ve hangi senaryoda ortaya çıkar?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: a) Düşük öncelikli bir iş parçacığının, yüksek öncelikli bir iş parçacığını engellemesi; paylaşılan bir kaynak kilitlendiğinde

Açıklama:

  • Öncelik Tersine Dönmesi (Priority Inversion): Düşük öncelikli bir iş parçacığı, paylaşılan bir kaynağı kilitlediğinde, yüksek öncelikli bir iş parçacığını bekletir ve bu durum öncelik sıralamasını tersine çevirir, sistem performansını etkiler.
  • Senaryo:
    • Düşük öncelikli iş parçacığı (T3) bir kaynağı (örneğin, bir kilit) tutar.
    • Yüksek öncelikli iş parçacığı (T1) bu kaynağı talep eder ve T3 serbest bırakana kadar bekler.
    • Orta öncelikli bir iş parçacığı (T2), T3’ü keserek CPU’yu alır, böylece T1’in beklemesi uzar, bu da öncelik tersine dönmesine neden olur.
  • Çözüm Yöntemleri:
    • Öncelik Mirası (Priority Inheritance): T3, T1’in önceliğini geçici olarak devralır, böylece T2 tarafından kesilmez.
    • Öncelik Tavanı (Priority Ceiling): Kaynağın önceliği, en yüksek öncelikli iş parçacığına ayarlanır.
  • Örnek: Gerçek zamanlı bir sistemde, düşük öncelikli bir görev bir veritabanı kilidini tutar; yüksek öncelikli bir görev bu kilidi beklerken, orta öncelikli bir görev CPU’yu alarak gecikmeye neden olur.
  • Diğer Şıkların Değerlendirmesi:
    • b) CPU ele geçirme: Bu, öncelik tersine dönmesi değil, kötü çizelgeleme veya tasarım hatasıdır.
    • c) Sonsuz döngü: Bu, öncelik tersine dönmesiyle ilgili değildir; programlama hatasıdır.
    • d) Dosya yazma çakışması: Bu, yarış koşuludur ve öncelik tersine dönmesiyle bağlantılı değildir.

Örnek: Bir otonom araçta, düşük öncelikli bir veri güncelleme görevi bir sensör kilidini tutar; yüksek öncelikli bir çarpışma önleme görevi bu kilidi beklerken, orta öncelikli bir navigasyon görevi CPU’yu alarak gecikmeye neden olur.

Analitik Perspektif: Öncelik tersine dönmesi, özellikle gerçek zamanlı sistemlerde ciddi gecikmelere yol açar; öncelik mirası veya tavanı gibi protokoller bu sorunu azaltır, ancak ek karmaşıklık getirir.

Soru 15: Bir süreç diskten okuma yapmak istediğinde geçiş yapacağı durum hangisidir?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: b) Engellenmiş (blocked)

Açıklama:

  • Durum Geçişi: Bir süreç, diskten okuma gibi giriş/çıkış (I/O) işlemi yapmak istediğinde, bu işlem tamamlanana kadar CPU’yu kullanamaz ve engellenmiş (blocked) duruma geçer.
  • Süreç Durumları:
    • Hazır (ready): CPU’yu almayı bekleyen süreçler; I/O beklemez.
    • Çalışıyor (running): CPU’yu aktif olarak kullanan süreç.
    • Engellenmiş (blocked): I/O işlemi veya başka bir olay (örneğin, kilit) bekleyen süreç; CPU’dan çıkarılır.
    • Sonlandırıldı (terminated): Süreç tamamlanmış veya iptal edilmiştir.
  • Süreç:
    • Süreç, read() gibi bir sistem çağrısı yapar.
    • İşletim sistemi, I/O işlemini başlatır ve süreci engellenmiş duruma geçirir.
    • I/O tamamlandığında, süreç hazır duruma geri döner.
  • Örnek: Bir süreç, bir dosyadan veri okumak için read() sistem çağrısı yapar; disk işlemi bitene kadar engellenir, CPU başka bir sürece tahsis edilir.
  • Diğer Şıkların Değerlendirmesi:
    • a) Hazır: Süreç, CPU’yu bekler; disk I/O’su için uygun değildir.
    • c) Çalışıyor: Süreç CPU’yu kullanıyordur; I/O beklemesi durumunda çalışamaz.
    • d) Sonlandırıldı: Süreç bitmiştir ve I/O yapamaz.

Örnek: Bir veritabanı uygulaması, diskten büyük bir tabloyu okumak için read() çağrısı yapar; süreç engellenir, CPU ise bir web tarayıcı sürecine tahsis edilir.

Analitik Perspektif: Engellenmiş durum, CPU’nun verimli kullanımını sağlar, çünkü I/O bekleyen süreçler CPU’yu serbest bırakır; bu, çoklu görev sistemlerinde kaynak paylaşımını optimize eder.

Soru 16: İşletim sistemlerinde süreç denetim bloğunun (PCB) temel amacı nedir?

Cevabı Göster/Gizle

Cevap:

Doğru cevap: c) Bir sürecin durumu ve özellikleri hakkındaki bilgileri korumak

Açıklama:

  • Süreç Denetim Bloğu (PCB): Her süreç için işletim sisteminin tuttuğu bir veri yapısıdır; sürecin durumunu, özelliklerini ve kaynaklarını saklar, böylece süreç yönetimi mümkün olur.
  • İçerik:
    • Süreç Kimliği (PID): Süreci benzersiz şekilde tanımlar.
    • Durum: Çalışıyor, hazır, engellenmiş gibi süreç durumu.
    • CPU Bilgileri: Program sayacı (PC), yazmaçlar, yığın işaretçisi.
    • Bellek Bilgileri: Sayfa tabloları, bellek sınırları.
    • Kaynaklar: Açık dosyalar, I/O cihazları, öncelik.
  • Amaç:
    • Bağlam anahtarlama sırasında sürecin durumunu kaydetmek ve geri yüklemek.
    • Süreçlerin çizelgelenmesini, yönetilmesini ve izlenmesini sağlamak.
    • İşletim sisteminin süreçler üzerinde kontrol sahibi olmasını mümkün kılmak.
  • Örnek: Bir süreç kesildiğinde, PCB’sine program sayacı ve yazmaçlar kaydedilir; başka bir süreç çalıştırıldıktan sonra PCB’den bilgiler geri yüklenir.
  • Diğer Şıkların Değerlendirmesi:
    • a) Yürütülebilir kodu saklamak: PCB, kodu değil, kodun bellekteki konumunu (örneğin, program sayacı) işaret eder.
    • b) Kaynak tahsisini yönetmek: PCB, kaynak bilgilerini saklar, ancak tahsisi işletim sistemi yapar.
    • d) Süreç dışı iletişim: PCB, iletişim için değil, süreç yönetimi için kullanılır; iletişim için borular veya mesaj kuyrukları kullanılır.

Örnek: Bir metin editörü süreci kesildiğinde, PCB’sine mevcut belge konumu ve yazmaçlar kaydedilir; CPU, bir tarayıcı sürecine geçer ve editörün durumu PCB’den geri yüklenir.

Analitik Perspektif: PCB, süreç yönetiminin temel taşıdır; eksik veya hatalı PCB, bağlam anahtarlamasını bozar ve sistem kararlılığını tehdit eder; bu nedenle PCB’nin doğru ve hızlı yönetimi kritik öneme sahiptir.