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

دسته بندي : فنی و مهندسی » کامپیوتر و IT
اجرای یک برنامه تحت 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 شده اند، وجود ندارد.
دسته بندی: فنی و مهندسی » کامپیوتر و IT

تعداد مشاهده: 1778 مشاهده

فرمت فایل دانلودی:.doc

فرمت فایل اصلی: doc

تعداد صفحات: 21

حجم فایل:239 کیلوبایت

 قیمت: 3,500 تومان
پس از پرداخت، لینک دانلود فایل برای شما نشان داده می شود.   پرداخت و دریافت فایل
  • محتوای فایل دانلودی: