تالار گفتمان مانشت
سوال از فصل ورودی- خروجی، مبحث وقفه ها - نسخه‌ی قابل چاپ

سوال از فصل ورودی- خروجی، مبحث وقفه ها - arshad90 - 28 آذر ۱۳۸۹ ۱۲:۱۷ ق.ظ

سلام به همه دوستان عزیزم

سوال مربوط به مبحث وقفه هاست، تست سراسری مهندسی کامپیوتر ۷۴ هست. من این تست رو تو کتاب راهیان ارشد دیدم اما تو پوران هر چی گشتم به چشمم نخورد. به هر حال سیستم سوال و کلا حلش به نظرم کمی پیچیده اومد گفتم اینجا مطرح کنم تا شاید دوستان نخبه نظری در موردش داشته باشن.Wink

-یک پردازنده دارای چهار وقفه قابل پوشش به نام های INT1 و INT2 و INT3 و INT4 می باشد ه از لحاظ اولویت به ترتیت INT1 بیشترین اولویت و INT4 کمترین اولویت را دارد. در یک کاربرد از هر چهار پایه وقفه استفاده شده است. وقفه INT1 چهار بار و INT2 نیز ۲ بار در ثانیه اتفاق می افتند. زمان اجرای روش های INT1 و INT2 و INT3 به ترتیب ۲۵ و ۵۰ و ۱۰۰ میلی ثانیه است. ماکزیمم تاخیری که در اجرای INT3 ممکن است پیش آید کدام است (توجه داشته باشید که هر روتین وقفه تا به آخر اجرا می شود)؟
۱) ۲۰ میلی ثانیه ۲)۱۵۰ میلی ثانیه ۳)۱۷۵ میلی ثانیه ۴)۷۵ میلی ثانیه

جواب گزینه ۳ اعلام شده. بچه‌ها لطفا تحلیل خودتون رو در مورد این جواب بگین.

سوال از فصل ورودی- خروجی، مبحث وقفه ها - ف.ش - ۲۸ آذر ۱۳۸۹ ۰۱:۰۰ ق.ظ

فکر میکنم منظورش این بوده که اگه درخواست INT3 بشه ماکزیمم تاخیر اینه که INT1,INT2 نیز درخواست شده باشه و چون اولویت بیشتری داره باید صبر کنه تا اونها انجام بشن.
توی کتاب INT4 رو داده ۱۰۰ نه INT3!

خوب توی پاسخ کتاب گفته شده وقفه ۱ در هر ۲۵۰ میلی ثانیه ۱ بار و وقفه ۲ در هر ۵۰۰ میلی ثانیه ۱ بار اجرا میشود. (واضحه چون ۱ ثانیه میشه ۱۰۰۰ میلی ثانیه)
خط بعدش گفته ۲۵۰=۱۰۰+۲۵+x
x=125-25=100 زمان اجرای وقفه سوم!

من فکر میکنم منظورش اینه که توی این ۲۵۰ ثانیه ۲۵ ثانیه اش میره واسه وقفه۱ چون گفتیم یکبار انجام میشه.
واسه همین ۲۵ رو ازش کم کرده ولی ۲۵۰=۱۰۰+۲۵+x رو نفهمیدمBig Grin

در آخر هم گفته چون باید وقفه های ۱ و۲ قبل از ۳ انجام بشن میشه ۲۵+۵۰+۱۰۰=۱۷۵

سوال از فصل ورودی- خروجی، مبحث وقفه ها - sal_dovomi - 28 آذر ۱۳۸۹ ۱۰:۵۹ ق.ظ

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

RE: سوال از فصل ورودی- خروجی، مبحث وقفه ها - ف.ش - ۲۸ آذر ۱۳۸۹ ۱۱:۴۸ ق.ظ

(۲۸ آذر ۱۳۸۹ ۱۰:۵۹ ق.ظ)sal_dovomi نوشته شده توسط:  در ادامه صحبت های آفاق،وقفه سوم باید قبل از ۲۵۰ اجرابشه چون سر۲۵۰ میره واسه وقفه ۱و سر ۵۰۰ میره واسه وقفه دوم.ماکزیمم هم زمانیه که وقفه ای اول و دوم هردوزودتراز وقفه سوم اجرابشن.پس زمان اجرای هر سه روی هم باید کوچکتراز۲۵۰ باشه،چرا خود وقفه سوم هم هست؟چون اگه حتی وسط وقفه سوم دوباره وقفه اول بیاد،اجرای وقفه سوم متوقف و اجرای وقفه اول شروع میشه.

درسته فقط به این دقت نکردین ‌: توجه داشته باشید که هر روتین وقفه تا به آخر اجرا می شود" پس اگه در حین وقفه سوم وقفه اول فراخوانی بشه وقفه سوم تا آخر اجرا میشه.
من فکر میکنم اون ۱۰۰ که جمع شده زمان اجرای وقفه ۴ است چون برای مثال وقفه ۴ داره اجرا میشه و ما درخواست وقفه ۳ و ۱ و ۲ رو میدیم اونوقت باید صبر کنیم تا وقفه ۴ تموم بشه وقفه ۱ و۲ هم انجام بشه که میشه ۱۷۵

اما راهی که کتاب رفته رو نمیفهمم!

سوال از فصل ورودی- خروجی، مبحث وقفه ها - arshad90 - 28 آذر ۱۳۸۹ ۰۳:۵۰ ب.ظ

حق با آفاق هست. می گیم هر ۲۵۰ میلی ثانیه وقفه ۱ اجرا می شه. پس در طول این ۲۵۰ میلی ثانیه ما می تونیم اجرای وقفه ۲ یا ۳ یا ۴ رو داشته باشیم. بنابراین ۲۵۰= ۱۰۰+۵۰+x. x زمان اجرای وقفه ۳ هست. خب با این حساب x=100 .

حالا میریم سراغ ماکزیمم تاخیر. واضحه که قبل از وقفه ۳ وقفه های ۱ و ۲ قطعا اجرا می شن پس داریم:
INT3= 100 + 25 +50=175

جواب همینه منتها کتاب با یه عدد اشتباه تو معادله اولی هممونو گیج کرده. ممنون بچه‌ها که وقت گذاشتین و فکر کردین. با خوندن جوابای شما من به نتایج بالا رسیدم.

سوال از فصل ورودی- خروجی، مبحث وقفه ها - ف.ش - ۲۸ آذر ۱۳۸۹ ۰۶:۲۲ ب.ظ

نه!
این که توی اون ۲۵۰ ms وقفه ۲ اجرا میشه اصلا معلوم نیست.چون ممکنه توی ۲۵۰ms بعدی اجرا بشه. کلا گفته هر ثانیه ۲ بار اجرا میشه نگفته در فواصل معین!

راهش اینه:
ما میگیم ماکزیمم تاخیر وقتی اتفاق می افته که وقفه ۴ در حال اجرا باشه (وقفه ۴ رو در نظر گرفتیم چون اون اولویتش از وقفه ۳ کمتره) به محض اجرای وقفه ۴ ما درخواست وقفه ۳ رو میدیم و بعد از اون وقفه ۱ و ۲ پس باید صبر کنیم تا وقفه ۴ اجرا بشه و همچنین وقفه ۱و۲ که میشه ۱۰۰+۲۵+۵۰=۱۷۵

چرا میگم جواب کتاب اشتباهه چون اولا اومده خود زمان اجرای وقفه ۳ رو هم جمع زده که اصلا درست نیست.ثانیا فقط خواسته به ۱۷۵ برسه و بیخود چمع و تفریق کرده!

سوال از فصل ورودی- خروجی، مبحث وقفه ها - امیدوار - ۱۱ دى ۱۳۸۹ ۰۳:۰۹ ب.ظ

این مربوط به کنترل وقفه‌ها به روش موازی است دقت کنید که در این روش ما یه انکدر اولویت داریم که به وسیله یک ثبات ماسک که دقیقا به اندازه‌ی ورودی های انکدر اولویت(یا همون تعداد وقفه هاست) توجه کنید که در انکدر اولویت تا وقتی ورودی های اولویت دار یک هستند اهمیتی به ورودی های پایین‌تر نمی دهد،در این روش ماINT1 رو به ورودی اول انکدر و INT2 به ورودی دوم و INT3 به ورودی سوم وINT4 به ورودی چهارم وصل می کنیم پس با توجه به خصوصیت انکدر تا وقتی درخواست برای INT1 و INT2 وجود داره به درخواست INT3 نمی دهد ولی یه نکته‌ی دیگه هم هست یه وقفه وقتی در حال اجرا است نمیتونه دوباره درخواست وقفه بده یا بعبارتی دیگه مثلا دوبار پشت سرهم اجرای INT1 رو نمیتونیم داشته باشیم پس با توجه به نکات بالا بدترین حالت برای به تعویق افتادن INT3 به شکل زیر است:
INT1 INT2 INT1 INT2 INT1
که پس از اجرای بالا INT3 میتونه اجرا بشه پس ۳*۲۵+۲*۵۰