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.
| Process | Thread | |
|---|---|---|
| Bellek | Ayrı adres alanı | Process belleğini paylaşır |
| Oluşturma maliyeti | Yüksek | Düşük |
| Context switch | Daha pahalı (sayfa tablosu değişir) | Daha ucuz |
| İletişim | IPC gerekir (pipe, socket, shared memory) | Ortak değişkenler üzerinden, doğrudan |
| İzolasyon | Biri çökerse diğerleri etkilenmez | Bir thread çökerse tüm process çöker |
| Senkronizasyon ihtiyacı | Az | Yü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şlerdethreadingveyaasynciotercih edilir.
Seçim, izolasyon mu yoksa düşük maliyet ve kolay veri paylaşımı mı istendiğine bağlıdır.
İlgili İşletim Sistemleri soruları
- Concurrency ile parallelism arasındaki fark nedir?
- Race condition nedir? Bir örnekle nasıl önleneceğini gösterin.
- Context switch nedir? Neden maliyetlidir?
- Virtual memory ve paging nasıl çalışır? Page fault nedir?
- Mutex ile semaphore arasındaki fark nedir?
- Deadlock nedir? Oluşması için gereken dört koşul nelerdir ve nasıl önlenir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.