مهندسی کامپیوتر - آزاد ۸۱ - نسخهی قابل چاپ |
مهندسی کامپیوتر - آزاد ۸۱ - ali.majed.ha - 21 اسفند ۱۳۹۵ ۰۶:۱۴ ب.ظ
با عرض سلام دوستان من هرچی راه حل این سوال رو می خونم، نمی فهمم چرا گزینه ی ۱ درسته ! یعنی نمی فهمم چرا x مقدار ۱ نمی تونه داشته باشه ؟ از راهنماییتون پیشاپیش سپاسگزارم |
RE: مهندسی کامپیوتر - آزاد ۸۱ - msour44 - 23 اسفند ۱۳۹۵ ۱۲:۵۹ ق.ظ
سلام اول باید بدانید که انجام افزایش یک واحد با سه دستور اسمبلی پباده سازی شده و بینشان می تواند وقفه رخ دهد. در کل ۱۰ بار دستورinc باید اجرا بشه هر حلقه ۵ بار پس حداکثر مقداری که x می تواند بگیرد ۱۰ است.ولی این امکان وجود داره که بتوان تعدادی از عمل های جمع را خنثی کرد. مثلا فرایند A ابتدا اجرا صفر را در ثبات خود قرار می دهد و inc ولی قبل اینکه نتیجه رو که ۱ است در x قرار دهد به B سوئیج می شود و B مقدار X را ۰ می بیند و هر ۵ بار inc انجام و مقدار x برابر ۵ می شود اگر A دوباره اجرا شود از جای که وقفه خورده بود مقدار تباتش که ۱ است را در x قرار می دهد که ۱ می شود بعد ۴ بار دیگر Inc ودر کل ۵ می شود یعنی با این سناریو ۵ عمل جمع خنثی شد. اینکه چرا x نمی تواند یک شود به این دلیل که باید در اخرین عمل inc در ۱۰ مورد مقدار x باید صفرباشد تا به ثبات منتقل شود وبعد اخرین inc انجام تا x یک شود که این غیر ممکن است چون قبل از این روند ۹ بار عمل inc انجام شده که در ان حداقل x یکبار در ثبات لود شده و inc .شده. اگر تعداد تکرار حلقه ها را کم کنیدبا مسئله ساده تر روبرو می شوید و سعی کنید در ببین انجام عمل افزایش بین دو فرایند سویئج کنید مثلا هر فرایند فقط یک بارX++ را اجر کند انوقت x می تواند مقدار ۱ هم بگیردو به ترتیب تعداد تکرار ها را زیاد و از سنارویو های مختلف سوئیج بین فرایند ها استفاده کنید. |
RE: مهندسی کامپیوتر - آزاد ۸۱ - delete4all - 23 اسفند ۱۳۹۵ ۰۸:۴۱ ق.ظ
(۲۳ اسفند ۱۳۹۵ ۱۲:۵۹ ق.ظ)msour44 نوشته شده توسط: سلام سلام خیلی ممنون ک وقت میزارید فقط جسارتا میشه یکم باز تر بگید ( وقفه ها دستورات اسمبلیش رو میدونم) اما هرچی نگاه میکنم متوجه نمیشم چطور میتونه ۲ بشه در آخر!؟ یا ۳ بشه!؟ یا ۴!؟ اما ۵ میتونه بشه این مشخص تره |
RE: مهندسی کامپیوتر - آزاد ۸۱ - msour44 - 23 اسفند ۱۳۹۵ ۰۱:۰۰ ب.ظ
(۲۳ اسفند ۱۳۹۵ ۰۸:۴۱ ق.ظ)delete4all نوشته شده توسط:سلام(23 اسفند ۱۳۹۵ ۱۲:۵۹ ق.ظ)msour44 نوشته شده توسط: سلام A ابتدا اجرا و عمل جمع را انجام ولی قبل از اینکه مقدار یک ر ادر X قرار دهد به B سوئیج می شود و B چهار بار عمل جمع انجام می دهدو x را ۴ میکند بعد به A سوئیج و مقدار یک را که در ثباتش وجود داره در x قرار می دهد یعنی خنثی کردن ۴ جمع B بعداگر در این لحظه به B برگریدم مقدار X که الان ۱ است را به ثبات خود منتقل بعد افزایش ولی قبل این که ۲ را در x قرار دهد به A برگردیم ۴ جمع باقی مانده را اجرا و تمام شود وبه B برگردیم مقدار ۲ را در ثبات خود دارد که ان را در x قرار می دهد.برای حالت های دیگر مثلا A درابتدا یک بار افزایش را انجام می دهد و در بار دوم قبل از این که ۲ را در x قرار دهد وقفه می خورد B چهار بار اجرا بعد به A سوئیج می شود که مقدار ۲ را در ثباتش داردو ان را در x قرار می دهد باز ۴ جمع B خنثی شد اگر به B برگردیم ۲ را در x میبیند و به ثبات خود منتقل می کند وافزایش ولی قبل از اینکه ۳ را در x قرار دهد به A سوئیج می شود و ۳ جمع باقی مانده ان تمام می شود ولی وقتی که به B برگردیم مقدار ۳ را در ثباتش دارد که ان را به x منتقل می کند. سعی کنید همین روند یکبار وقتی A دوبار عمل جمع را انجام داده و بعد از سومی و قبل از اینکه ۳ ر ادر x قرار دهد اولین وقفه را بزنید ومثل بالا عمل کنید از طرف دیگر برای B هم می توانید به جای ۴ بار اجرا ۳ بار اجرا شود وبسیاری سناریو های مختلف دیگر. |
RE: مهندسی کامپیوتر - آزاد ۸۱ - delete4all - 23 اسفند ۱۳۹۵ ۰۹:۱۸ ب.ظ
(۲۳ اسفند ۱۳۹۵ ۰۱:۰۰ ب.ظ)msour44 نوشته شده توسط: سلام احسنت بی صبرانه منتظر اعلام رتبه شما ( و چند نفر دیگه ) هستم ایشالا همه موفق باشیم |
RE: مهندسی کامپیوتر - آزاد ۸۱ - ali.majed.ha - 24 اسفند ۱۳۹۵ ۰۵:۵۵ ب.ظ
دوست گرامی، بسیار سپاسگزارم از وقت و حوصله ای که صرف می کنید انشاالله موفق و پیروز باشید |