تالار گفتمان مانشت

نسخه‌ی کامل: سوال دوم از فصل دوم
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
فرض کنید فرایند A درحالت اجرا و فرایند B که اولویت بالاتری دارد‌، مسدود است. اگر سیستم عامل دریابد که حادثه‌ای که B منتظرش بوده اتفاق افتاده است‌، آنگاه فرایند B به چه حالتی تغییر میکند ؟
(سیاست زمان بندی کوتاه مدت بر اساس اولویت غیرانحصاری است)

1.فرایند B به حالت اجرا تغییر می‌کند

2.ابتدا فرایند B به حالت آماده تغییر میکند و سپس سیستم می‌تواند فرایند A را وقفه داده و به حالت مسدود ببرد و فرایند B را به حالت اجرا درآورد

3.ابتدا فرایند B به حالت آماده تغییر می‌کند و سپس سیستم می‌تواند فرایند A را به حالت آماده و فرایند B را به حالت اجرا درآورد

4.فرایند B فقط به حالت آماده تغییر می‌کند و فرایند A به هیچ وجه تغییر نخواهد کرد
گزینه 1 که مطمئنم غلط هست چون هیچ وقت فرایندها مسقیما به حالت اجرا نمیروند . و اول به حالت آماده بعد اجرا بعد مسدود میشوند
و به نظرم گزینه 2 درسته چون هنوز اولویت جرای AیاB مشخص نشده پس سیستم عامل میتواند یکی از این دو را انتخاب کند
و دیگر اینکه اگر سیستم عامل بخواهد aA را اجرا کند‌، فرایند A هیچ وقت مستقیما به حات آماده نمیرود بلکه ابتدا مسدود میشود
من فکر می کنم گزینه 3 درست باشه.
اینکه فرآیند B ابتدا به حالت آماده میره شکی درش نیست. از اونجایی که راهبرد ما غیر انحصاریه، به محض آزاد شدن فرآیند B از حالت مسدود، زمانبند کوتاه مدت اجرا میشه و از فرآیند های صف آماده یک فرآیند رو انتخاب می کنه. میدونیم که فرآیند B اولویت بالاتری داره پس B انتخاب شده و A همچنان در حالت آماده میمونه.

اینجا یه موضوعی یککم برام مبهمه. راهبرد ما اگر SJF غیرانحصاری باشه که هست، باید کوتاه ترین کار انتخاب بشه. حالا فرآیند B با اولویت بالاتر و زمان بیشتری که نسبت به A داره وارد میشه و کار A هم زمانش کوتاهتره. در چنین شرایطی باز هم B به خاطر اولویت بالایی که داره انتخاب میشه. درسته؟
الله
نظر من:
مشخص است که ابتدا B به حالت آماده می رود (چون حادثه‌ای که B منتظرش بوده اتفاق افتاده است ), در مرحله بعد چون یک فرآیند آماده به جمع فرآیندهای آماده‌ی ما افزوده شده باید زمانبند Update بشه تاببینیم اولویت کدوم فرآیند بیشتره .
در سوال آمده که: "سیاست زمان بندی کوتاه مدت بر اساس اولویت غیرانحصاری است" که این همان زمانبندی کوتاه ترین زمان باقیمانده هست و غیر انحصاری هم هستش. و لذا زمانبند باید از بین A و B که فعلا A درحال اجراست و B آماده است , یکی را انتخاب کنه .

اگه در اینجا اولویت رو فقط مربوط به زمان بندی کوتاه مدت بر اساس اولویت غیرانحصاری بگیریم پس باید از بین A و B اونیکه کوتاه ترین زمان باقیمانده رو داره به حالت اجرایی بره و دیگری در حالت آماده قرار بگیره.

اما به قول دوستمون ehsan_nekooee نقطه ای که تاحدی مبهمه و (البته جالب) در انتخاب یکی از A و B اتفاق می افته. بدین صورت:

در خود سول گفته که B نسبت به A اولویت بالاتری داره .
اگه ما در این قسمت سوال" اولویت" گفته شده رو چیزی غیر از کوتاهترین زمان باقیمانده در نظر بگیریم پس دیگه الگوریتم زمانبندی ما بر اساس اولویتِ کوتاهترین زمان باقیمانده نخواهد بود.
ولی اگه منظورش اینه که کلا B نسبت به A کمترین زمان باقیمانده رو داره و در نتیجه اولویتش بالاتره , باز هم خیلی نمی تونه درست باشه چون ممکنه وقتی B مسدود بوده A زمان اجرایی زیادی رو طی کرده باشه و حالا که B آماده شده‌، کوتاهترین زمان باقیمانده‌ی A کمتر از B شده باشه.

و مورد دیگه اینکه ممکنه در این سوال دو اولویت مد نظر باشه( یکی اولویت گفته شده در ابتدای سوال (که گفته B از A بیشتره) و دیگری اولویت کوتاهترین زمان باقیمانده) که برای انتخاب فرایند اجرایی می توان اولویت نهایی رو بر اساس این دو اولویت در نظر بگیریم و در نتیجه اولویت هر کدام از A یا B ممکنه از دیگری بیشتر بشه. و به نظرم این از همه صحیح تره.

خلاصه اینکه به نظر من پاسخ صحیح اینه:
ابتدا فرایند B به حالت آماده تغییر می‌کند و سپس در مرحله بعدی سیستم یا ممکن است فرایند A را به حالت آماده و فرایند B را به حالت اجرا درآورد و یا اینکه ممکنه فرایند B را به حالت آماده و فرایند A را به حالت اجرا درآورد یعنی هر کدوم از A یا B امکانش هست که به اجرا بروند .

و اگه بخواهیم برای این سوال یک گزینه از جواب‌ها رو انتخاب کنیم فکر می کنم تا حدی بشه گزینه ۳ رو انتخاب کرد و حداقل از بقیه درست تره.

یا علی
با تشکر از ehsan_nekooee و yaali جواب این دوستان درست است
گزینه سه درسته.
گزینه یک: چون از مسدود به اجرا نداریم غلطه.
گزینه دو:با وقفه خوردن A به حالت آماده میرود نه مسدود (مسدود شدن وقتی اتفاق میفته که فرایند منتظر حادثه بشه)
گزینه چهار: چون غیر انحصاری هست، پس فرایند کم اولویت تغییر میکنه.
لینک مرجع