1-rasm. Soket yordamida aloqa o’rnatish.
Masofaviy protsedura chaqiruvi (Remote Procedure Calls – RPC) birinchi marta Sun firmasi tomonidan taklif etilgan va Solaris OTda qo’llanilgan. RPC – tarmoq tizimidagi jarayonlar o’rtasida protseduralar chaqiruvining abstraktsiyasi. Bu quyidagi g’oyaga asoslanadi. Klient qismida (tomonidan) qopqoq (proxy, stub) yaratiladi – serverda joylashgan haqiqiy protsedura bilan aloqa o’rnatish uchun lokal protsedura bajariladi. Klient qismidagi stub serverda joylashadi va ularni serverga tarmoqdan uzatish uchun parametrlari (marshals) o’rnatiladi. Bu yerda muammo shundaki, klient va serverda adreslash turlicha bo'lib, biron bir ma'lumotning xotira manzilini bitta xostdan boshqasiga o'tkazish mantiqsiz.
Shuning uchun ham ma'lumot uzatishning maxsus shaklidan - baytlar ketma-ketligi oqimidan foydalanish tavsiya etiladi. Server tomonidagi stub xabarni qabul qiladi, parametrlarni ochiqlaydi, ularni normal holatga o'tkazadi va protsedurani serverda bajaradi.
Masofaviy protsedura chaqiruvini tashkil etish sxemasi 2-rasmda tasvirlangan.
2-rasm. RPCning bajarilishi.
Masofaviy usulni chaqirish (Remote Method Invocation – RMI) – RPC ga o’xshash Java-texnologi yasidagi mexanizm, lekin ob’ektga yo’naltirilgan shaklda.
RMI bitta kompyuterdagi Java dasturiga masofaviy ob'ekt usulini chaqirishga imkon beradi.
RMI sxemasi 3-rasmda tasvirlangan.
3-rasm. Java da masofadan usulni chaqirish.
Masofaviy chaqiruvlar uchun parametrlar va natijalarni tartibga solish sxemasi 4-rasmda tasvirlangan.
4-rasm. Masofadan chaqiruvda parametrlarni sozlash.
Bir oqimli va ko’p oqimli jarayonlar Afsuski, hozirgi kunga qadar dasturlarni ishlab chiqishda ko'plab dasturchilarning fikri mutlaqo ketma-ketlikda hisoblash bo'lib kelmoqda. Parallelashtirish, xususiy holda, ko’poqimlilikning keng imkoniyatlari hisobga olinmaydi. Ketma-ket (bir oqimli) jarayon – bu faqat bitta boshqaruv oqimi (control flow)ga ega bo'lgan, uning buyruq hisoblagichining o'zgarishi bilan tavsiflanadigan jarayon. Oqim (thread) – bu ba'zi bir jarayondan boshlanadigan va ota-jarayoni bilan bir xil manzil maydonida bajariladigan parallel jarayonning o'ziga xos turi hisoblanadi. Jarayonlarning bir oqimli va ko’p oqimli tashkil etish sxemasi 5-rasmda tasvirlangan.
5-rasm. Biroqimli va ko’poqimli jarayonlar.
Sxemadan ko’rinib turibdiki, bir oqimli jarayon odatdagidek kod, asosiy xotiradagi ma'lumotlar va u ishlaydigan fayllardan foydalanadi. Jarayon, shuningdek, ba'zi registr qiymatlari va uning protseduralari bajariladigan stekdan foydalanadi. Ko'p oqimli jarayon biroz murakkabroq tashkil etiladi. Unda bir nechta parallel oqimlar mavjud bo'lib, ularning har biri uchun OT o'z stekini yaratadi va o'z registrlari qiymatlarini saqlaydi. Oqimlar umumiy asosiy xotirada ishlaydi va ota-jarayoni bilan bir xil manzil maydonidan foydalanadi, shuningdek jarayon kodlari va fayllarni almashadi.
Ko’p oqimli ko’proq afzalliklarga ega:
· Tezlikning oshishi (oddiy jarayonlarni qo’llash bilan solishtirganda). Multithreading umumiy virtual xotira maydonida ishlaydigan yengil jarayonlar (lightweight processes)dan foydalanishga asoslangan. Ko’poqimli jarayonlar tufayli klassik UNIX tizimiga xos har bir shell buyrug'ida ham samarasiz vaziyatlar kelib chiqmaydi (hatto joriy katalog tarkibini aks ettirish buyrug'i ls ham alohida jarayon sifatida bajariladi va o'z manzil maydoniga ega bo’ladi). Yengil jarayonlardan farqli o'laroq, oddiy jarayonlar (o'zlarining manzil maydoniga ega) ko'pincha og'irvaznli (heavyweight) deb ataladi.
· Umumiy resurslarni qo’llashi. Bitta jarayon oqimlari umumiy xotira va fayllardan foydalanadi.
· Tejamkorlik. Yuqorida aytib o'tilgan sabablarga ko'ra ko’poqimlilik tufayli xotirani sezilarli darajada tejashga erishiladi. Bundan tashqari, vaqtni tejashga erishiladi, chunki kontekstni yengil jarayonga o'tkazish, bu uchun faqat stekni o'zgartirish va registr qiymatlarini tiklash kerak, oddiy jarayonga qaraganda ancha tezroq bajariladi.