Process ile thread arasındaki fark nedir?

Cevap

Process (süreç), çalışmakta olan bir programın örneğidir; kendi ayrı adres alanına (kod, veri, heap, stack), dosya tanımlayıcılarına ve işletim sistemi kaynaklarına sahiptir.

Thread (iş parçacığı), bir process içindeki yürütme birimidir. Aynı process'teki thread'ler belleği ve kaynakları paylaşır, ama her birinin kendi stack'i, register'ları ve program sayacı vardır.

ProcessThread
BellekAyrı adres alanıProcess belleğini paylaşır
Oluşturma maliyetiYüksekDüşük
Context switchDaha pahalı (sayfa tablosu değişir)Daha ucuz
İletişimIPC gerekir (pipe, socket, shared memory)Ortak değişkenler üzerinden, doğrudan
İzolasyonBiri çökerse diğerleri etkilenmezBir thread çökerse tüm process çöker
Senkronizasyon ihtiyacıAzYüksek: race condition riski

Örnekler

  • Chrome her sekmeyi ayrı process'te çalıştırır: bir sekmenin çökmesi tarayıcıyı düşürmez ve güvenlik izolasyonu sağlar.
  • Bir web sunucusu her isteği bir thread havuzundaki thread ile işleyebilir: ucuz ve belleği paylaşır.
  • Python'da GIL nedeniyle CPU yoğun işlerde multiprocessing, I/O yoğun işlerde threading veya asyncio tercih edilir.

Seçim, izolasyon mu yoksa düşük maliyet ve kolay veri paylaşımı mı istendiğine bağlıdı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. Context switch nedir? Neden maliyetlidir?Ortaİşletim SistemleriYazılım Müh.
  4. Virtual memory ve paging nasıl çalışır? Page fault nedir?Zorİşletim SistemleriYazılım Müh.
  5. Mutex ile semaphore arasındaki fark nedir?Ortaİşletim SistemleriYazılım Müh.
  6. Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?Zorİş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