Mesaj Geçirme (Message passing), Bariyerler (Barriers)

tarafından
73
Mesaj Geçirme (Message passing), Bariyerler (Barriers)

Mesaj Geçirme (Message passing)Süreçler arasında mesaj gönderip, almak için send ve receive şeklinde iki sistem çağrısı bulunur. Bu çağrılar aşağıdaki gibi kütüphane fonksiyonu olarak tanımlansınlar.send   (varış,&mesaj);    //varış ile verilmiş olan sürece mesajı gönderirreceive(kaynak,&mesaj);//kaynakdan gelen mesajı alır. Eğer mesaj yoksa gelene kadar bloklanır ya da bir hata kodu geriye çevirir.Bu işlemlerde çeşitli problemler çıkabilir.Örneğin, mesaj gidecek olan bilgisayar ağ üzerinde başka bir bilgisayarda ise mesaj ağda kaybolabilir. Bu yüzden gönderici mesaj göndermeli, alıcı mesajı aldığını belirten kabul (ackowledge) mesajı geriye göndermelidir. Eğer gönderici kabul mesajını belirli bir süre alamazsa mesajı tekrar gönderir.Mesaj ulaşmış fakat kabul mesajı ağda kaybolmuş olabilir. Gönderici mesajı iki kez göndermiş, alıcıda mesajı iki kez almış olur. Bu problem mesaja sıra numarası verilerek çözülür, aynı numaralı iki mesaj gelirse sadece biri kabul edilir.Bu işlemler aynı makine üzerinde olsa dahi semaforlara göre oldukça yavaştırlar. Mesajlaşma yazmaç üzerinden yapılarak hızlandırılabilinir.Mesajlar alıcı tarafından alınmadığında postakutusu (mailbox) adı verilen yapılarda depolanır. Depolanan mesajlar, alıcı tarafından alınır.Mesajlaşmada, ilk önce gönderici mesajı göndermek için send() metodunu çalıştırır ve süreç bloklanır. receive() metodu bir alıcı tarafından çalıştırıldığı anda, mesaj tamponlama yapılmadan alıcıya geçirilir. Aynı şekilde, receive() metoduda mesaj yoksa gelene kadar bloklanır. Bu yönteme randevu(rendezvous) denilir.Bariyerler (Barriers)Bir grup işin yaptıkları işlerde aşamadan aşamaya geçerken birbirlerini beklemelerini sağlar. Bir süreç bariyeri geçince bloklanır. Bariyeri geçen her süreç bloklanır. Son süreç de geçtiğinde hepsi tekrar çalışırlar.Örneğin; bir milyon x bir milyon boyutundaki matrisi çok işlemcili bir sistemde belirli bir işe tabi tutulsun. n+1. adım n. adım bitmeden gerçekleşmemelidir.image015Süreçler Arası İletişim(IPC-Inter Process Communication)