Jarayonlarning bilvosita kommunikatsiyasi Bilvosita kommunikatsiyada (indirect communication) xabarlar pochta qutisi (mailboxes) yoki portlar (ports) – xabarlarni uzatish, saqlash va qabul qilish uchun mo’ljallangan tizimli tuzilmalar orqali uzatiladi va qabul qilinadi. Aniqlik uchun pochta qutisi atamasidan foydalanamiz.
Har bir pochta qutisi yagona identifikatorga ega.
Jarayonlar faqat ular umumiy pochta qutisiga ega bo’lsagina o’zaro aloqa o’rnatadi.
Aloqa chizig’i bu holatda quyidagicha xossalarga ega bo’ladi:
· Agar jarayonlar umumiy pochta qutisiga ega bo’lgandagina aloqa o’rnatiladi.
· Bitta jarayondan ko’plab jarayonlarga aloqa o’rnatish mumkin (ular yagona pochta qutisiga ega).
· Jarayonlarning har bir juftligi bir nechta aloqa chizig’iga ega (ya’ni, xabarlar turlicha pochta qutilariga uzatilishi mumkin).
· Aloqa yo’naltirilmagan yoki ikki yo’nalishli bo’lishi mumkin.
Bilvosita kommunikatsiya usulida jarayonlar quyidagi ko’rinishdagi amallar to’plamini qo’llaydi:
· Yangi pochta qutisini hosil qilish.
· Xabarlarni pochta qutisi orqali jo’natish (qabul qilish).
· Pochta qutisini o’chirish.
Asosiy kommunikatsiya amallar quyidagi ko’rinishlarga ega bo’ladi:
· send (A, message ) – xabarlarni A pochta qutisiga yuborish.
· receive (A, message ) – xabarlarni A pochta qutisidan qabul qilish.
Yuqoridagilardan ko’rinib turibdiki, jarayon-vakilining nomi yoki adresi qo’llanilmaydi, ularning o’rniga pochta qutisi nomi ishlatiladi.
Ushbu aloqa usulining mohiyati va xususiyatlarini yaxshiroq tushunish uchun quyidagi o'xshashlikni keltirish mumkin. Har kuni foydalanadigan barchamiz uchun tanish bo’lgan elektron pochtani tasavvur qiling. Sizda bir yoki bir nechta pochta qutilari (elektron pochta manzillari) mavjud va ularning har biri orqali elektron pochta xabarini yuborish mumkin. Elektron pochta xabarlarini qabul qilishda odatda "receive all" (barcha xabarlarni barcha manzillardan qabul qilish) rejimi o'rnatiladi, ya'ni ketma-ketlik asosida bir nechta aloqa liniyalari o'rnatiladi.
Bilvosita kommunikatsiya usulida jarayonlar xuddi shunday o’zaro aloqa qiladi. Mumkin bo'lgan muammolar ham aniq va ularni ikkala holat (bevosita va bilvosita kommunikatsiya)da ham hal qilish usullari: masalan, bitta manzil (pochta qutisi) ishlamasa, boshqasi orqali xabar yuborishga urinib ko'rish mumkin. Biroq, ba'zi bir farqlar mavjud: ma'lum bir pochta qutisi orqali elektron pochta xabarlarini yuborishda ham qabul qiluvchining elektron pochta manzili (email)ni aniq ko'rsatladi. Muammolarni keltirib chiqarishi mumkin bo'lgan jarayonlar bilan bunday usulda xabar almashishni tashkil etish mumkin emas.
Umumiy pochta qutisidan foydalanishda paydo bo’ladigan muammolar. Faraz qilaylik, P1, P2 va P3 jarayonlar umumiy A pochta qutisidan foydalansin. P1-jarayon xabar yuboruvchi, P2 va P3 jarayonlar xabarni qabul qiluvchi. Savol tug’iladi: qaysi jarayon xabarni qabul qiladi?
Ilmiyroq aytganda, ishonchsizlik va ishonchsizlikni keltirib chiqaradigan deterministik bo'lmagan vaziyat yuzaga keladi. Bu muammoni qanday hal qilish mumkin? Mumkin bo’lgan yechimlar:
· aloqani faqat ikkita jarayon bilan cheklash;
· faqat bitta jarayonga har bir lahzada qabul qilish amalini bajarishga ruxsat berish;
· tizimga mustaqil ravishda qabul qiluvchini aniqlashga ruxsat berish;
· xabarni yuboruvchiga qabul qiluvchining kimligi haqida xabar beriladi.
Ma’lumki, har bir yechim o’zining afzalliklari va kamchiliklariga ega.
Bilvosita kommunikatsiyada jarayonlar zaruriy sinxronlashdan voz kechishi mumkin. Muammo shundaki, xabarlar bloklangan (sinxron) holda yoki bloksiz (asinxron) holda uzatilishi mumkin. Mos ravishda asosiy send va receive amallari ham bloklangan yoki bloklanmagan bo’lishi mumkin.