۲
subtitle
ارسال: #۱
  
فرآیندهای سبک وزن LWP
سلام
دوستان کسی میتونه فرآیندهای سبک وزن رو توضیح بده؟ میدونم که برای ترکیب نخ های سطح کاربر و سطح هسته از فرآیندهای سبک وزن استفاده می کنن اما نحوه و مکانیزم کارکردش رو متوجه نشدم.
دوستان کسی میتونه فرآیندهای سبک وزن رو توضیح بده؟ میدونم که برای ترکیب نخ های سطح کاربر و سطح هسته از فرآیندهای سبک وزن استفاده می کنن اما نحوه و مکانیزم کارکردش رو متوجه نشدم.
۵
ارسال: #۲
  
RE: فرآیندهای سبک وزن LWP
سلام
برای اجرای نخ دو حالت وجود داره یکی حالتی که userlevel هست و دیگری system level. در حالتی که نخ ها توی سطح کاربر اجرا میشن کارایی بیشتر هست به خاطر اینکه اجرای نخ ها توسط سیستم عامل باعث میشه که این راه کار در هر کاربردی به کار برده بشه و عمومی هست ولی در سطح کاربر اینطور نیست. از طرف دیگه اجرای نخ ها در سطح کاربر باعث process switch میشه یعنی وقتی مثلا اگه یه نخی توی فرآیند A اجرا شد و این نخ احتیاج به یک فرآیند ورودی -خروجی داشت و باید منتظر میموند سیستم عامل بدون اینکه به نخ های دیگه این فرآیند یعنی همون فرآیند A توجه بکنه پردازش این فرآیند رو متوقف میکنه و پردازنده به فرآیند دیگری مانند فرآیند B داده میشه. این در حالیه که در سطح سیستمی thread switch وجود داره و در واقع سیستم عامل از نخ هایی که توی یه فرآیند هستن آگاهه و اگه اجرای یکی از نخ ها متوقف شد نخ دیگه ای از همون فرآیند اجرا خواهد شد.
پس دیدیم که هر کدوم از این روش ها مزیت و معایب خودشون رو دارن. به همین خاطر میایم از روشی ترکیبی که در واقع شامل همه مزیت های دو روش هست استفاده میکنیم. این روشهای ترکیبی خودشون به دو دسته اند
۱/ Light Weight Process
۲/ Scheduler Activation
روش اول که مورد سوال شما هست. سیستم عامل همونطوری که میتونه فرآیند ایجاد بکنه میتونه فرآیند های سبک وزن هم تولید بکنه. پس تولید فرآیند های سبک با سیستم عامل هست ولی زمان بندی اونها رو به سطح کاربر میدیم که کارایی بره بالاتر.چون با این کار اجرای نخ بر اساس زمان بندی از پیش تعریف شده سیستم عامل صورت نمیگیره و براساس نیاز میتونه متغیر باشه. هر فرآیند سبکی یه برنامه ریزی داره که براساس اون کار میکنه و برای اینکه این فرآیندها بتونن باهمدیگه تبادل اطلاعات داشته باشن یا بهتر بگم برای اینکه بتونن از کارای همدیگه خبرداشته باشن باید به دادههای مشترک دسترسی داشته باشن که برای همین هم باید از تکنیک های انحصار متقابل استفاده کنن ( انحصار متقابل یعنی اینکه وقتی یکی از فرآیندها از داده مشترک داره استفاده میکنه بقیه نتونن که تداخل پیش نیاد) . در این روش چون سیستم عامل از وجود این فرآیندهای سبک با اطلاعه اگه مثلا فرآیند نخ اول A در حال اجراست و این فرآیند احتیاج به دادههای ورودی-خروجی داشت و متوقف شد سیستم عامل یه نخ دیگه رو اجرا میکنه. چطوری اون نخ دیگه رو پیدا میکنه؟ براساس زمانبندی فرآیند های سبک میبینه بعدش کدوم نخ باید اجرا بشه.
پس در کل هر فرآیند سبک یه برنامه ریزی داره که در ابتدای کار به اون گفته میشه که چه نخ هایی اجرا بشن و براساس اون پیش میره.
موفق باشید
برای اجرای نخ دو حالت وجود داره یکی حالتی که userlevel هست و دیگری system level. در حالتی که نخ ها توی سطح کاربر اجرا میشن کارایی بیشتر هست به خاطر اینکه اجرای نخ ها توسط سیستم عامل باعث میشه که این راه کار در هر کاربردی به کار برده بشه و عمومی هست ولی در سطح کاربر اینطور نیست. از طرف دیگه اجرای نخ ها در سطح کاربر باعث process switch میشه یعنی وقتی مثلا اگه یه نخی توی فرآیند A اجرا شد و این نخ احتیاج به یک فرآیند ورودی -خروجی داشت و باید منتظر میموند سیستم عامل بدون اینکه به نخ های دیگه این فرآیند یعنی همون فرآیند A توجه بکنه پردازش این فرآیند رو متوقف میکنه و پردازنده به فرآیند دیگری مانند فرآیند B داده میشه. این در حالیه که در سطح سیستمی thread switch وجود داره و در واقع سیستم عامل از نخ هایی که توی یه فرآیند هستن آگاهه و اگه اجرای یکی از نخ ها متوقف شد نخ دیگه ای از همون فرآیند اجرا خواهد شد.
پس دیدیم که هر کدوم از این روش ها مزیت و معایب خودشون رو دارن. به همین خاطر میایم از روشی ترکیبی که در واقع شامل همه مزیت های دو روش هست استفاده میکنیم. این روشهای ترکیبی خودشون به دو دسته اند
۱/ Light Weight Process
۲/ Scheduler Activation
روش اول که مورد سوال شما هست. سیستم عامل همونطوری که میتونه فرآیند ایجاد بکنه میتونه فرآیند های سبک وزن هم تولید بکنه. پس تولید فرآیند های سبک با سیستم عامل هست ولی زمان بندی اونها رو به سطح کاربر میدیم که کارایی بره بالاتر.چون با این کار اجرای نخ بر اساس زمان بندی از پیش تعریف شده سیستم عامل صورت نمیگیره و براساس نیاز میتونه متغیر باشه. هر فرآیند سبکی یه برنامه ریزی داره که براساس اون کار میکنه و برای اینکه این فرآیندها بتونن باهمدیگه تبادل اطلاعات داشته باشن یا بهتر بگم برای اینکه بتونن از کارای همدیگه خبرداشته باشن باید به دادههای مشترک دسترسی داشته باشن که برای همین هم باید از تکنیک های انحصار متقابل استفاده کنن ( انحصار متقابل یعنی اینکه وقتی یکی از فرآیندها از داده مشترک داره استفاده میکنه بقیه نتونن که تداخل پیش نیاد) . در این روش چون سیستم عامل از وجود این فرآیندهای سبک با اطلاعه اگه مثلا فرآیند نخ اول A در حال اجراست و این فرآیند احتیاج به دادههای ورودی-خروجی داشت و متوقف شد سیستم عامل یه نخ دیگه رو اجرا میکنه. چطوری اون نخ دیگه رو پیدا میکنه؟ براساس زمانبندی فرآیند های سبک میبینه بعدش کدوم نخ باید اجرا بشه.
پس در کل هر فرآیند سبک یه برنامه ریزی داره که در ابتدای کار به اون گفته میشه که چه نخ هایی اجرا بشن و براساس اون پیش میره.
موفق باشید
ارسال: #۳
  
RE: فرآیندهای سبک وزن LWP
۰
۰
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close