1 / 29

مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir

سیستم های توزیع شده فصل 4– جلسه 11. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. سرفصل مطالب. مقدمات فراخوانی تابع از راه دور ( RPC ) ارتباط مبتنی بر پیغام ( MOC ) ارتباط مبتنی بر استریم ( SOC )

simone
Download Presentation

مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. سیستم های توزیع شدهفصل 4– جلسه 11 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92

  2. جدول زمانبندی درس

  3. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  4. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  5. مقدمه • ارتباط بین فرآیندی (Inter-Process Communication, IPC) در سیستم های توزیعی: • قلب یک سیستم توزیعی است. • راه های مختلفی برای آن وجود دارد. • توسط تبادل پیغام ها پیاده سازی می شود که مشکل تر از سیستمهای حافظه مشترک است. • زیرساخت ارتباطی، شبکه اینترنت است که نامطمئن است. • در این فصل: • بررسی پروتکل های ارتباطی طبق مدل لایه ای • سه نوع از روشهای ارتباط فرآیندها • فراخوانی تابع از راه دور (RPC) • میان افزار مبتنی بر پیغام (MOM) • ارتباط مبتنی بر استریم • بررسی ارتباط چندپخشی

  6. مقدمه (2) • RPC • بسیاری از پیچیدگی های پاسکاری پیغام (message passing) را پنهان می کند. • برای مدل کلاینت-سرور مناسب است. • سیستم های توزیعی لزوماً C-S نیستند. • ارتباط مبتنی بر پیغام • پیغام های سطح پایین در شبکه ارتباطی (اینترنت) اغلب مناسب نیستند. • به خاطر عدم شفافیت توزیع • راه حل: تعریف مدل سطح بالای ارتباطی مبتنی بر پیغام • افزایش محبوبیت کاربردهای چندرسانه ای • ارتباط مبتنی بر استریم برای جریانهای پیوسته چندرسانه ای

  7. پروتکل های لایه ای • با نبود حافظه مشترک • ارتباط بین فرآیندها از طریق پروتکل های سطح پایین انجام می شود. • پروتکل های لایه ای • قراردادهایی بین طرفین هستند که از جزئیات سطح پایین برای انتقال یک بیت تا جزئیات سطح بالا برای انتقال اطلاعات را شامل می شوند. • مدلمرجع OSI • سیستم باز سیستمی است که با هر سیستم باز دیگری، با استفاده از قوانین استانداردی که حاکم بر فرمت، محتوا و معنای پیغامها است، قادر به برقراری ارتباط است. • به این قوانین پروتکل می گویند. • دو نوع پروتکل های ارتباط • مبتنی بر اتصال (connection-oriented) • بدون اتصال (connectionless)

  8. پروتکل های لایه ای (2) • مدل 7 لایه ای OSI • هر لایه با جنبه های خاصی از ارتباط سروکار دارد. • واسط ها مجموعه ای از دستورات هستند که سرویس ارائه شده به لایه بالاتر را بیان می کنند.

  9. پروتکل های لایه ای (3) • یک پیغام به گونه ای که در شبکه منتقل می شود:

  10. پروتکل های لایه ای (4) • لایه های سطح پایین • لایه فیزیکی • لایه پیوند داده • لایه شبکه • لایه میانی • لایه انتقال • لایه های سطح بالا • لایه نشست • لایه ارائه • لایه کاربرد شبکه زیرساخت شبکه زیرساخت را قابل استفاده برای کاربر می کند. پروتکل هایی مانند TCP، UDP، RTP پروتکل هایی که به کاربرد وابسته هستند. پروتکل هایی مانند HTTP، FTP در اینترنت گسترده است، شامل: برنامه های کاربردی، پروتکلهای وابسته به کاربرد و پروتکلهای مستقل از کاربرد

  11. پروتکل های میان افزار • میان افزار در مدل لایه ای کجا قرار می گیرد؟ • میان افزار برنامه ای است که بیشتر در لایه کاربرد قرار می گیرد ولی مستقل از کاربرد و عمومی تر است. • مثالهای زیر به کاربرد خاصی وابسته نیستند و می توان آنها را در میان افزار گنجاند: • پروتکلهای امنیتی که برای احراز هویت و اجازه استفاده می شوند. • پروتکل های توزیعی commit مربوط به تراکنشها (یا همه تراکنش یا هیچ) • پروتکل های توزیعی قفل برای محافظت یک منبع • پروتکل های میان افزار، سرویس های لایه های بالا را نیز پشتیبانی می کنند. • فراخوانی تابع-شیء از راه دور، سنکرون کردن استریم برای داده های بی درنگ، چندپخشی مطمئن

  12. پروتکل های میان افزار (2) • مدل مرجع تطبیق یافته: • برخی پروتکل های میان افزار را می توان در لایه انتقال نیز قرار داد. پروتکل های مستقل از کاربرد سرویسهای لایه انتقال نیز می توانند جزء سرویسهای میان افزار قرار گیرند.

  13. پروتکل های میان افزار (3) • در ادامه فصل: • چهار مورد از سرویس های ارتباطی میان افزار که سطح بالا هستند را بررسی خواهیم کرد. • فراخوانی تابع از راه دور • سرویس های صف بندی پیغام • پشتیبانی از ارسال/دریافت رسانه ها از طریق استریم ها • چندپخشی • مواردی مانند احراز هویت، پروتکل های قفل و commit هر کدام فصل های جداگانه دارند.

  14. انواع ارتباطات • میان افزار به عنوان یک سرویس اضافی در ارتباط کلاینت-سرور • سنکرون سازی در سه نقطه کلاینت تا دریافت جواب منتظر میماند یا سنکرون یا delivery synchronization 3 1 2 کلاینت مطمئن شود درخواست به سرور رسیده یا delivery synchronization کلاینت منتظر پاسخ نماند یا آسنکرون یا send synchronization

  15. انواع ارتباطات (2) • دسته بندی ارتباط از منظر دیگر: • ماندگار (Persistent) • پیغام های ارائه شده به سیستم توسط میان افزار ذخیره شده تا به گیرنده برسد. • درشکل اسلاید قبل، توسط ابزارهای ذخیره سازی • گذرا (Transient) • پیغام تا وقتی در سیستم ذخیره می شود که فرستنده و گیرنده هر دو زنده باشند. • مثال: پروتکل های لایه انتقال، مسیریابها از روش store-&-forward استفاده می کنند. • مثال: RPC اکثراً حالت های گذرا را پشتیبانی می کند هرچند برخی نسخه های آن ماندگاری را نیز پیاده سازی کرده اند.

  16. انواع ارتباطات (3) • دسته بندی دیگر: • سنکرون • فرستنده پس از ارسال بلوکه می شود تا یک رویدادی رخ دهد. • سنکرون سازی در سه نقطه امکان پذیر است. • آسنکرون • فرستنده پس از ارسال پیغامش به کار خود ادامه می دهد. • به طور ضمنی باید پیغام در سیستم ذخیره شود. • دسته بندی آخر: • گسسته • مبتنی بر جریان • ترکیب حالت های ذکر شده: • ارتباط ماندگار با آسنکرون: در سیستم های مبتنی بر صف پیغام (message queuing systems) • ارتباط گذرا با سنکرون: در RPC

  17. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  18. عملکرد پایه RPC • ایده اصلی RPC: • یک برنامه در ماشین A بتواند تابع خاصی را روی ماشین B صدا بزند. • فرآیند صدازننده (calling) در A معلق می شود و اجرای تابع صدا زده شده در B انجام می شود. • عملیات پاسکاری پیغام توسط برنامه نویس دیده نمی شود. • مشکلات RPC: • به دلیل اینکه توابع روی ماشین های مختلفی اجرا می شوند، فضای آدرس های متفاوتی دارند. • پارامترها و مقادیر برگشتی باید منتقل شوند. • ممکن است هر کدام از دو ماشین دچار خرابی شوند.

  19. فراخوانی تابع مرسوم • مثال: count=read(fd, buf, nbytes)

  20. فراخوانی تابع مرسوم (2) • روشهای پاس دادن پارامترها • Call-by-value • مقدار پارامتر در پشته کپی می شود. مانند: fd و nbytes • از نظر تابع فراخوانی شده، پارامتر مقداری یک متغیر با مقدار اولیه مشخص است. ممکن است مقدار آن را تغییر دهد ولی در تابع صدازننده مقدارش همان مقدار اولیه باقی می ماند. • Call-by-reference • اشاره گر (آدرس) به یک متغیر. مانند: buf و آرایه ها در C • آدرس متغیر در پشته ذخیره می شود. مقدار متغیر تغییر می کند. • Call-by-copy/restore • مقدار متغیر در پشته ذخیره می شود ولی پس از اتمام کار تابع، مقدار تغییر یافته روی مقدار اولیه بازنویسی می شود. • بیشتر مواقع شبیه call-by-reference می شود. • در فراخوانی از راه دور این روش به کار می آید چون اشاره گر جواب نمیدهد.

  21. استاب های کلاینت و سرور • می خواهیم RPC، شفاف باشد: • یعنی مشخص نباشد که این فراخوانی از راه دور است و تا حد امکان محلی به نظر برسد. • فراخوانی توسط استاب انجام می شود: • استاب به سیستم عامل نمی گوید که این فراخوانی را انجام دهد. • استاب فراخوانی را به صورت پیغام بسته بندی می کند. • استاب پیغام بسته بندی شده را تحویل سیستم عامل می دهد. • سیستم عامل پیغام را ارسال می کند.

  22. استاب های کلاینت و سرور (2) • استاب سمت سرور نیز مشابه استاب سمت کلاینت است: • قطعه کدی است که پیغامهای دریافت شده را به صورت فراخوان های محلی در می آورد. • تابع را به صورت محلی اجرا کرده و نتیجه را آماده کرده و به صورت پیغام بسته بندی می کند.

  23. استاب های کلاینت و سرور (3) • خلاصه مراحل کار: 1. تابعی که در کلاینت در حال اجراست، استاب کلاینت را به صورت عادی صدا می زند. 2. استاب کلاینت پیغام را می سازد و توابع سیستم عامل را به صورت محلی صدا می زند. 3. سیستم عامل کلاینت پیغام را به سیستم عامل راه دور ارسال می کند. 4. سیستم عامل راه دور، پیغام را به استاب سرور تحویل می دهد. 5. استاب سرور، پارامترها را باز کرده و به توابع سرور می دهد.

  24. استاب های کلاینت و سرور (4) • شکل مراحل کار

  25. استاب های کلاینت و سرور (5) • ادامه مراحل کار: 6. سرور عملیات موردنظر را انجام داده و نتایج را به استاب برمی گرداند. 7. استاب سرور نتایج را در یک پیغام قرار داده و توابع سیستم عامل را به صورت محلی صدا می زند. 8. سیستم عامل سرور پیغام را به سیستم عامل کلاینت می فرستد. 9. سیستم عامل کلاینت پیغام را به استاب کلاینت تحویل می دهد. 10. استاب نتایج را باز کرده و به کلاینت تحویل می دهد.

  26. پاس دادن پارامترها • Parameter marshaling • در ساخت پیغام در RPC، گذاشتن پارامترها در پیغام • مثال: add( i, j )

  27. پاس دادن پارامترها (2) • تا زمانی که ماشین های دو طرف یکسان هستند و پارامترها مقادیر اسکالر مشکلی پیش نمی آید. • مشکلات • نوع ماشین های دو طرف متفاوت باشد. • IBM mainframe ها سیستم کاراکتری EBCDIC دارند و کامپیوترهای شخصی IBM سیستم ASCII دارند. • نحوه نمایش داده ها متفاوت باشد. • ماشین های Sun SPARC از نوع big endian و ماشین های اینتل از نوع Little endian هستند. • انواع داده های مختلفی پشتیبانی شود.

  28. پاس دادن پارامترها (3) • پیغام اولیه در پنتیوم • پیغام پس از دریافت در SPARC • پیغام پس از تبدیل • شماره های کوچک در مربعها نشان دهنده آدرس ها هستند.

  29. پاس دادن پارامترهای اشاره گری • اشاره گرها (ارجاع ها) چگونه پاس داده می شوند؟ • اشاره گر فقط در فضای آدرس فرآیندی که تعریف می شود معتبر است. • راه حل 1: اجتناب از پاس دادن اشاره گرها و داده ساختارهای پیچیده • راه حل 2: وقتی کلاینت اندازه آرایه را می داند، خود آرایه را در پیغام کپی کرده و ارسال می کند. • استاب سمت سرور این مقدار را به یک اشاره گر تبدیل کرده و به سرور می دهد. • تغییرات سمت سرور در این متغیر اعمال شده و در پیغام نوشته می شود. • در این روش، call-by-reference توسط call-by-copy/restore جایگزین می شود. • بهبود راه حل 2: اگر استاب بداند که این آرایه پارامتر ورودی به سرور است یا خروجی، می تواند یکی از کپی ها را انجام ندهد. • با وجود این راه حل ها، هنوز هم پاس دادن اشاره گرها و آرایه های بزرگ کار راحتی نیست.

More Related