تالار گفتمان مانشت
سوال از همروندی سیستم عامل - نسخه‌ی قابل چاپ

سوال از همروندی سیستم عامل - ۸Operation - 28 آبان ۱۳۹۱ ۱۰:۲۵ ب.ظ

دوستان عزیز به نظر شما پاسخ صحیح کدوم هستش؟!آیا این سوال اشکال نداره؟!
آیا گزینه ۴ ممکن هستش!؟
[تصویر:  66104786889788409230.jpg]
پیشاپیش مرسی

سوال از همروندی سیستم عامل - foranyone - 30 آبان ۱۳۹۱ ۱۲:۰۷ ق.ظ

این سوال شبیه یکی از تست های کنکورهای سال های پیش طراحی شده بود

طراح فکر کرده که هر حلقه ۵۰ بار اجرا میشه (آخه تو تست کنکور ۵۰ بار اجرا میشد) به خاطر همین هیچوقت خروجی ۱۰۱ نمیشه و جواب گزینه دو میشه

ولی هرکدوم از for ها ۵۱ بار اجرا میشند به خاطر همین این تست غلطه! باید طراح بجای ۱۰۱ مثلا ۱۰۳ می نوشت.

RE: سوال از همروندی سیستم عامل - ۸Operation - 30 آبان ۱۳۹۱ ۱۲:۴۳ ق.ظ

(۳۰ آبان ۱۳۹۱ ۱۲:۰۷ ق.ظ)foranyone نوشته شده توسط:  این سوال شبیه یکی از تست های کنکورهای سال های پیش طراحی شده بود

طراح فکر کرده که هر حلقه ۵۰ بار اجرا میشه (آخه تو تست کنکور ۵۰ بار اجرا میشد) به خاطر همین هیچوقت خروجی ۱۰۱ نمیشه و جواب گزینه دو میشه

ولی هرکدوم از for ها ۵۱ بار اجرا میشند به خاطر همین این تست غلطه! باید طراح بجای ۱۰۱ مثلا ۱۰۳ می نوشت.

مرسی دوست عزیز
ولی با فرض غلط بودن سوال ایا باز حالتی امکان داره که گزینه ۴ درست بشه؟!

سوال از همروندی سیستم عامل - foranyone - 30 آبان ۱۳۹۱ ۱۱:۲۵ ق.ظ

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

یک سوال جالب و استانداردی که تو این سبک سوالات هست سوال زیر هست

[tex]x=0; p1:for(i=0; i<3; i ) x ; p2:for(i=0; i<3; i ) x--;[/tex]

حداکثر مقدار x برابر ۶ میشه.

RE: سوال از همروندی سیستم عامل - ۸Operation - 30 آبان ۱۳۹۱ ۰۲:۱۲ ب.ظ

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

یک سوال جالب و استانداردی که تو این سبک سوالات هست سوال زیر هست

[tex]x=0; p1:for(i=0; i<3; i ) x ; p2:for(i=0; i<3; i ) x--;[/tex]

حداکثر مقدار x برابر ۶ میشه.
خیلی ممنون دوست عزیز ...واقعا توضیح مفیدی بود...لطف کردی...
ولی اینکه بگیم هدف گزینه آخر نیست درست.... ولی اگر فقط و فقط بخوایم روی گزینه آخر اظهار نظر کنیم به نظر من محاله که مقدار هر دو دقیقا ۵۰ -۵۰ بشه!بازم ممنون ....

سوال از همروندی سیستم عامل - foranyone - 30 آبان ۱۳۹۱ ۰۵:۳۱ ب.ظ

خواهش میکنم

منم سر جلسه جواب رو زدم ۵۰ - ۵۰ :دی چون دقیقا مثل شما فکر کردم.

RE: سوال از همروندی سیستم عامل - javadem - 30 آبان ۱۳۹۱ ۰۸:۳۷ ب.ظ

(۳۰ آبان ۱۳۹۱ ۰۲:۱۲ ب.ظ)۸Operation نوشته شده توسط:  خیلی ممنون دوست عزیز ...واقعا توضیح مفیدی بود...لطف کردی...
ولی اینکه بگیم هدف گزینه آخر نیست درست.... ولی اگر فقط و فقط بخوایم روی گزینه آخر اظهار نظر کنیم به نظر من محاله که مقدار هر دو دقیقا ۵۰ -۵۰ بشه!بازم ممنون ....

چرا ممکنه که این اتفاق بیافته!
اگر تو یکی از فرایندها قبل از پرینت به فرایند دیگه سویچ بشه و در فرایند دیگه flag به ۵۰ برسه و چاپ هم بشه، بعد اگر بلا فاصله بعد از پرینت ۵۰ به فرایند قبلی سویچ بشه ، چون flag سراسریست و دستور پرینت باید اجرا بشه ، مقدار جاری flag یعنی همون ۵۰ دوباره چاپ میشه.
این موضوع به وضوح مشخصه!

RE: سوال از همروندی سیستم عامل - ۸Operation - 30 آبان ۱۳۹۱ ۱۰:۰۰ ب.ظ

(۳۰ آبان ۱۳۹۱ ۰۸:۳۷ ب.ظ)javadem نوشته شده توسط:  
(30 آبان ۱۳۹۱ ۰۲:۱۲ ب.ظ)۸Operation نوشته شده توسط:  خیلی ممنون دوست عزیز ...واقعا توضیح مفیدی بود...لطف کردی...
ولی اینکه بگیم هدف گزینه آخر نیست درست.... ولی اگر فقط و فقط بخوایم روی گزینه آخر اظهار نظر کنیم به نظر من محاله که مقدار هر دو دقیقا ۵۰ -۵۰ بشه!بازم ممنون ....

چرا ممکنه که این اتفاق بیافته!
اگر تو یکی از فرایندها قبل از پرینت به فرایند دیگه سویچ بشه و در فرایند دیگه flag به ۵۰ برسه و چاپ هم بشه، بعد اگر بلا فاصله بعد از پرینت ۵۰ به فرایند قبلی سویچ بشه ، چون flag سراسریست و دستور پرینت باید اجرا بشه ، مقدار جاری flag یعنی همون ۵۰ دوباره چاپ میشه.
این موضوع به وضوح مشخصه!
نکته همین جاست دوست عزیز که حداقل خروجی ۵۱ هستش! اگه بود ۵۱-۵۱ حرف شما درست بود

در ضمن flag3 هم سراسری نیست!!!!



سوال از همروندی سیستم عامل - javadem - 01 آذر ۱۳۹۱ ۰۲:۲۷ ب.ظ

بله کاملا صحیح میفرمایید، من علامت "{" بعد از print ها رو دیده بودم و فکر کردم که مربوط به حلقه هست.
در این صورت هیچ کدام از گزینه ها قابل تولید نیست. چون باید حتما یکی از اعداد تولید شده برابر با ۱۰۲ باشه و اون یکی عدد هر عدد بزرگتر از ۵۱ و کوچتر مساوی ۱۰۲ میتونه باشه. که هیچ کدام از گزینه ها شامل ۱۰۲ نیستند!

سوال از همروندی سیستم عامل - esi - 02 آذر ۱۳۹۱ ۰۱:۰۴ ق.ظ

Flag3 سراسری نیست متغیر Flag1 هم تغییر نمی کنه در کد برنامه ها، پس حتما هر فرآیند باید حتما ۵۱ بار(یا به اشتباه ،فرض ۵۰ بار) بشه، ساده ترین حالت اجرای ترتیبی فرآیند هاست یعنی اولی کامل اجرا بشه، بعد دومی کامل اجرا بشه، پس اولی خروجی ۵۱ رو چاپ می کنه، و دومی اگر بعد از اجرای دستور چاپ اولی کامل اجرا بشه، مقدار ۱۰۲ رو چاپ می کنه و اگر قبل از چاپ این کارو انجام بده، هم اولی و هم دومی ۱۰۲ رو چاپ می کنن.
پس در هر حالتی باید ۱۰۲ باشه دیگه، به هر حال با هر تیبی مقدار Flag2 به تعداد ۱۰۲ بار افزایش پیدا می کنه(انکریمنت) پس حتما باید یکی از خروجی ها ۱۰۲ باشه.
یکی حداکثر ۵۱ تا اجرا میشه پس اون یکی می تونه به تعداد نامشخصی در بین اجراهای اولی اجرا بشه پس یکی به تعداد ۵۱+k بار اجرا میشه و k تعداد بارهایی است که اون یکی در بین اجراهاش اجرا شده و دومی هم دقیقا تا ۱۰۲ میره جلو.
پس به نظره من هم سوال مشکل داره،