Concurrency ile parallelism arasındaki fark nedir?
Cevap
- Concurrency (eşzamanlılık): birden fazla işin aynı zaman aralığında ilerlemesidir. İşler sırayla, birbirinin arasına girerek yürütülebilir; tek çekirdekte bile mümkündür. Bir yapı/tasarım meselesidir.
- Parallelism (paralellik): birden fazla işin aynı anda fiziksel olarak çalışmasıdır. Birden fazla çekirdek veya işlemci gerektirir. Bir yürütme meselesidir.
Benzetme: tek bir aşçı çorba kaynarken salata doğrar (concurrency); iki aşçı aynı anda farklı yemekleri yapar (parallelism).
| Concurrency | Parallelism | |
|---|---|---|
| Amaç | Bekleme sürelerini değerlendirmek, yanıt verebilirlik | Hesaplamayı hızlandırmak |
| Tipik iş | I/O yoğun (ağ, disk, veritabanı) | CPU yoğun (görüntü işleme, hesaplama) |
| Donanım | Tek çekirdek yeterli | Çok çekirdek |
| Örnek araçlar | async/await, event loop, goroutine | Çoklu process, thread havuzu, GPU, SIMD |
import asyncio
# Concurrency: 3 HTTP isteği beklerken birbirini bloklamaz
async def main():
results = await asyncio.gather(fetch(u1), fetch(u2), fetch(u3))
from concurrent.futures import ProcessPoolExecutor
# Parallelism: CPU yoğun iş çekirdeklere dağıtılır
with ProcessPoolExecutor() as ex:
results = list(ex.map(resize_image, images))Bir sistem hem eşzamanlı hem paralel olabilir: çok çekirdekli bir sunucuda çalışan Go programı goroutine'leri birden fazla çekirdeğe dağıtır.
Rob Pike'ın özeti: "Concurrency, birçok şeyle aynı anda ilgilenmek; parallelism, birçok şeyi aynı anda yapmaktır."
İlgili İşletim Sistemleri soruları
- 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?
- Process ile thread arasındaki fark nedir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.