Distributed Systems سیستم های توزیع شده فصل ،3 فرآیندها 1 سرفصل مطالب • نخ ها ( )threads • مجازی سازی ( )virtualization • کالینت ها و سرورها • مهاجرت کد.
Download
Report
Transcript Distributed Systems سیستم های توزیع شده فصل ،3 فرآیندها 1 سرفصل مطالب • نخ ها ( )threads • مجازی سازی ( )virtualization • کالینت ها و سرورها • مهاجرت کد.
Distributed Systems
سیستم های توزیع شده
فصل ،3فرآیندها
1
سرفصل مطالب
• نخ ها ()threads
• مجازی سازی ()virtualization
• کالینت ها و سرورها
• مهاجرت کد ()code migration
2
سرفصل مطالب
• نخ ها ()threads
• مجازی سازی ()virtualization
• کالینت ها و سرورها
• مهاجرت کد ()code migration
3
مقدمه
• تعریف فرآیند ()process
– برنامه در حال اجرا
• در سیستم عامل ،مدیریت و زمانبندی فرآیندها کار اصلی است.
– مانند ایجاد ،حذف ،سوئیچ... ،
– در سیستم های توزیعی مسائل دیگری نیز مطرح می شوند.
• مدیریت فرآیندها هزینه بر و سنگین است.
• سیستم عامل مواظب است که فرآیندها در کار یکدیگر اخالل ایجاد نکنند.
• اینکه فرآیندها همزمان از CPUو منابع دیگر استفاده می کنند ،از دید کاربر پنهان است.
– Concurrency transparency
• سوئیچ کردن بین فرآیندها کار پرهزینه ای است.
–
–
–
–
4
ذخیره حالت فعلی CPU
تغییر رجیسترهای واحد مدیریت حافظه ()MMU
ً
باطل کردن کش های ترجمه آدرس (مثال در )TLB
جابه جایی فرآیندها بین حافظه و دیسک
مقدمه ()2
• از نظر granularityموجودیت دیگری در نظر می گیرند که کوچکتر و
ارزان تر است (از نظر هزینه و زمان).
– نخ یا thread
– در واقع نخ داخل فرآیند تعریف می شود و جایگزین فرآیند نمی شود.
– نیازی به برقراری concurrency transparencyندارد.
• زیرا اینجا کارایی مهم تر است.
– اطالعات مربوط به نگهداری نخ کمتر از فرآیند است.
• thread contextهمان CPU contextاست.
– محافظت از دسترس ی نخ ها به فضاهای یکدیگر به برنامه نویس ی سطح باالتر
موکول می شود.
5
نخ ها در سیستم های عادی
• کدی که داخل یک فرآیند اجرا می شود یک thread of executionاست.
– به طور طبیعی داخل هر فرآیند یک نخ است.
• اگر داخل یک فرآیند چند نخ وجود داشته باشد
– Multiple thread of execution
• سوئیچ کردن بین نخ ها ارزان تر و راحت تر است.
– MMUالزم نیست تغییر کند چون هر دو نخ داخل یک فرآیند هستند.
– TLBالزم نیست خالی شود چون سیستم صفحه بندی همان است.
– فقط حالت CPUو رجیسترهای آن الزم است تغییر کنند.
• هزینه آسان تر شدن
– از بین رفتن امنیت بین نخ ها (برخالف فرآیند ها که از هم ایزوله بودند).
6
نخ ها در سیستم های عادی ()2
• آیا می شود همه جا multi-threadingرا جایگزین multi-processingکرد؟
– خیر ،ولی در بیشتر مواقع می شود.
• مزیت دیگر
– استفاده از multi-threadingبرای رسیدن به پردازش موازی در سیستم چندپردازنده ای
• هر threadبه یک CPUو ارتباط از طریق حافظه مشترک
– در سرورها امروزه استفاده می شود.
• راههای ارتباط فرآیندها با یکدیگر
– )Inter Process Communication( IPCکه شامل
• Pipes
• Message queues
• Shared memory segments
7
نخ ها در سیستم های عادی ()3
• عیب اصلی همه روش های IPC
– ارتباط نیازمند context switchingدر سه نقطه است (شکل زیر).
• استفاده از نخها به جای فرآیندها این مشکالت ارتباطی را ندارد
– زیرا نخها برای ارتباط با یکدیگر از حافظه مشترک استفاده می کنند.
8
سوئیچ کردن زمینه ()Context switching
• زمینه پردازنده (:)processor context
– کوچکترین مجموعه ای از مقادیر که در رجیسترهای پردازنده ذخیره می شود که برای
اجرای یک سری دستور الزم هستند.
– مثال :اشاره گر پشته ،رجیسترهای آدرس ،شمارنده برنامه
• زمینه نخ (:)thread context
– کوچکترین مجموعه ای از مقادیر که در رجیسترها و حافظه ذخیره می شود که برای
اجرای یک سری دستور الزم هستند.
– مثال :زمینه پردازنده و حالت
• زمینه فرآیند (:)process context
– کوچکترین مجموعه ای از مقادیر که در رجیسترها و حافظه ذخیره می شود که برای
اجرای یک نخ الزم هستند.
– مثال :زمینه نخ ،و حداقل مقادیر رجیسترهای MMU
9
نخ ها در سیستم های عادی ()4
• قسمت های مختلف یک برنامه کاربردی می توانند توسط نخ های
متفاوت پیاده سازی شوند.
– مثال :برنامه های اداری مثل Wordو ،Excelیک نخ کار گرفتن ورودی
ها به برنامه ،نخ دیگر چک کردن گرامر ،نخ دیگری برای اندیس گذاری،
...
– اگر هر کدام از این کارها توسط یک فرآیند انجام میشد ،فرآیندها بالک
می شدند.
10
پیاده سازی نخها
• پیاده سازی نخها به دو صورت است
– سطح کاربر ( :)user levelدر سطح برنامه کاربردی یا با استفاده از یک کتابخانه
thread
– سطح سیستم ( )system levelیا سطح هسته :هسته در ایجاد و زمانبندی آنها
دخالت دارد.
• مزایای نخهای سطح کاربر:
– ایجاد و از بین بردن نخها ساده و کم هزینه است.
– سوئیچ کردن بین نخها با چند دستور قابل انجام است.
– نرم افزاری برای مدیریت نخها در سطح کاربر thread package
• عیب نخهای سطح کاربر:
– یک فراخوان سیستم بالک کننده نخ ،کل فرآیند آن نخ را بالک می کند.
11
پیاده سازی نخها ()2
• راه حل:
– استفاده از نخهای سطح هسته
• عیب نخهای سطح هسته:
– هرگونه عملیاتی روی نخ مستلزم یک فراخوان سیستم است
• هزینه کار زیاد می شود.
– هسته فکر میکند یک فرآیند فراخوان سیستم را انجام داده ،چون خبری از نخهای
سطح کاربر ندارد .بعد از فراخوان سیستم کنترل را به یک پروسس دیگر می دهد و
اجرای نخ فعلی قطع می شود.
Thread
management
Thread
management
OS
12
پیاده سازی نخها ()3
• راه حل:
– ترکیبی از نخهای سطح کاربر و سطح هسته استفاده شود.
– تحت عنوان )Light Weight Process (LWP
– یک LWPدر متن یک فرآیند ایجاد می شود و می توان به ازای هر فرآیند
چندین LWPداشت.
– یک بسته مدیریت نخها در سطح کاربر نیز ارائه می شود تا عملیات ایجاد و
از بین بردن نخها را انجام دهد.
– امکاناتی برای همزمانی آنها مثل mutexها و متغیرهای شرطی نیز ارائه
می دهد.
– نکته مهم :بسته مدیریتی نخها در سطح کاربر است.
13
پیاده سازی نخها ()4
• LWPها در سطح هسته اجرا می شوند و هر LWPبه یک نخ سطح
کاربر منتسب می شود.
– بنابراین هسته می داند که هر LWPمربوط به یک نخ است.
• ساخت LWPتوسط یک فراخوان سیستم انجام می شود.
– بنابراین درست کردن LWPها توسط کاربر انجام می شود با یک فراخوان
سیستم.
ً
عملیات همزمانی بین نخها تماما توسط
بسته مدیریتی و در سطح کاربر انجام
ً
می شود و هسته اصال درگیر این عملیات
نمی شود .هسته تنها به ازای هر نخ در
حال اجرا یک LWPاجرا می کند.
14
پیاده سازی نخها ()5
• مزایای ترکیب دو روش:
.1
.2
.3
.4
ایجاد ،از بین بردن و همزمانی نخها کم هزینه است و دخالت هسته را الزم ندارد.
یک فراخوان سیستم بالکی کل فرآیند را بالک نمی کند.
برنامه کاربردی نیازی ندارد که از LWPها مطلع باشد بلکه با نخهای سطح کاربر
ارتباط دارد.
LWPها را می توان در سیستم های چندپردازنده ای به کار برد .اجرای LWPها
روی پردازنده های مختلف
• عیب روش ترکیبی:
– باید LWPها ایجاد و از بین بروند که هزینه ای معادل نخهای سطح هسته دارند.
– البته این عمل توسط سیستم عامل انجام می شود.
15
پیاده سازی نخها ()6
• روش دیگر scheduler activation
– وقتی یک نخ فراخوان سیستم بالکی انجام می دهد هسته یک up call
به بسته مدیریتی نخها انجام می دهد تا زمانبند ،نخ بعدی را انتخاب کند.
• مزیت:
– مدیریت LWPها را به هسته واگذار می کند.
• عیب:
16
Thread
management
– ساختار الیه ای را نقض می کند.
OS
نخ ها در سیستم های توزیعی
• انگیزه استفاده از چندنخی ( )multi-threadingدر سیستم های
توزیعی
– استفاده از فراخوان های سیستمی بالکی بدون اینکه کل فرآیندی که نخ
در آن اجرا می شود ،بالک شود.
– برای بیان ارتباطات به صورت نگه داشتن چندین اتصال منطقی در یک
زمان
• پیاده سازی در سمت
– کالینت
– سرور
17
کالینتهای چندنخی
• استفاده از چندنخی برای پنهان کردن تأخیرها
– مثال :باز کردن صفحات وب ،نخهای جداگانه برای برقراری اتصال و دریافت داده ها و
خواندن آنها
– باز کردن یک صفحه وب که شامل گرفتن عناصر مختلفی در آن صفحه است،
نیازمند ایجاد یک اتصال TCP/IPبه ازای هر عنصر صفحه است.
– هر یک از این اعمال بالک کننده هستند.
• با این روش وقتی تعداد کالینت ها زیاد
می شود ،سرور overloadمی شود.
ً
– معموال وب سرورها replicateهستند.
– اتصال ها به replicaهای مختلف و به صورت
موازی ایجاد می شود.
18
C1
Web
Server
C2
C4
C3
سرورهای چندنخی
• عمده مزایای روش چندنخی ،در سمت سرور است.
– طراحی سرورها با قابلیت بکارگیری موازی سازی برای رسیدن به کارایی بیشتر
– با آمدن سرورهای چندپردازنده ای کارایی چندنخی بیشتر نشان داده می شود.
• مثال :فایل سروری که روی عملیات دیسک بالک می شود.
–
–
–
–
19
نخ dispatcherدرخواستهای ورودی را می خواند.
با آمدن درخواست جدید ،سرور یک نخ کارگر راانتخاب کرده و کار را به آن محول می کند.
نخ کارگر یک فراخوان سیستمی بالکی برای خواندن از دیسک انجام می دهد.
نخ dispatcherمی تواند نخ کارگر دیگری را برای کاری دیگر انتخاب کند.
سرورهای چندنخی ()2
• سرور تک نخی:
• سرور چند فرآیندی:
Receive
Disk request
Disk reply
Reply to client
–
–
–
–
– چندین فرآیند سرور داخل یک ماشین (راه حل در قدیم)
– کالینت ها نمیدانند به کدام فرآیند سرور رجوع کنند بنابراین یک فرآیند هماهنگ کننده باید باشد.
• سرور چندنخی:
– مزیت نسبت به روش قبلی :سوئیچ کردن بین نخها ارزانتر است.
– وجود حافظه مشترک
– از نظر کارایی در دسترس ی به دیسک این روش بهتر از چند فرآیندی است به این دلیل که کشینگ در
روش قبلی از هم مستقل است در حالی که در چندنخی به دلیل حافظه مشترک در یک فضا انجام می
شود .یعنی نخ ها می توانند از اطالعات کش شده یکدیگر استفاده کنند.
20
سرورهای چندنخی ()3
• راه حل سوم :استفاده از ماشین حالت محدود
– فراخوان های بالک کننده پیاده سازی و برنامه نویس ی راحتتری دارند.
– به جای بالک کردن ،حالت ماشین را ذخیره میکند و به درخواست بعدی
می رود.
– می تواند با استفاده از interruptها باشد یا با استفاده از روش
polling
21
سرفصل مطالب
• نخ ها ()threads
• مجازی سازی ()virtualization
• کالینت ها و سرورها
• مهاجرت کد ()code migration
22
مقدمه
• مجازی سازی
– یک پردازنده می تواند یک دستور را از یک نخ یا از یک فرآیند اجرا کند.
– با سوئیچ کردن بین نخها و فرآیندها می توان موازی سازی را شبیه سازی کرد.
– می توان این شبیه سازی را به منابع دیگر نیز توسعه داد.
• پیشتر نیز مطرح بوده است.
• نکته :نرم افزارها پایدارتر و طول عمرشان بیشتر از پلت فرم ها است.
– Platform = H/W + OS + S/W
– مجازی سازی از اینجا حاصل می شود که مایلیم نرم افزارها همچنان باقی بمانند حتی با تغییر
پلت فرم
– باید پلت فرم را به صورت مجازی تعریف کنیم.
23
مجازی سازی در سیستم های توزیعی
• یک سیستم توزیعی
– یک واسط برنامه نویس ی به نرم افزار سطح باالتر ارائه می دهد.
• تعریف مجازی سازی:
– توسعه دادن یا جایگزین کردن یک
واسط موجود به گونه ای که رفتار یک
سیستم دیگر را تقلید کند.
24
مجازی سازی در سیستم های توزیعی ()2
• دالیل مطرح شدن مجازی سازی در دهه 1970
– امکان اجرای نرم افزارهای پیشین روی سخت افزارهای گران قیمت
• نه فقط نرم افزارها بلکه سیستم عامل
• دالیل مطرح شدن مجازی سازی در دهه 1990
– در سالهای اخیر سخت افزارها به سرعت پیشرفت می کنند در حالی که نرم
افزارها و میان افزارها پایدارتر هستند.
– مطرح شدن اتصال به شبکه ها و استفاده از مجازی سازی امکان اجرای نرم
افزارها و میان افزارها را روی پلت فرم های مختلف فراهم می آورد.
– فراهم شدن transparency
25
معماری ماشین های مجازی
• انواع واسط ها
–
–
–
–
26
واسط بین H/Wو :S/Wشامل دستورات زبان ماشین ،توسط هر برنامه ای می تواند صدا
زده شود.
واسط بین H/Wو :S/Wشامل دستورات ماشین ،فقط توسط برنامه های ممتاز ()OS
صدا زده می شود.
واسطی شامل فراخوان های سیستمی که توسط سیستم عامل فراهم می شود.
واسطی شامل کتابخانه ها ،تحت نام API (Application Programming
)Interface
معماری ماشین های مجازی ()2
• به دو صورت می توان مجازی سازی را انجام داد:
ً
– ) :Process Virtual Machine (PVMمجازی سازی اساسا برای یک
فرآیند انجام می شود.
– ایجاد یک سیستم runtimeکه مجموعه دستورات انتزاعی را برای اجرای
برنامه ها فراهم می آورد.
– رفتار فراخوان های سیستمی نیز باید شبیه سازی شود.
– مثالJava runtime environment :
– به ازای هر فرآیند یک runtime
وجود دارد .در واقع می توان runtime
سیستم های دیگر را نیز گذاشت و
برنامه های دیگری را نیز اجرا کرد.
27
معماری ماشین های مجازی ()3
• روش دوم:
– ) :Virtual Machine Monitor (VMMمانند VMware
– ایجاد یک الیه کامل نرم افزاری که سخت افزار را بپوشاند.
– مجموعه دستورات کامل سخت افزار را تأمین کند.
– می توان چندین سیستم عامل داشت که به صورت مستقل و موازی یکدیگر روی یک
پلت فرم اجرا می شوند.
– به ازای مجموعه ای از فرآیندها یک سیستم runtimeایجاد می شود.
– این روش برای تعداد زیادی از برنامه
های کاربردی قابل به کارگیری است.
– این روش برای سیستم های توزیعی
بسیار مناسب است.
28