آموزش رشته ها در همزمانی پایتون 

3 سال پیش
آموزش رشته ها در همزمانی پایتون

 آموزش رشته ها در همزمانی پایتون 

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش رشته ها در همزمانی پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون

به طور کلی، همانطور که می دانیم این نخ یک رشته پیچ خورده بسیار نازک است که معمولاً از پارچه پنبه یا ابریشم است و برای دوخت لباس و موارد دیگر استفاده می شود. در دنیای برنامه نویسی رایانه نیز از همین اصطلاح رشته استفاده می شود. حال، رشته مورد استفاده برای دوخت لباس و نخ مورد استفاده برای برنامه نویسی کامپیوتر را چگونه با هم مرتبط کنیم؟ نقش های انجام شده توسط دو موضوع در اینجا مشابه است. در لباس، نخ پارچه را با هم نگه دارید و از طرف دیگر، در برنامه نویسی رایانه، رشته برنامه رایانه را نگه دارید و به برنامه اجازه دهید اقدامات پی در پی یا بسیاری از اقدامات را همزمان انجام دهد.

رشته ها کوچکترین واحد اجرا در سیستم عامل است. این به خودی خود یک برنامه نیست بلکه درون یک برنامه اجرا می شود. به عبارت دیگر ، رشته ها از یکدیگر مستقل نیستند و بخش کد ، بخش داده و غیره را با سایر رشته ها به اشتراک می گذارند. این رشته ها به عنوان فرآیندهای سبک نیز شناخته می شوند.

حالت رشته ها

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

موضوع جدید

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

قابل اجرا

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

در حال اجرا

در این حالت، رشته پیشرفت می کند و وظیفه ای را که توسط برنامه ریز کار برای اجرا انتخاب شده است ، اجرا می کند. اکنون ، این رشته می تواند به حالت مرده یا حالت غیر قابل اجرا / انتظار منتقل شود.

 

عدم اجرا/ انتظار

در این حالت، موضوع متوقف می شود زیرا یا در انتظار پاسخ برخی از درخواست های ورودی / خروجی است یا در انتظار تکمیل اجرای موضوع دیگر است.

خاتمه

یک رشته قابل اجرا هنگامی که کار خود را انجام می دهد یا در غیر این صورت خاتمه می یابد، به حالت خاتمه یافته وارد می شود.

نمودار زیر چرخه زندگی کامل یک موضوع را نشان می دهد –

Dead

انواع رشته ها

در این قسمت انواع مختلف رشته را مشاهده خواهیم کرد. انواع زیر شرح داده شده است –

موضوعات سطح کاربر

اینها موضوعات مدیریت شده توسط کاربر هستند.

در این حالت هسته مدیریت موضوع از وجود نخ ها آگاهی ندارد. کتابخانه رشته شامل کدی برای ایجاد و از بین بردن رشته ها، برای انتقال پیام و داده ها بین رشته ها، برای برنامه ریزی اجرای موضوع و برای ذخیره و بازیابی زمینه های موضوع است. برنامه با یک موضوع شروع می شود.

مثالهای رشته های سطح کاربر عبارتند از –

  • رشته های جاوا
  • موضوعات POSIX

 

Dead

 

مزایای مطالب سطح کاربر

در زیر مزایای مختلف موضوعات سطح کاربر وجود دارد –

  • تغییر رشته به امتیازات حالت هسته نیاز ندارد.
  • موضوع سطح کاربر می تواند روی هر سیستم عاملی اجرا شود.
  • زمانبندی می تواند ویژه برنامه در موضوع سطح کاربر باشد.
  • رشته های سطح کاربر برای ایجاد و مدیریت سریع هستند.

معایب مطالب سطح کاربر

در زیر معایب مختلف موضوعات سطح کاربر آمده است –

  • در یک سیستم عامل معمولی ، بیشتر تماسهای سیستم مسدود هستند.
  • برنامه چند رشته ای نمی تواند از چند پردازش استفاده کند.
  • موضوعات سطح هسته
  • رشته های مدیریت شده سیستم عامل بر روی هسته که هسته اصلی سیستم عامل است عمل می کنند.

رشته های هسته مستقیماً توسط سیستم عامل پشتیبانی می شوند. هر برنامه ای می تواند برنامه ریزی شود که چند رشته ای باشد. تمام رشته های درون برنامه در یک فرایند پشتیبانی می شوند.

هسته اطلاعات متنی را برای کل فرآیند و برای موضوعات جداگانه درون فرآیند حفظ می کند. برنامه ریزی توسط هسته بر اساس موضوع انجام می شود. هسته ایجاد رشته، برنامه ریزی و مدیریت در فضای هسته را انجام می دهد. ایجاد و مدیریت رشته های هسته به طور کلی کندتر از رشته های کاربر است. مثالهای رشته های سطح هسته Windows، Solaris هستند.

Dead

 

مزایای موضوعات سطح هسته

در زیر مزایای مختلف موضوعات سطح هسته وجود دارد –

  • هسته می تواند همزمان چندین رشته از یک فرآیند را روی چندین فرآیند برنامه ریزی کند.
  • اگر یک رشته در یک فرآیند مسدود شود، هسته می تواند رشته دیگری از همان روند را برنامه ریزی کند.
  • روال های هسته ای می توانند چند رشته ای باشند.

معایب رشته های سطح هسته

  • ایجاد و مدیریت رشته های هسته به طور کلی کندتر از رشته های کاربر است.
  • انتقال کنترل از یک موضوع به موضوع دیگر در همان فرآیند نیاز به تغییر حالت به هسته دارد.

 

بلوک کنترل رشته – TCB

(Thread Control Block (TCB ممکن است به عنوان ساختار داده در هسته سیستم عامل تعریف شود که عمدتا شامل اطلاعات مربوط به موضوع است. اطلاعات خاص نخ ذخیره شده در TCB برخی از اطلاعات مهم در مورد هر فرآیند را برجسته می کند.

نکات زیر مربوط به موضوعات موجود در TCB را در نظر بگیرید –

  • شناسایی موضوع – این شناسه موضوع منحصر به فرد (tid) است که به هر موضوع جدید اختصاص داده شده است.
  • حالت رشته – شامل اطلاعات مربوط به حالت (در حال اجرا، قابل اجرا، غیر قابل اجرا، خاتمه) رشته است.
  • شمارنده برنامه (PC) – به دستورالعمل برنامه فعلی موضوع اشاره می کند.
  • مجموعه ثبت – این شامل مقادیر رجیستری رشته است که برای محاسبات به آنها اختصاص داده شده است.
  • Stack Pointer – این نشان دهنده پشته موضوع است. این شامل متغیرهای محلی تحت دامنه موضوع است.
  • Pointer to PCB – این نشانگر فرآیندی است که آن رشته را ایجاد کرده است.

pcb

 

ارتباط بین فرایند و رشته

در چند رشته، فرآیند و موضوع دو اصطلاح بسیار نزدیک به هم هستند که هدف یکسانی دارند تا کامپیوتر بتواند همزمان بیش از یک کار را انجام دهد. یک فرآیند می تواند شامل یک یا چند رشته باشد اما برعکس، موضوع نمی تواند حاوی یک پردازش باشد. با این حال هر دو دو واحد اصلی اعدام هستند. یک برنامه، با اجرای یک سری دستورالعمل ها ، فرآیند را شروع می کند و هر دو را ریسک می کند.

 

مفهوم چند رشته ای

همانطور که قبلاً بحث کردیم که Multithreading توانایی پردازنده برای مدیریت استفاده از سیستم عامل با اجرای همزمان چند موضوع است. ایده اصلی چند رشته ای دستیابی به موازی کاری با تقسیم یک فرآیند به چندین رشته است. به روشی ساده تر، می توان گفت که چند رشته ای روش دستیابی به چند وظیفه ای با استفاده از مفهوم نخ ها است.

مفهوم چند رشته ای را می توان با کمک مثال زیر درک کرد.

مثال

فرض کنید ما در حال اجرای فرایندی هستیم. این روند می تواند برای باز کردن کلمه MS برای نوشتن چیزی باشد. در چنین فرآیند، یک موضوع برای باز کردن کلمه MS اختصاص داده می شود و یک موضوع دیگر برای نوشتن مورد نیاز است. حال  فرض کنید اگر بخواهیم چیزی را ویرایش کنیم ، برای انجام کار ویرایش و غیره به یک موضوع دیگر نیاز است.

نمودار زیر به ما کمک می کند تا درک کنیم چگونه چندین رشته در حافظه وجود دارد –

 

Multithreading

 

در نمودار بالا می بینیم که بیش از یک رشته در یک فرایند وجود دارد که هر رشته شامل مجموعه ثبات و متغیرهای محلی است. به غیر از این ، تمام رشته های یک فرآیند متغیرهای جهانی را به اشتراک می گذارند.

جوانب مثبت چند رشته ای

حال اجازه دهید چند مزیت چند رشته ای را ببینیم. مزایا به شرح زیر است –

سرعت ارتباط – چند رشته ای سرعت محاسبه را بهبود می بخشد زیرا هر هسته یا پردازنده همزمان رشته های جداگانه ای را اداره می کند.

 پاسخگویی برنامه – به برنامه اجازه می دهد پاسخگو باشد زیرا یک رشته منتظر ورودی است و دیگری همزمان GUI را اجرا می کند.

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

استفاده از منابع – اجرای چندین رشته در هر برنامه باعث استفاده بهتر از CPU می شود و زمان بیکاری CPU کمتر می شود.

اشتراک داده ها – برای هر موضوع نیازی به فضای اضافی نیست زیرا رشته های درون یک برنامه می توانند داده های مشابه را به اشتراک بگذارند.

جوانب منفی های چند رشته ای

حال اجازه دهید چند معایب چند رشته ای را مشاهده کنیم. معایب به شرح زیر است –

برای سیستم تک پردازنده مناسب نیست – چند رشته ای دستیابی به عملکرد از نظر سرعت محاسبه در سیستم تک پردازنده را در مقایسه با عملکرد در سیستم چند پردازنده دشوار می داند.

مسئله امنیت – همانطور که می دانیم همه رشته های درون یک برنامه داده های مشابهی دارند ، بنابراین مسئله امنیت همیشه وجود دارد زیرا هر رشته ناشناخته می تواند داده ها را تغییر دهد.

پیچیدگی – چند رشته می تواند پیچیدگی برنامه را افزایش دهد و رفع اشکال مشکل شود.

منجر به وضعیت بن بست – چند رشته ای می تواند برنامه را به سمت خطر احتمالی رسیدن به وضعیت بن بست سوق دهد.

همگام سازی مورد نیاز است – برای جلوگیری از محرومیت متقابل ، همگام سازی لازم است. این امر منجر به استفاده بیشتر از حافظه و پردازنده می شود.

 

منبع.

لیست جلسات قبل آموزش همزبانی در پایتون

  1. آموزش همزمانی در برنامه نویسی پایتون
  2. آموزش همزمانی در برنامه نویسی پایتون _ مقدمه
  3. آموزش معماری سیستم و حافظه در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه