فراخوانی رویه از راه دور (RPC : Remote Procedure Call)
توضیحات
در جلسه بیست و دوم درس سیستمعامل پیشرفته دکتر حقیقت که از مهمترین دروس تخصصی آزمون دکترای مهندسی کامپیوتر در گرایش نرمافزار و گرایش شبکه و رایانش است، دومین جلسه از فصل چهارم این درس با عنوان «ارتباطات» تدریس میشود. موضوع این جلسه فراخوانی رویه از راه دور (RPC : Remote Procedure Call) میباشد. بسياری از سيستمهای توزيعشده، براساس تبادل صريح پيامها بين فرايندها بنا نهاده شدهاند. اما مسئله اين است كه با وجود اهميت شفافيت دستيابی در سيستمهای توزيعشده، رويههای send و receive، اصلاً ارتباطات را پنهان نمیكنند. اين مشكل، مدت ها پيش شناخته شد، ولی كار چندانی روی آن انجام نشد تا اينكه Birrell و Nelson در سال 1984 مقالهای منتشر كردند و در آن رويكرد كاملاً متفاوت فراخوانی رویه از راه دور (RPC : Remote Procedure Call) را برای اداره كردن ارتباطات مطرح نمودند. البته با وجود اينكه ايده پيشنهادی آنها در نگاه اول ساده به نظر میرسد، اما مفاهيم پيچيدهای در پشت آن خوابيده است. در اين جلسه، مفهوم پيادهسازی و نقاط ضعف و قوت RPC بررسی خواهد شد. در يک کلام، ايده RPC این است كه برنامهها اجازه فراخوانی رويههای موجود در ماشين ديگر را داشته باشند، درست همان گونه که فراخوانی رويههای معمولی (سنتی) انجام میشود. ابتدا سه مشکل نداشتن حافظه مشترک و همگن نبودن ماشین ها و خرابی ها در راه پیادهسازی RPC مطرح میشود. سپس انواع پاس کردن پارامترها در فراخوانی ها از جمله فراخوانی با مقدار (call-by-value) و فراخوانی با ارجاع (call-by-reference) و فراخوانی با كپی/بازيابی (call-by-copy/restore or call-by-value/result) و نقش پشته و حافظه مشترک در آنها بررسی خواهد شد. سپس stubهای مشتری و سرور (Client Stub and server stub) و نقش کامپایلرهای سیستم های توزیع شده در تولید آنها و نحوه پنهان کردتن ارتباطات توسط آنها ارائه خواهد شد. بعد از آن مراحل دقیق و جزئیات فراخوانی رويه راه دور ارائه میشود. سپس در مورد تبادل پارامترها با مقدار و بعد از آن درباره ارسال پارامترهای ارجاع از طریق تبدیل فراخوانی با ارجاع به فراخوانی با كپی/بازيابی به تفصیل بحث خواهد شد. همچنین موضوع ارسال ساختمان داده ها و گرافهای پیچیده صحبت میشود. سپس انواع RPC ناهمگام شامل Asynchronous RPC و تركيب دو RPC ناهمگام یا RPC همگام معوقه (deferred synchronous RPC) و نیز RPC يك طرفه (one-way RPC) شرح داده خواهند شد. در انتها DCE RPC به عنوان یک مثال و case مورد مطالعه قرار خواهد گرفت. نقش کامپایلر IDL (Interface definition Language) در ایجاد stub های مشتری و سرور و نیز نحوه انقياد مشتری به سرور در DCE صحبت خواهد شد. نقش ديمِن DCE و سرور دايركتوری در این انقیاد مورد بررسی قرار خواهد گرفت. همچنین قابليت اطمينان در DCE بررسی خواهد شد.