۰
subtitle
ارسال: #۱
  
فرآیند سبک وزن LWP
سلام بچه ها
کسی میتونه فرآیند سبک وزن رو برای من یه توضیح کوچیک بده
مشکلم اینه که اگه برای هر نخ قرار باشه یک فرآیند سبک وزن ایجاد کنیم خب هزینه اش با وقتی که بیایم نخ ها رو در سطح هسته داشته باشیم تفاوتی نداره یعنی برای ایجاد LWP باز هم باید از فراخوان سیستمی استفاده کنیم. تنها تفاوت فرایند سبک وزن با نخ در سطح هسته هزینه کم در ارتباط بین نخها میشه
در کل فرایند سبک وزن چرا استفاده میکنیم؟
پیشاپیش ممنون
کسی میتونه فرآیند سبک وزن رو برای من یه توضیح کوچیک بده
مشکلم اینه که اگه برای هر نخ قرار باشه یک فرآیند سبک وزن ایجاد کنیم خب هزینه اش با وقتی که بیایم نخ ها رو در سطح هسته داشته باشیم تفاوتی نداره یعنی برای ایجاد LWP باز هم باید از فراخوان سیستمی استفاده کنیم. تنها تفاوت فرایند سبک وزن با نخ در سطح هسته هزینه کم در ارتباط بین نخها میشه
در کل فرایند سبک وزن چرا استفاده میکنیم؟
پیشاپیش ممنون
۰
ارسال: #۲
  
RE: فرآیند سبک وزن LWP
(۱۲ تیر ۱۳۹۴ ۱۱:۴۸ ب.ظ)LEA3C نوشته شده توسط: سلام بچه ها
کسی میتونه فرآیند سبک وزن رو برای من یه توضیح کوچیک بده
مشکلم اینه که اگه برای هر نخ قرار باشه یک فرآیند سبک وزن ایجاد کنیم خب هزینه اش با وقتی که بیایم نخ ها رو در سطح هسته داشته باشیم تفاوتی نداره یعنی برای ایجاد LWP باز هم باید از فراخوان سیستمی استفاده کنیم. تنها تفاوت فرایند سبک وزن با نخ در سطح هسته هزینه کم در ارتباط بین نخها میشه
در کل فرایند سبک وزن چرا استفاده میکنیم؟
پیشاپیش ممنون
اگر بخواهیم مدیریت threadها رو در سطح kernel داشته باشیم، مزیتی که داریم اینکه سیستم عامل از وجود threadها مطلع است پس می تواند به خوبی آن ها را زمان بندی و مدیریت کند. همچنین در صورت داشتن امکان موازات واقعی (چندپردازندگی) می توانند threadهای هم روند را روی پردازنده های مختلف توزیع و زمان بندی کند. ولی در عوض، ایراد این روش این است که برای ایجاد، حذف، تعویض متن، ارتباط و غیره threadها باید همواره بین مد کاربر و kernel سوئیچ کنیم که هزینه زمانی بسیاری خواهد داشت.
اگر مدیریت threadها رو در سطج کاربر توسط thread library سطح کاربر انجام دهیم، با اینکه در این روش دیگر نیاز نداریم برای ایجاد، حذف، تعویض متن، ارتباط و غیره threadها به سطح کرنل برویم، ولی چون سیستم عامل از حضور threadها مطلع نیست، درصورت block شدن یا page fault یکی از threadهای یک process، به غلط کل process و همه ی threadهای داخل آن block می شوند. همچنین در صورت چندپردازندگی، سیستم عامل نمی تواند threadها را به بهترین نحو بین پردازنده ها توزیع و زمان بندی نماید.
حال در روش استفاده از LWPها (که یکی از روش های ترکیب مدیریت thread در سطوح هسته و کاربر است)، فقط برای ایجاد و حذف LWPها نیاز به سوئیچ بین سطح kernel و کاربر هستیم و چون اجرای LWPها در سطج kernel است ارتباط و synchronization آن ها به صورت نسبی سریع تر است. مزایای اصلی این روش این است که چون سیستم عامل از وجود LWPها مطلع است بنابراین می تواند به خوبی آن ها را زمان بندی و مدیریت کند و در چندپردازندگی می توانند LWPهای مختلف رو روی پردازنده های مختلف توزیع و زمان بندی کند. در ضمن لزومی ندارد حتماٌ برای هر thread یک LWP ایجاد شود و بلکه توسط thread library سطح کاربر می توان چندین thread رو به یک LWP اختصاص داد و مدیریت کرد که در این صورت هم تعداد ایجاد و حذف LWPها کاهش می یابد و هم هزینه تعویض متن threadها به صورت نسبی اندک خواهد شد. همچنین اگر یکی از threadهای یک فرآیند block شود یا page fault رخ دهد (در واقع LWP متناظر block شود)، چون مدیریت LWPها با سیستم عامل است کل آن فرآیند و دیگر threadهایش به حالت blocked نمی روند و فقط همان thread (به عبارت بهتر LWP متناظرش) مسدود خواهد شد.
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close