1 / 32

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

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

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

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

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

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

  5. سرورهای توزیع شده • سرورهای توزیع شده: • مجموعه ای دینامیک از ماشین ها با نقاط دسترسی قابل تغییر که از دید بیرونی یک ماشین دیده می شود. • ایده اصلی: • جمع کردن تعدادی ماشین تحت عنوان یک کلاستر • عدم وابستگی به یک ماشین • مطمئن تر و پایدارتر از داشتن یک ماشین قوی با نرخ خرابی کم • راه حل: • ایجاد یک نقطه دسترسی پایدار • استفاده از ایده تحرک در IPv6 یا Mobile IPv6 (MIPv6)

  6. سرورهای توزیع شده (2) • عملکرد MIPv6: • هر گره موبایل یک شبکه خانگی دارد. • home network • گره در حالت عادی در این شبکه است و آدرس پایدار دارد. • home address (HoA) • مسیریاب منتسب به این شبکه عامل خانگی نام دارد. • home agent • وقتی گره به شبکه دیگری می رود، یک آدرس موقتی، دریافت می کند. • care-of-address (CoA) • CoA به شبکه خانگی گره فرستاده می شود. • گره های دیگری که با این گره موبایل در تماسند فقط آدرس HoA آن را می دانند و ارتباط با آن فقط از طریق شبکه خانگی امکان پذیر است.

  7. سرورهای توزیع شده (3) • شکل MIPv6 برگرفته از cise.ufl.edu/~nemo Server Foreign Agent Home Agent Home Network Foreign Network Server moves to another network Internet Client connects to service at known, stable address Server registers with foreign agent Client

  8. سرورهای توزیع شده (4) • تعمیم MIPv6 به سرورهای توزیع شده: • یک آدرس ثابت و مشخص به نقطه دسترسی داده می شود به نام آدرس دسترسی یا contact address • این آدرس تا زمان زنده بودن سیستم برقرار است و از دنیای بیرون از این طریق ارتباط برقرار می شود. • در هر زمان، یکی از ماشین ها می تواند نقطه دسترسی باشد ولی این نقش می تواند روی بقیه نیز قرار گیرد ولی با همان آدرس دسترسی. • نقطه دسترسی، آدرس فعلی خودش را به عنوان CoA به عامل خانگی می دهد. بنابراین همه ترافیک به این نقطه دسترسی هدایت می شود. • اگر یک ماشین که نقطه دسترسی است خراب شود، دیگری جایگزین می شود و فقط آدرس خود را به عنوان CoA به عامل خانگی می دهد. • مشکل: • عامل خانگی یا همان نقطه دسترسی به عنوان گلوگاه ترافیک ورودی هستند.

  9. سرورهای توزیع شده (5) • یکی از امکانات MIPv6 به نام بهینه سازی مسیر (route optimization): • یک گره موبایل با آدرس خانگی HA آدرس موقتی خود به نام CA را به عامل خانگی خود می فرستد. • عامل خانگی می تواند آدرس CA را به کلاینت دیگری بفرستد که با آن تماس بگیرد که زوج (HA, CA) را نگهداری می کند. • بنابراین ارتباط مستقیماً با CA انجام می شود. • استفاده از بهینه سازی مسیر در سرورهای توزیع شده برای اینکه کلاینتها با یک سرور تماس بگیرند.

  10. سرورهای توزیع شده (6) • بهینه سازی مسیر در سرورهای توزیع شده کلاینتها فکر میکنند با یک سرور در ارتباطند در حالی که با سرورهای مختلف در ارتباطند و آدرسهای CA آنها از طریق HA در دسترس است. AP یا HA اینجا نشان داده نشده است.

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

  12. مهاجرت کد • تا اینجا ارسال داده ها در سیستم های توزیعی مدنظر بوده است. • گاهی اوقات ارسال برنامه ها و کدها حتی در حین اجرا نیز لازم می شود. • در سیستم های توزیعی نامتجانس این کار سخت است. • به طور کلی هزینه زیادی دارد. • مهاجرت کد راحت تر از مهاجرت فرآیند است. • در سیستم های توزیعی، مهاجرت کد معمولاً به فرم مهاجرت فرآیند است به گونه ای که کل فرآیند از یک ماشین به ماشین دیگر برده می شود.

  13. دلایل مهاجرت کد 1. بهبود کارایی • اگر فرآیندها را از ماشین های با بار کاری زیاد به ماشین هایی با بار کاری کمتر بفرستیم، کارایی افزایش می یابد. • معیارهای بار کاری: صف پردازنده، گذردهی پردازنده، ... 2. کاهش ارسال/دریافت ها • مثال: یک کلاینت و سرور با پایگاه داده بزرگ که کلاینت تعداد زیادی جستجو انجام می دهد. به جای ارسال تعداد زیادی درخواست، کد منتقل شود و نتیجه نهایی برگردانده شود. هزینه ارتباطات بسیار کم می شود. • برعکس، جدول یا فرمی باید از طرف کلاینت پر شود تا به دستورات پایگاه داده ای تبدیل شود، سرور آن را می فرستد و نتیجه نهایی برگردانده می شود. 3. موازی سازی • مثال: کلاینتی که می خواهد روی سرورهای مختلف جستجو انجام دهد. قطعه کدی به نام عامل متحرک از سایتی به سایت دیگر حرکت می کند.

  14. دلایل مهاجرت کد (2) 4. انعطاف پذیری • تقسیم برنامه کاربردی به بخش هایی و تصمیم گیری در مورد اینکه هر بخش کجا باید اجرا شود. • مدل های مختلف کلاینت-سرور که در فصل 2 گفتیم. 5. پیکربندی دینامیک • مثال: کلاینتی که می خواهد با سروری ارتباط برقرار کند، اگر نیاز به پروتکل های خاصی داشته باشد، این پروتکل ها باید از قبل پیاده سازی شده باشند (استاتیک). • اگر کلاینت بخواهد با سرورهای مختلفی در ارتباط باشد باید با پروتکل های مختلفی با آنها صحبت کند. آیا باید همه پروتکل ها را بداند؟ • راه حل: گرفتن پروتکل ها یا کد آنها از سرور یا از یک انبار کد، به این ترتیب کلاینت حتی با پروتکل هایی که نمی داند نیز می تواند ارتباط برقرار کند.

  15. دلایل مهاجرت کد (3) • ادامه دلیل 5: • کد فقط در موقع موردنیاز آورده می شود. • تا زمانی که واسط استاندارد هستند می توانیم پروتکل C-S و پیاده سازی آن را به گونه ای که می خواهیم تغییر دهیم. • مشکلات امنیتی باید در نظر گرفته شوند. گرفتن این کد خود نیاز به پروتکل استاندارد دارد.

  16. مدل های مهاجرت کد • عبارت مهاجرت کد، گستره وسیعتری از کد را شامل می شود. • شامل مهاجرت برنامه و اجرای آن در مقصد است. • یک فرآیند سه قسمت دارد: • قسمت کد (code segment) • شامل مجموعه دستورات برنامه • قسمت منابع (resource segment) • شامل اشاره گر به منابع خارجی موردنیاز برنامه مثل فایلهای دیگر، ابزارها و فرآیندهای دیگر • قسمت اجرایی (execution segment) • برای ذخیره قسمت اجرایی فعلی برنامه شامل داده های برنامه، پشته و شمارنده برنامه. • ضعیف ترین حالت مهاجرت این است که سیستم فقط مهاجرت قسمت کد را پشتیبانی کند.

  17. مدل های مهاجرت کد (2) • انواع جابه جایی ها: • جابه جایی ضعیف (weak mobility) • فقط کد جابه جا می شود به اضافه مقادیر اولیه داده ها. • برنامه جابه جا شده از یکی از قسمتهای مشخص شده شروع می شود. • مثال: اپلت جاوا که همیشه از ابتدا شروع می شوند. • مزیت: سادگی • جابه جایی قوی (strong mobility) • قسمت اجرایی نیز قابل جابه جایی است. • برنامه در حال اجرا رامی توان متوقف کرده، آن را جابه جا و اجرای آن را دوباره از سر گرفت (resume execution). • عمومی تر از جابه جایی کد است ولی مشکلتر است.

  18. مدل های مهاجرت کد (3) • انواع مهاجرت ها • آغاز شده توسط فرستنده (sender-initiated) • مهاجرت توسط ماشینی آغاز می شود که کد روی آن در حال اجراست. • مثال: آپلود کردن برنامه ای توسط فرستنده روی یک سرور محاسباتی • مثال: ارسال برنامه از طریق اینترنت روی یک سرور پایگاه داده ای وب برای انجام پرس و جو • آغاز شده توسط گیرنده (receiver-initiated) • ماشین مقصد برای مهاجرت کد پیش قدم می شود. • مثال: اپلت های جاوا • مقایسه • حالت دوم ساده تر از حالت اول است. • مثال: در ارتباط بین C-S، معمولاً کد از طرف کلاینت ها مهاجرت داده می شود که نیازمند احراز هویت و ثبت نام کلاینت در سرور است. • به این دلیل که کلاینت نیازمند دسترسی به کدها و منابع سرور است. • برعکس، سرور علاقمند به منابع کلاینت نیست و معمولاً برای افزایش کارایی این کار از طرف سرور صورت می گیرد.

  19. مدل های مهاجرت کد (4) • در حالت جا به جایی ضعیف، کد مهاجرت شده: • در فرآیند مقصد (target process) اجرا می شود. • مثال: اپلت های جاوا که توسط مرورگرهای وب دانلود می شوند در همان فضای آدرس دهی مرورگر اجرا می شوند. • فایده: نیازی به شروع فرآیند جدید نیست. • مشکل: فرآیند مقصد باید محافظت شود. • در فرآیند جداگانه ای (separate process) اجرا می شود. • حل مشکل محافظت از فرآیند مقصد، با اجرای یک فرآیند جدید توسط سیستم عامل • با این حال باز هم محافظت از منابع باید انجام شود.

  20. مدل های مهاجرت کد (5) • در حالت جابه جایی قوی، فرآیند مهاجرت داده شده: • فرآیندی در حال اجرا بوده که جا به جا شده است (migrate process). • فرآیند خودش را کپی می کند (clone process). • یک کپی از فرآیند اصلی گرفته می شود که روی ماشین مقصد و به صورت موازی با فرآیند اصلی اجرا می شود. • مثال: fork کردن در یونیکس و اجرای فرآیند فرزند روی ماشین دیگر • برای تأمین شفافیت در سیستم های توزیع شده مناسب است.

  21. مدل های مهاجرت کد (6)

  22. مهاجرت و منابع • یکی از مشکلات اصلی مهاجرت کد • قسمت منابع را نمی توان به راحتی جابه جا کرد. • مثال 1: فرآیندی که اشاره گری به پورت TCP دارد. این اشاره گر در قسمت منابع نگهداری می شود. اگر فرآیند جابه جا شود باید پورت را پس داده و درخواست پورت جدید در مقصد بدهد. • مثال 2: اشاره گر به فایل به وسیله URL می تواند در فرآیند هر ماشینی مورد استفاده قرار گیرد. • سه نوع قید (الزام، binding) برای فرآیند-منبع (process-to-resource) • قید با شناسه (binding by identifier) • قید با مقدار (binding by value) • قید با نوع (bind by type)

  23. مهاجرت و منابع (2) • قید با شناسه: قوی ترین نوع قیدگذاری • فرآیند، دقیقاً منبع مورد اشاره را لازم دارد (اشاره به منبع با شناسه آن منبع). نمی توان آن را با منبع دیگری جایگزین کرد. • مثال 1: استفاده از URL توسط یک فرآیند برای دسترسی به یک وب سرور یا فایل سرور • مثال 2: اشاره گر به نقطه دسترسی برای ارتباط • قید با مقدار: قیدگذاری ضعیف تر • فرآیند، مقدار منبع را لازم دارد. • اگر منبع دیگری همان مقدار را تأمین کند، مشکلی نیست. • مثال: برنامه ای که توابع کتابخانه ای مثلاً برای برنامه های C یا جاوا لازم دارد. خود فایل ها لازم نیستند بلکه مقدار آنها کافی است و ممکن است روی ماشین به صورت محلی باشند. • قید با نوع: ضعیف ترین نوع قیدگذاری • فرآیند فقط منبعی از نوع خاصی را لازم دارد. • مثال: اشاره گرها به وسایل جانبی مانند پرینتر، ...

  24. مهاجرت و منابع (3) • نوع دیگر قیدگذاری: • قید منبع-ماشین (resource-to-machine) • برحسب اینکه آیا منبع موردنظر به ماشین وصل شده یا می توان آن را جابه جا کرد. • سه نوع قیدگذاری فرآیند-منبع • منبع غیرمتصل (unattached resource) • منبع بسته شده (fastened resource) • منبع ثابت (fixed resource)

  25. مهاجرت و منابع (4) • منبع غیرمتصل: • می توان به راحتی آن را بین ماشین ها جابه جا کرد. • مثال: معمولاً فایل هایی هستند که مربوط به برنامه هستند و قابل جابه جایی هستند. • منبع بسته شده: • جابه جایی یا کپی کردن آن امکان پذیر است ولی با هزینه بالا. • مثال: پایگاه داده های محلی روی ماشین یا وب سایت کامل، هرچند در تئوری وابسته به ماشین نیستند ولی معمولاً جابه جایی آنها مشکل است. • منبع ثابت: • کاملاً به ماشین خاصی محدود شده اند و قابل جابه جایی نیستند. • مثال: ابزارهای متصل شده به ماشین ها یا نقاط دسترسی ارتباطی

  26. مهاجرت و منابع (5) • 9 حالت از ترکیب 3 x 3 حالت ذکر شده • GR (Global Reference): اشاره گری که می توان آن را از ماشینی به ماشین دیگر جابه جا کرد. • مثال: URL یا اشاره گر به یک حافظه مشترک • اشاره گر را به چیزی که آدرس دارد می توان منتسب کرد. • در واقع GR برای مواقعی است که نمی توانیم منبع را جابه جا کنیم.

  27. مهاجرت و منابع (6) • غیرمتصل: • بهترین راه حل: جا به جا کردن منبع، اگر منبع مشترک باشد بین چند فرآیند GR • بسته شده یا ثابت: • بهترین راه حل: GR • البته همیشه استفاده از GR کم هزینه نیست (2 مثال از پرهزینه بودن GR در کتاب)

  28. مهاجرت و منابع (7) • غیرمتصل: • ساده ترین حالت، راه حل: کپی یا جابه جا کردن منبع به مقصد، اگر مشترک باشد GR • ثابت: • مثال: حافظه مشترک بین چند فرآیند، بهترین راه حل: GR که می شود حافظه مشترک توزیع شده (DSM) • بسته شده: • مثال: کتابخانه های زمان اجرا، راه حل: معمولاً کپی هایی از آنها در ماشین مقصد وجود دارد. • مثال: حجم زیادی از داده هایی که باید منتقل شوند، راه حل: GR

  29. مهاجرت و منابع (8) • بدون توجه به قیدگذاری منبع-ماشین • RB کردن فرآیند به یک منبعی که به صورت محلی در دسترس است و از همان نوع است. • اگر آن منبع وجود نداشته باشد می توان آن را کپی یا جا به جا کرد یا GR به آن ایجاد کرد.

  30. مهاجرت در سیستم های توزیعی • فرضی که تا الآن برای انواع مهاجرت داشتیم: • سیستم ها متجانس (همسان) هستند. • در سیستم های توزیعی لزوماً اینگونه نیست. • مسأله مشابه مسأله قابلیت جابجایی است. • یک راه حل در اواخر 1970 • ایجاد کد مستقل از ماشین میانی برای یک ماشین مجازی • البته ماشین مجازی باید روی ماشین قابل اجرا باشد. • راه حل های جدیدتر: • Interpretation: زبان های اسکریپتی، استفاده از PVM که به طور مستقیم کد را تفسیر می کند. • Compilation: زبان های با قابلیت جا به جایی بالا مانند جاوا، تفسیر کردن کدهای میانی که توسط کامپایلر تولیده شده اند.

  31. مهاجرت در سیستم های توزیعی (2) • راه حل های باز هم جدیدتر: • عدم وابستگی به زبان های برنامه نویسی • مهاجرت دادن کل محیط برنامه • تقسیم کردن کدها به گونه ای که یک قسمت را بتوان منتقل کرد. • معمولاً فرمی از جابجایی قوی خواهد بود. • مثال: در سرور کلاسترها • فرض کنید یک مدیر سیستم بخواهد یک ماشین را shutdown یا جایگزین کند در حالی که می خواهد فرآیندهای در حال اجرای آن را نگه دارد. • کل محیط را فریز می کند، آن را به یک ماشین دیگر منتقل می کند، محیط را به حالت عادی بر می گرداند.

  32. پایان فصل 3

More Related