کامپیوتر و IT · دسامبر 25, 2023 0

هماهنگ سازی task و thread ها و Ada 💯

هماهنگ سازی task و thread ها و Ada

 

اجرای یک برنامه تحت Ada دربرگیرنده اجرای یک یا چند task می باشدهر task ، یک یا چند thread جداگانه برای کنترل مستقل یا همزمان در نقاطی که با سایر task ها تداخل دارد ایجاد می کند

 

هماهنگ سازی task و thread ها و Ada

هماهنگ سازی task و thread ها و Ada

دسته بندی کامپیوتر و IT
فرمت فایل doc
حجم فایل 157 کیلو بایت
تعداد صفحات 21
برای دانلود فایل روی دکمه زیر کلیک کنید
دریافت فایل

هماهنگ سازی task و thread ها و Ada

اجرای یک برنامه تحت Ada دربرگیرنده اجرای یک یا چند task می باشد.هر task ، یک یا چند thread جداگانه برای کنترل مستقل یا همزمان در نقاطی که با سایر task ها تداخل دارد ایجاد می کند. شکل های مختلف این هماهنگ سازی و اثر متقابل بین task ها در این چند برگ توضیح داده می شود. این شکل ها به دسته بندی کلی زیر تقسیم می شوند :
1- فعال سازی و نابود سازی یک task
2- صدا زدن یک برنامه خاص که هماهنگ سازی را بر عهده بگیرد وداده ها و بخش های اشتراکی را مدیریت کند.
3- یک برنامه وقفه ای که شامل یک سری delay ها باشد. یا شامل یک سری برنامه های زمان بندی که به هر کدام از task زمان خاصی را بدهد.
4- یک سیستم خاتمه دهنده که به یک task اجهزه خاصی برای از بین بردن و از کار انداختن task دیگر می دهد.

زمان دهی پویا و زمان دهی ایستا static semantic dynamic semantic :
در طول یک دوره یک task غیر فعال می تا زمانی که به فعالیت بازگردد. زمانی که یک task آماده شروع فعالیت گردید باید بخش ها و داده های مورد نیاز کامپیوتر به آن اختصاص داده شود. هر چند که این اجرا ممکن است روی یک سیستمmulti proccessorاجرا شود اما باز هم در چنین سیستم هایی اوقاتی پیش می آید که از دید task سیستم single proccess است و یا حتی روی هر یک از proccessor ها چندین task شروع به فعالیت می کنند. در این حالت به طور کلی دو نوع الگوریتم شروع به تقسیم بندی منابع سخت افزاری می نمایند که به نام های زمان دهی پویا و زمان دهی ایستا معروف هستند. هر چند هرکدام از این دو الگوریتم خود به الگوریتم های فراوان هماهنگ سازی دیگر تقسیم می شوند.
سیستم زمان دهی ایستا به این شکل عمل می کند که قبل از شروع به فعالیت task مشخصات آن را خوانده و به آن زمان می دهد. در صورتی که task ای از قبل نداند که چه مقدار زمان برای اجرا نیاز دارد این سیستم جوابگو نخواهد بود.
اما سیستم زمان دهی پویا که بسیار سنگین تر و پیچیده تر می باشد در هر لحظه اجرای task ها از آن ها توسط massage گزارش تهیه می کند و از این که یک task خاص چه مقدار زمان برای ادامه کار خود لازم دارد مطلع می شود و توسط زیر الگوریتم های مربوط به خود shairing را انجام می دهد. اما هر task چه قسمت هایی دارد؟ ما برای دانستن عمل هماهنگ سازی باید با قسمت های مختلف یک task آشنا شویم

همزمانی و مناطق بحرانی
موثر واقع شدن یك هسته مركزی بازدخولی نیاز به استفاده از همزمانی دارد: اگر یك مسیركنترل هسته مركزی در حالیكه روی یك ساختمان داده هسته مركزی فعالیت می كند، متوقف شود، هیچ مسیركنترل هسته مركزی دیگری اجازه نخواهد داشت تا بر روی همان ساختمان داده فعالیت كند مگر آنكه به یك وضعیت ثابت و پایدار بازگردد. بعلاوه برخورد دومسیركنترل می تواند منجر به تخریب اطلاعات ذخیره شده بشود. بعنوان مثال، چنین تصور كنیم كه یك V متغیرجهانی شامل تعدادی از موارد (items) قابل استفاده بعضی اجزا سیستم است. اولین مسیركنترل هسته مركزی (A) متغیر را میخواند و تعیین می كند كه فقط یك مورد ( آیتم) قابل استفاده وجود دارد. در این نقطه، مسیركنترل هسته مركزی دیگر (B) فعال شده و همان متغیر را می خواند كه هنوز دارای ارزش 1 می باشد. بنابراین V B را كاهش داده و شرع به استفاده از آیتم می كند. سپس A فعالیت رادوباره آغاز می كند زیرا تقریبا ارزش V محتوی 1ـ می شود و دو راه كنترل هسته مركزی از یك آیتم با اثرات تخریبی پتانسیلی استفاده می كنند؛ می گوئیم كه “شرایط مسابقه” موجود است.
بطوركلی، دسترسی امن به متغیر سراسری با استفاده از “عملیات اتمیك” فراهم میشود. در مثال قبل، اگر دومسیركنترل متغیر را بخوانند و V را با یك عمل بدون تداخل و تنها كاهش دهند، تخریب داده، امكان پذیر نخواهد بود. با اینحال هسته های مركزی شامل ساختمان داده های بسیاری هستند كه نمی توانند با یك عمل تنها قابل دسترسی باشند. برای مثال، معمولا جابجائی عنصر کلید از یك لیست پیوندی تنها با یك عمل ممكن نیست، زیرا هسته مركزی حداقل به دو نقطه دسترسی در آن واحد نیاز دارد. هربخشی از كد كه باید توسط پردازش به پایان برسد، قبل از اینكه یك پردازش دیگر بتواند وارد شود ناحیه بحرانی است. این مشكلات نه تنها در میان مسیرهای كنترل هسته مركزی بلكه در میان پردازشهائی كه از داده های مشتركی استفاده می كنند نیز رخ میدهد. تكنیكهای هم زمانی متعددی شکل گرفته اند. بخش بعدی به بررسی چگونگی هم زمان كردن و راههای كنترل هسته مركزی می پردازد.

هسته های مرکزی انحصاری
در جستجوی راه حل ساده ای برای حل مشکلات هم زمانی، اكثر هسته های مركزی یونیكس های ابتدائی انحصاری هستند : وقتی پردازشی در وضعیت هسته مركزی اجرا می شود، نمی تواند بطور اختیاری متوقف شده و یا با پردازش دیگری جایگزین شود . بنابراین در یك سیستم تك پردازشی تمام ساختمان داده های هسته مركزی كه توسط پاسخگوی وقفه (interrupts) و استثناءها(exception update) به روز نشده اند برای دسترسی به هسته مركزی امن و مطمئن هستند. در واقع، یك پردازش در وضعیت هسته مركزی می تواند بصورت اختیاری از CPU صرف نظر كند، اما در این مورد باید اطمنیان حاصل كند كه تمامی ساختمان داده های قابل دسترسی قبلی را كه می توانسته اند تغییر كنند را باید دوباره چك كند. انحصاری بودن در سیستمهای چند پردازنده ای بی تاثیر است زیرا دو مسیركنترل هسته مركزی كه در CPU های متفاوت در حال اجرا هستند می توانند با هم به ساختمان داده یكسانی دسترسی پیدا كنند.

غیر فعال کردن وقفه ها
مكانیسم دیگر همزمانی در سیستمهای تك پردازشی عبارتست از غیرفعال كردن تمامی وقفه های سخت افزاری قبل از ورود به منطقه بحرانی و فعال كردن مجدد انها دقیقا بعد از ترك منطقه بحرانی . این مكانیسم با وجود سادگی از نقطه اپتیمال بسیار دور است. اگر منطقه بحران وسیع باشد، وقفه ها برای زمان نسبتا طولانی غیرفعال باقی می مانند و تمامی فعالیتهای سخت افزار را منجر به فریز می كنند. علاوه براین، در یك سیستم چند پردازنده ای این مكانیسم كارگر نیست . هیچ راهی برای اطیمنان از عدم دسترسی CPU دیگری، به ساختمان داده های مشابهی كه در منطقه حفاظت شده بحرانی update شده اند، وجود ندارد.

✔️  بهترین کیفیت 💯 از 💯
✔️  پشتیبانی 24 ساعته
✔️  مناسب ترین قیمت

◀️  فروشگاه فایل سیدا

 

دانلود هماهنگ سازی task و thread ها و Ada