IPC Nedir

Süreçler arası iletişim (IPC), programcıların bir işletim sisteminde eşzamanlı olarak çalışabilmeleri ve birbirleriyle bilgi alışverişi yapabilmeleri için farklı süreçleri koordine etmelerine olanak tanıyan programlar için bir dizi programlama arabirimidir. Bu, bir programın aynı anda birçok kullanıcının gereksinimlerini karşılamasını sağlar

Bilgisayar biliminde, bir bilgisayardaki işletim sistemindeki işlemler arası iletişimi (IPC) yada ağ bağlantısı üzerinden sunucu ve istemci bilgisayarların birbirleriyle senkronize bir şekilde haberleşmesini sağlayarak verilerin yönetilmesini sağlayan teknolojiye IPC denir.

Bir başka tanım ile basitçe; bir bilgisayarda çalışan birden fazla işlemin (process) bir biriyle haberleşmesini hedefleyen teknolojisidir. IPC tanım olarak Inter Process Communication kısaltılmasıdır.

IPC Çalışma Mantığı

IPC çalışma mantığını; bilgisayarlar arası haberleşme üzerinden süreci tanımlayalım. Genel olarak bir sunucu ve client (sunucu-istemci) olarak sınıflandırabileceğimiz uygulamalar IPC’yi kullanır. Burada istemci veri talep eder, sunucu ise istemcinin veri talebine yanıt verir. Süreçler arası iletişime örnek olarak; bir web sitesinin açılmasındaki süreci örnek olarak gösterebiliriz. Burada süreçteki iletişimde, ana bilgisayar ile uzak bilgisayar birbirleriyle iletişim halinde gerekli veri alışverişini sağlayarak gerekli dosyaları birbiriyle paylaşmaktadır.

İşlemler arası iletişim (IPC), aynı bilgisayar içerisindeki işlemlerin birbiriyle iletişim ve veri alışverişi olabileceği gibi farklı bilgisayarlar arasında ağ bağlantısıyla iletişim kurabilmesidir.

IPC, bir işlemin diğer bir işlemi kontrol edebilmesini ve aynı veriyi tutarsızlık yaşanmadan senkronize bir şekilde kullanabilmesine olanak sağlamaktadır. Bağımsız süreçlerin, daha rahat, kolay ve verimli çalışacağı düşünülse de hesaplama hızı ve verinin işlenmesindeki tutarsızlığın önüne geçmek adına işbirliğine dayalı süreçlerin kullanılabileceği daha çok alan bulunmaktadır.

IPC Amacı

  • Veri aktarımı: Bir işlemin verilerini başka bir işleme göndermesi gerekir ve gönderilen veri miktarı bir bayt ile birkaç megabayt arasındadır.
  • Paylaşılan veriler: Birden fazla işlem paylaşılan verileri değiştirmek istiyorsa, paylaşılan verilerin bir işlem tarafından değiştirilmesi diğer işlemler tarafından hemen görülmelidir.
  • Bildirim olayı: Bir işlemin, belirli bir olayın meydana geldiğini bildirmek için başka bir işleme veya bir süreç grubuna bir mesaj göndermesi gerekir.
  • Kaynak paylaşımı: Aynı kaynaklar birden çok süreç arasında paylaşılır. Bunu yapmak için çekirdeğin bir kilit ve senkronizasyon mekanizması sağlaması gerekir.
  • Süreç kontrolü: Bazı süreçler başka bir sürecin yürütülmesini tamamen kontrol etmek ister (Hata Ayıklama süreci gibi) Bu zamanda, kontrol süreci başka bir sürecin tüm tuzaklarını ve istisnalarını durdurmayı ve zaman içindeki durum değişikliklerini bilebilir.

İşlemler, çekirdek ve diğer işlemlerle iletişim kurarak davranışlarını koordine eder. Linux, çeşitli süreçler arası iletişim (IPC) mekanizmalarını destekler, sinyaller ve borular bunlardan ikisidir. Ek olarak, Linux ayrıca System V’in IPC mekanizmasını da destekler (adını ilk Unix sürümünden alır).

Süreçler Arası iletişim (IPC) Yöntemleri

  • Sinyaller ( signals )
  • Boru Hatları ( pipes )
  • Soketler ( sockets )
  • Paylaşımlı Bellek ( shared memory )
  • Paylaşılan Dosyalar ( shared files )
  • Mesaj Kuyrukları ( message queues )

IPC Avantajları ve Dezavantajları

İşlemler arası iletişim avantajları

  • Bilgi paylaşımı: Birden fazla kullanıcıya eş zamanlı ve kolay bir şekilde veriye erişme imkânı sunar.
  • Modülerlik: Kullanıcıların isteklerine ve ihtiyaçlarına göre yeniden tasarlanabilen modüler yapıya sahiptir.
  • Uygunluk: Kullanıcılar, birden fazla süreci aynı anda yürütebilirler.
  • Hesaplama hızı: İşi daha küçük parçacıklar halinde, paralel ve eş zamanlı süreçler haline getirerek daha hızlı sonuca alınır.

İşlemler arası iletişim dezavantajları

  • Deadlock (ölümcül kilitlenme) : Birden fazla veririn eş zamanlı yürütülerek hızlı sonuca gitme sonucunda aşırı yüklenme nedeniyle nadiren de olsa deadlock dediğimiz çıkma bir sürece sürüklenebilir.
  • Karmaşıklık: Her ne kadar veri uyuşmazlıkları ve süreç senkronizasyon problemlerin yaşanmadığı bir süreç olsa da, belli bir hiyerarşi olmadığı için sürekli çalışan işlemler ( processes ) karışıklığa neden olabilir.

IPC, mikro çekirdekler ve nanokernellerin  gibi tasarım süreçleri için çok önem arz etmektedir. Mikrokerneller, çekirdek tarafından sağlanan işlev miktarını azaltır. Bu işlevler daha sonra, IPC aracılığıyla, sunucularla iletişim kurup, normal tek parçalı çekirdeğe kıyasla IPC sayısını büyük ölçüde arttırır.

Sonuç olarak; bir işlemin hafızaya yazdığı bilgiyi başka bir işlem tarafından okunarak bu iletişim sağlanır.

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here