Process'ler arası iletişim (IPC) yöntemleri nelerdir? Hangisini ne zaman seçersiniz?

Cevap

Process'lerin adres alanları birbirinden izole olduğu için veri paylaşmak için işletim sisteminin sağladığı IPC mekanizmaları gerekir. Ana yöntemler: pipe, named pipe (FIFO), message queue, shared memory, socket ve signal.

YöntemÖzellikTipik kullanım
Anonymous pipeTek yönlü byte akışı, akraba process'ler arasıShell'de ls, grep zinciri
Named pipe (FIFO)Dosya sisteminde ismi olan pipe, ilgisiz process'lerBasit yerel komut kanalları
Message queueMesaj sınırları korunur, kernel'de tamponlanırPOSIX mq_open, iş dağıtımı
Shared memoryEn hızlı; veri kopyalanmaz, senkronizasyon sizdeVeritabanı buffer'ları, video işleme
Unix domain socketAynı makinede çift yönlü, socket API'siDocker daemon, PostgreSQL yerel bağlantısı
TCP/UDP socketAğ üzerinden de çalışırMikroservisler, istemci-sunucu
SignalAsenkron bildirim, veri taşımazSIGTERM ile kapanma, SIGHUP ile config yenileme

Shared memory neden en hızlı?

Diğer yöntemlerde veri kullanıcı alanından kernel'e, oradan diğer process'e kopyalanır (en az iki kopya ve system call). Shared memory'de iki process aynı fiziksel sayfayı kendi adres alanına map eder; okuma/yazma normal bellek erişimidir. Bedeli: race condition'ları semaphore veya mutex ile sizin önlemeniz gerekir.

Örnek: pipe

import subprocess

p1 = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", ".py"], stdin=p1.stdout, stdout=subprocess.PIPE, text=True)
p1.stdout.close()
print(p2.communicate()[0])

Seçim rehberi

  • Aynı makinede yüksek hacimli veri: shared memory (mmap, Python'da multiprocessing.shared_memory).
  • Aynı makinede yapılandırılmış istek/yanıt: Unix domain socket.
  • Farklı makineler: TCP üzerinde HTTP/gRPC veya bir message broker (Kafka, RabbitMQ).
  • Sadece "kapan" veya "yeniden yükle" bildirimi: signal.

Thread'ler aynı adres alanını paylaştığı için IPC'ye ihtiyaç duymaz; ama senkronizasyon yine gereklidir.

  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