Süreçler Arası İletişim, Yarış Durumları (Race Conditions)

tarafından
258
Süreçler Arası İletişim, Yarış Durumları (Race Conditions)

Süreçler Arası İletişim(IPC-Inter Process Communication)Süreçler, sıklıkla birbirleri ile iletişim kurarlar. Bir sürecin çıktısı başka bir sürecin girdi verisi olabilir. Süreçler arası iletişimde üç konu önemlidir:

  1. Bir süreç diğerine nasıl veri gönderir?
  2. Bir ya da daha fazla sürecin birbirlerinin yollarını kullanırken dikatli olmaları ve birbirlerinin iletişim yollarına girmemeleri.
  3. İletişimdeki uygun sıra nasıl olmalıdır? Bir süreç veri

gönderiyor diğeri bu veriyi yazdırıyorsa, ilk süreç veri göndermediğinde ikincinin beklemesi ya da ikinci yazdırırken birincinin beklemesi gereklidir. İletişimde kullanılacak sıra önemlidir.Süreçler arası iletişimde kullanılan yöntemler, thread ler arasında da kullanılır çünkü threadlerde süreçlerdeki gibi aynı verileri ortak kullanmaktadırlar.İletişim Niçin Yapılır ?

  • Kaynak paylaşımı (dosya, I/O aygıtı,…)
  • Karşılıklı haberleşme (iki süreç birbirine haber gönderir) 3.Senkronizayon (Bir sürecin çalışması başka bir sürecin belirli işlemleri tamamlamış olmasına bağlı olabilir)

İki ya da daha fazla süreç iletişim kurarken ortak bellek bölgelerini(shared memory), ortak dosyaları,tüm süreçlerin erişebileceği kuyruk yapılarını, özel iletişim dosyalarını ve buna benzer sistemler kullanabilir.Tüm iletişim yöntemlerinde süreçlerin iletişim için kullandıkları mekanizmanın elemanları, süreçlerce ortaklaşa kullanılır.Yarış Durumları (Race Conditions)İletişime bir örnek verelim: Süreçler istedikleri dosyaları yazıcıdan çıktı almak istesinler.Bir süreç bir dosyayı yazdırmak istediğinde, bekletici(spooler) ismi verilen bir dosyaya yazdırmak istediği dosya bilgisini ekler.Başka bir süreç belirli sürelerde periyodik olarak klasörü kontrol eder, eğer bir dosya görürse bu dosyayı yazdırır.Yazdırma işleminden sonra yazdırdığı dosyayı bekletici(spooler) klasöründen siler.Varsayalım ki bekletici klasöründe birden fazla boş hücre bulunsun, yazıdırılacak olan dosyalar bu boş hücrelere konulsun. çıktı bir sonraki yazıdırılacak olan dosyayı, girdi de bir sonraki boş hücre bilgisini tutsun.1 2A süreci girdi değerini 7 olarak okusun. Okuduktan hemen sonra işlemci süreçler arasında geçiş yapsın ve B süreci seçilsin. B süreci de girdi değerini 7 olarak okuyacaktır. B süreci girdi=7 alanına kendi yazdırmak istediği dosyanın bilgisini eklesin ve girdi değerini 8 yapsın. B sürecinin çalışması kesilsin ve tekrar A sürecine geri dönülsün.A süreci bir sonraki boş hücre değerini yani girdi değişkeninin değerini 7 olarak görmektedir. A süreci de yazdırmak istediği dosya bilgisini 7. hücreye ekler ve girdi=8 yapar.B sürecinin yazdırmak istediği dosya bilgisi silinir.Bu tip durumlara YARIŞ DURUMLARI (RACE CONDITIONS) denilir.