1 / 30

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

سیستم های توزیع شده ادامه فصل 3 – جلسه 8. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. سرفصل مطالب. نخ ها ( threads ) مجازی سازی ( virtualization ) کلاینت ها و سرورها مهاجرت کد ( code migration ).

acacia
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. سیستم های توزیع شدهادامهفصل 3 – جلسه 8 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92

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

  3. سرفصل مطالب • نخ ها (threads) • مجازی سازی (virtualization) • کلاینت ها و سرورها • مهاجرت کد (code migration)

  4. سرفصل مطالب • نخ ها (threads) • مجازی سازی (virtualization) • کلاینت ها و سرورها • مهاجرت کد (code migration)

  5. سرفصل مطالب • نخ ها (threads) • نخ ها در سیستم های عادی • پیاده سازی نخ ها • نخ ها در سیستم های توزیعی • کلاینت های چندنخی • سرورهای چندنخی

  6. سرفصل مطالب • نخ ها (threads) • نخ ها در سیستم های عادی • پیاده سازی نخ ها • نخ ها در سیستم های توزیعی • کلاینت های چندنخی • سرورهای چندنخی

  7. پیاده سازی نخها • پیاده سازی نخها به دو صورت است • سطح کاربر (user level): در سطح برنامه کاربردی یا با استفاده از یک کتابخانه نخ • سطح سیستم (system level) یا سطح هسته: هسته در ایجاد و زمانبندی آنها دخالت دارد. • مزایای نخهای سطح کاربر: • ایجاد و از بین بردن نخها ساده و کم هزینه است. • سوئیچ کردن بین نخها با چند دستور قابل انجام است. • نرم افزاری برای مدیریت نخها در سطح کاربرthread package • عیب نخهای سطح کاربر: • یک فراخوان سیستم بلوک کننده نخ، کل فرآیند آن نخ را بلوکه می کند.

  8. پیاده سازی نخها (2) • راه حل: • استفاده از نخهای سطح هسته • عیب نخهای سطح هسته: • هرگونه عملیاتی روی نخ مستلزم یک فراخوان سیستم است • هزینه کار زیاد می شود. • هسته فکر میکند یک فرآیند فراخوان سیستم را انجام داده، چون خبری از نخهای سطح کاربر ندارد. بعد از فراخوان سیستم کنترل را به یک فرآیند دیگر می دهد و اجرای نخ فعلی قطع می شود. Thread management Thread management System call OS

  9. پیاده سازی نخها (3) • راه حل: • ترکیبی از نخهای سطح کاربر و سطح هسته استفاده شود. • تحت عنوان Light Weight Process (LWP) • یک LWP در متن یک فرآیند ایجاد می شود و می توان به ازای هر فرآیند چندین LWP داشت. • یک بسته مدیریت نخها در سطح کاربر نیز ارائه می شود تا عملیات ایجاد و از بین بردن نخها را انجام دهد. • امکاناتی برای همزمانی آنها مثل موتکس ها و متغیرهای شرطی نیز ارائه می دهد. • نکته مهم: بسته مدیریتی نخها در سطح کاربر است.

  10. پیاده سازی نخها (4) • LWP ها در سطح هسته اجرا می شوند و هر LWP به یک نخ سطح کاربر منتسب می شود. • در لینوکس، LWP همان نخ سطح هسته است. • بنابراین هسته می داند که هر LWP مربوط به یک نخ است. • ساخت LWP توسط یک فراخوان سیستم انجام می شود. • بنابراین درست کردن LWP ها توسط کاربر انجام می شود با یک فراخوان سیستم. عملیات همزمانی بین نخها تماماً توسط بسته مدیریتی و در سطح کاربر انجام می شود و هسته اصلاً درگیر این عملیات نمی شود. هسته تنها به ازای هر نخ در حال اجرا یک LWP اجرا می کند.

  11. پیاده سازی نخها (5) • مزایای ترکیب دو روش: • ایجاد، از بین بردن و همزمانی نخها کم هزینه است و دخالت هسته را لازم ندارد. • یک فراخوان سیستم بلوکی، کل فرآیند را بلوک نمی کند. • برنامه کاربردی نیازی ندارد که از LWP ها مطلع باشد بلکه با نخهای سطح کاربر ارتباط دارد. • LWP ها را می توان در سیستم های چندپردازنده ای به کار برد. اجرای LWP ها روی پردازنده های مختلف • عیب روش ترکیبی: • باید LWP ها ایجاد و از بین بروند که هزینه ای معادل نخهای سطح هسته دارند. • البته این عمل توسط سیستم عامل انجام می شود.

  12. شکل از نحوه اجرای LWP ها و نخهای سطح کاربر • منبع: http://docs.oracle.com/cd/E19455-01/806-5257/mtintro-72944/index.html

  13. پیاده سازی نخها (6) • روش دیگر: فعالسازی زمانبند (scheduler activation) • وقتی یک نخ فراخوان سیستم بلوک کننده انجام می دهد هسته یک فراخوانی رو به بالا به بسته مدیریتی نخها انجام می دهد تا زمانبند، نخ بعدی را انتخاب کند. • مزیت: • مدیریت LWP ها را به هسته واگذار می کند. • عیب: • ساختار لایه ای را نقض می کند. Thread management System call OS Up call

  14. مثال پیاده سازی نخها • در لینوکس: • نخهای سطح کاربر توسط کتابخانه pthread ایجاد می شوند. • LWP ها همان نخهای سطح هسته هستند. • تحت عنوان وظیفه (task) • عملیات خاصی نمی توان با آنها انجام داد. • به ازای هر مجموعه ای از نخهای سطح کاربر، مجموعه ای از LWP های متناظر در هسته وجود دارد. • اجرای دستور ps نیز در ترمینال نشان می دهد که:

  15. مثال پیاده سازی نخها (2) • فراخوان سیستمی در لینوکس برای ایجاد LWP • Clone • یک فرآیند ایجاد می کند که فرآیند فرزند زمینه اجرای مشترک با پدرش دارد. • زمینه اجرا: حافظه، file descriptorها و signal handler ها • شبیه fork() ولی عمومی تر از آن است. • مثال کد استفاده از clone در • http://www.linuxforu.com/2011/08/light-weight-processes-dissecting-linux-threads/

  16. سرفصل مطالب • نخ ها (threads) • نخ ها در سیستم های عادی • پیاده سازی نخ ها • نخ ها در سیستم های توزیعی • کلاینت های چندنخی • سرورهای چندنخی

  17. نخ ها در سیستم های توزیعی • انگیزه استفاده از چندنخی در سیستم های توزیعی • استفاده از فراخوان های سیستمی بلوک کننده بدون اینکه کل فرآیندی که نخ در آن اجرا می شود، بلوکه شود. • برای بیان ارتباطات به صورت نگه داشتن چندین اتصال منطقی در یک زمان • پیاده سازی در سمت • کلاینت • سرور

  18. کلاینتهای چندنخی • استفاده از چندنخی برای پنهان کردن تأخیرها • مثال: باز کردن صفحات وب، نخهای جداگانه برای برقراری اتصال و دریافت داده ها و خواندن آنها • باز کردن یک صفحه وب که شامل گرفتن عناصر مختلفی در آن صفحه است، نیازمند ایجاد یک اتصال TCP/IP به ازای هر عنصر صفحه است. • هر یک از این اعمال بلوک کننده هستند. • با این روش وقتی تعداد کلاینت ها زیاد می شود، سرور دچار اضافه بار می شود. • معمولاً وب سرورها تکرار شده هستند. • اتصال ها به کپی های مختلف و به صورت موازی ایجاد می شود. C1 Web Server C2 C3 C4

  19. سرورهای چندنخی • عمده مزایای روش چندنخی، در سمت سرور است. • طراحی سرورها با قابلیت بکارگیری موازی سازی برای رسیدن به کارایی بیشتر • با آمدن سرورهای چندپردازنده ای کارایی چندنخی بیشتر نشان داده می شود. • مثال: فایل سروری که روی عملیات دیسک، بلوکه می شود. • نختوزیع کننده درخواستهای ورودی را می خواند. • با آمدن درخواست جدید، سرور یک نخ کارگر راانتخاب کرده و کار را به آن محول می کند. • نخ کارگر یک فراخوان سیستمی بلوک کننده برای خواندن از دیسک انجام می دهد. • نخ توزیع کننده می تواند نخ کارگر دیگری را برای کاری دیگر انتخاب کند.

  20. سرورهای چندنخی (2) • سرور تک نخی: • Receive • Disk request • Disk reply • Reply to client • سرور چند فرآیندی: • چندین فرآیند سرور داخل یک ماشین (راه حل در قدیم) • کلاینت ها نمیدانند به کدام فرآیند سرور رجوع کنند بنابراین یک فرآیند هماهنگ کننده باید باشد. • سرور چندنخی: • مزیت نسبت به روش قبلی: سوئیچ کردن بین نخها ارزانتر است. • وجود حافظه مشترک • از نظر کارایی در دسترسی به دیسک این روش بهتر از چند فرآیندی است به این دلیل که کشینگ در روش قبلی از هم مستقل است در حالی که در چندنخی به دلیل حافظه مشترک در یک فضا انجام می شود. یعنی نخ ها می توانند از اطلاعات کش شده یکدیگر استفاده کنند.

  21. سرورهای چندنخی (3) • راه حل سوم: استفاده از ماشین حالت محدود • فراخوان های بلوکه کننده پیاده سازی و برنامه نویسی راحتتری دارند. • به جای بلوکه کردن، حالت ماشین را ذخیره میکند و به درخواست بعدی می رود. • می تواند با استفاده از وقفه ها باشد یا با استفاده از روش polling

  22. سرفصل مطالب • نخ ها (threads) • مجازی سازی (virtualization) • کلاینت ها و سرورها • مهاجرت کد (code migration)

  23. مقدمه • مجازی سازی • یک پردازنده می تواند یک دستور را از یک نخ یا از یک فرآیند اجرا کند. • با سوئیچ کردن بین نخها و فرآیندها می توان موازی سازی را شبیه سازی کرد. • می توان این شبیه سازی را به منابع دیگر نیز توسعه داد. • این ایده، پیشتر نیز مطرح بوده است. • نکته: نرم افزارها پایدارتر و طول عمرشان بیشتر از پلتفرم ها است. • Platform = H/W + OS + S/W • مجازی سازی از اینجا حاصل می شود که مایلیم نرم افزارها همچنان باقی بمانند حتی با تغییر پلتفرم • باید پلتفرم را به صورت مجازی تعریف کنیم.

  24. مجازی سازی در سیستم های توزیعی • یک سیستم توزیعی • یک واسط برنامه نویسی به نرم افزار سطح بالاتر ارائه می دهد. • تعریف مجازی سازی: • توسعه دادن یا جایگزین کردن یک واسط موجود به گونه ای که رفتار یک سیستم دیگر را تقلید کند.

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

  26. معماری ماشین های مجازی • انواع واسط ها • واسط بین H/W و S/W: شامل دستورات زبان ماشین، توسط هر برنامه ای می تواند صدا زده شود. • واسط بین H/W و S/W: شامل دستورات ماشین، فقط توسط برنامه های ممتاز (OS) صدا زده می شود. • واسطی شامل فراخوان های سیستمی که توسط سیستم عامل فراهم می شود. • واسطی شامل کتابخانه ها، تحت نام API (Application Programming Interface) 4 3 1 2

  27. معماری ماشین های مجازی (2) API: Application Programming Interface ABI: Application Binary Interface ISA: Instruction Set Architecture Ref.: J.E. Smith, R. Nair, “The Architecture of Virtual Machines,” Computer, Vol. 38, No. 5, May 2005, pp. 32-38.

  28. معماری ماشین های مجازی (2) • به دو صورت می توان مجازی سازی را انجام داد: • Process Virtual Machine (PVM): مجازی سازی اساساً برای یک فرآیند انجام می شود. • ایجاد یک سیستم زمان اجرایی که مجموعه دستورات انتزاعی را برای اجرای برنامه ها فراهم می آورد. • رفتار فراخوان های سیستمی نیز باید شبیه سازی شود. • مثال: Java runtime environment • به ازای هر فرآیند یک زمان اجرایی وجود دارد. در واقع می توان زمان اجرای سیستم های دیگر را نیز گذاشت و برنامه های دیگری را نیز اجرا کرد.

  29. معماری ماشین های مجازی (3) • روش دوم: • Virtual Machine Monitor (VMM): مانند VMware • ایجاد یک لایه کامل نرم افزاری که سخت افزار را بپوشاند. • مجموعه دستورات کامل سخت افزار را تأمین کند. • می توان چندین سیستم عامل داشت که به صورت مستقل و موازی یکدیگر روی یک پلتفرم اجرا می شوند. • به ازای مجموعه ای از فرآیندها یک سیستم زمان اجرایی ایجاد می شود. • این روش برای تعداد زیادی از برنامه های کاربردی قابل به کارگیری است. • این روش برای سیستم های توزیعی بسیار مناسب است.

  30. معماری ماشین های مجازی (4) • تفاوت PVM و VMM Ref.: J.E. Smith, R. Nair, “The Architecture of Virtual Machines,” Computer, Vol. 38, No. 5, May 2005, pp. 32-38.

More Related