Bildiğimiz gibi, bir sistem mantıksal olarak kullanıcı uzayı ve çekirdek uzayı olmak üzere iki bölüme ayrılabilir.
Yani kullanıcı alanı, tüm uygulamalarımızın gerçekte çalıştığı alandır.
Yani işletim sistemi üzerinde çalıştırdığınız tüm uygulamalar aslında kullanıcı alanında çalışır.
Dolayısıyla, gönderen süreç olan A süreci ve alıcı süreç
olan B süreci aslında kullanıcı alanında çalışan süreçlerdir.
Çekirdek alanı, aslında sistem veya çekirdek hizmetlerinin çalıştığı alandır.
Örneğin, işletim sisteminiz, zamanlayıcınız, bellek yöneticiniz, aygıt sürücünüz ve
işletim sisteminin daha birçok hizmeti aslında çekirdek alanında çalışır.
Dolayısıyla, kullanıcı alanı işlemlerinden biri tarafından oluşturulan mesaj kuyruğu aslında
bir çekirdek kaynağıdır ve bir çekirdek alanı içinde oluşturulur.
A sürecinin bir mesaj kuyruğunun yaratıcısı olduğunu varsayalım.
Böylece A süreci çekirdek alanı içinde bir mesaj kuyruğu oluşturacaktır.
a süreci bir mesaj kuyruğu kimliği sağlamalıdır.
Bu durumda mesaj kuyruğu kimliğini bir dize olan x, y, z olarak aldık.
Yani A süreci mesaj kuyruğu olan bir çekirdek kaynağı yaratmıştır
ve bu mesaj kuyruğu bir çekirdek alanı içinde bulunmaktadır.
Artık bu mesaj kuyruğu gönderici işlem tarafından kullanılabilir.
Bu, süreçler arası iletişimi gerçekleştirmek için B sürecinin yanı sıra a sürecidir.
Böylece A süreci mesajı mesaj kuyruğuna atabilir
ve B süreci mesajı mesaj kuyruğundan alabilir.
Bu diyagramda, A süreci tarafından B sürecine bir mesaj kuyruğu aracılığıyla gönderilen
herhangi bir mesajın aslında ilk olarak süreç tarafından mesaj kuyruğuna kaydedildiğini görebilirsiniz.
A.
Yani A süreci tarafından üretilen mesaj aslında
kullanıcı alanından burada bulunan çekirdek alanına gider.
Daha sonra mesaj işletim sistemi tarafından mesaj kuyruğuna alınır.
Doğru.
Ve sonra işletim sistemi alıcı sürece gönderici tarafından
mesaj kuyruğuna bir mesaj yerleştirildiğini ve bu nedenle
B sürecinin mesajı mesaj kuyruğundan çıkarması gerektiğini bildirir.
Böylece B süreci, B sürecinin mesajı mesaj kuyruğundan alabildiğini görebilirsiniz.
Yani burada mesaj kuyruğunun A süreci ile B süreci
arasında bir iletişim köprüsü görevi gördüğünü ve bu iletişim
köprüsünün yani mesaj kuyruğunun aslında çekirdek uzayında bulunduğunu görebilirsiniz.
Mesajın çekirdek kaynaklarından sadece biri olmasının nedeni budur.
Ve kullanıcı alanı süreçleri aslında IPC'yi yürüten
bu çekirdek kaynağını kendi yararı için kullanıyor.
Bu diyagramda sadece bir mesaj kuyruğu gösterdim, ancak sistemde
birkaç süreç tarafından oluşturulan birden fazla mesaj kuyruğu olabilir.
Her mesaj kuyruğu, mesaj kuyruğu kimliği adı verilen ve genellikle bir dize olan benzersiz bir adla tanımlanır.
Şimdi de, kullanıcı alanı süreçleri tarafından mesaj kuyruğu oluşturmak ve
bu kuyruğu manipüle etmek için kullanılan bazı API'lerden bahsedelim.