Context switch nedir? Neden maliyetlidir?

Cevap

Context switch, CPU'nun çalışmakta olan bir thread/process'i durdurup başka birini çalıştırmaya geçmesidir. İşletim sistemi zamanlayıcısı (scheduler) bunu çok çekirdekli olsa bile sürekli yapar; böylece aynı anda çalışıyormuş izlenimi oluşur.

Ne zaman olur?

  • Zaman dilimi (time slice) dolunca: preemptive zamanlama.
  • Thread I/O beklemeye, kilide veya sleep'e girince: gönüllü bırakma.
  • Daha yüksek öncelikli bir iş hazır olunca.
  • Kesme (interrupt) işlenirken.

Adımlar

  1. Mevcut iş parçacığının durumu (register'lar, program sayacı, stack pointer) PCB/TCB'ye kaydedilir.
  2. Scheduler sıradaki işi seçer.
  3. Yeni işin durumu yüklenir.
  4. Farklı bir process'e geçiliyorsa adres alanı da değişir: sayfa tablosu değiştirilir ve TLB büyük oranda geçersizleşir.

Neden maliyetli?

  • Doğrudan maliyet: kayıt/yükleme ve çekirdek moduna geçiş (mikrosaniyeler mertebesinde).
  • Dolaylı maliyet (asıl büyük olan): CPU önbellekleri ve TLB yeni iş için "soğuk"tur; önbellek ıskaları performansı düşürür.
  • Thread geçişi, aynı adres alanında kaldığı için process geçişinden ucuzdur.

Pratik sonuçları

  • Binlerce thread açmak çok fazla context switch'e yol açar; bunun yerine thread havuzu kullanılır.
  • Node.js event loop, Go goroutine'leri, Java virtual thread'leri, asyncio gibi modeller, çok sayıda eşzamanlı işi az sayıda OS thread'iyle yürüterek bu maliyeti azaltır.
  1. Concurrency ile parallelism arasındaki fark nedir?Kolayİşletim SistemleriYazılım Müh.
  2. Race condition nedir? Bir örnekle nasıl önleneceğini gösterin.Ortaİşletim SistemleriYazılım Müh.
  3. Virtual memory ve paging nasıl çalışır? Page fault nedir?Zorİşletim SistemleriYazılım Müh.
  4. Mutex ile semaphore arasındaki fark nedir?Ortaİşletim SistemleriYazılım Müh.
  5. Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?Zorİşletim SistemleriYazılım Müh.
  6. Process ile thread arasındaki fark nedir?Kolayİşletim SistemleriYazılım Müh.

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle