تالار گفتمان مانشت
سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - نسخه‌ی قابل چاپ

سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - joyebright - 03 آبان ۱۳۹۴ ۱۲:۳۸ ب.ظ

[attachment=19485][attachment=19486]
سلام دوستان
یه سوال مربوط به سمافورها است که تو کتاب پارسه دکتر حقیقت هم یه نکته گفته (هایلایت زرد)
سوال من اینه که چرا تعداد فرایندهای بین مثلا P(X) , V(X) شده ۵ تا ، فقط این قسمتش و متوجه نشدم چطوری تعداد فرایندهای بین دو ناحیرو نوشه به ترتیب ۵ ، ۱۰ ، ۱۰ .


Sent from my SM-P601 using Tapatalk

RE: سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - neghab01 - 03 آبان ۱۳۹۴ ۰۳:۲۲ ب.ظ

اگر مطمئنید که کتابتون اشتباه چاپی نداره : چون شما نوشتید :

(V(X وووووو (P(Y
که توی کتاب این نیست.توی کتاب اینه : (V(X ووووو (P(X
به این که چه فرایندی خوابه و چه فرایندی بیدار دقت کنید اولا.
به این دقت کنید که چرا تعدادی فرایند میتونه حضور داشته باشه و چرا تعدادی میتونن برن توی صف خوابیده ها.(این میشه همون مفهوم سمافور)
اگر با این توضیحات مشکلتون کلا حل نشد از پایه سمافور رو بخونید.
در ضمن اون نکته ای که اون بالا نوشته،بار ها و در مد های مختلف اون رو تکرار کرده توی متن کتاب و به نظرم نکته ای برای توجه هست و نه اینکه یک تست نکته دار باشه.

RE: سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - joyebright - 03 آبان ۱۳۹۴ ۰۹:۴۵ ب.ظ

(۰۳ آبان ۱۳۹۴ ۰۳:۲۲ ب.ظ)neghab01 نوشته شده توسط:  اگر مطمئنید که کتابتون اشتباه چاپی نداره : چون شما نوشتید :

(V(X وووووو (P(Y
که توی کتاب این نیست.توی کتاب اینه : (V(X ووووو (P(X
به این که چه فرایندی خوابه و چه فرایندی بیدار دقت کنید اولا.
به این دقت کنید که چرا تعدادی فرایند میتونه حضور داشته باشه و چرا تعدادی میتونن برن توی صف خوابیده ها.(این میشه همون مفهوم سمافور)
اگر با این توضیحات مشکلتون کلا حل نشد از پایه سمافور رو بخونید.
در ضمن اون نکته ای که اون بالا نوشته،بار ها و در مد های مختلف اون رو تکرار کرده توی متن کتاب و به نظرم نکته ای برای توجه هست و نه اینکه یک تست نکته دار باشه.

بله حق با شماست یه اشتباه تایپی از طرف من بود با این حال تو عکسی که ضمیمه کردم کاملا مشخص بود
من سوالم اینه که برای مثال چطور تعداد فرایندهای اولیه initialization ما بین py , vy تو این سوال بخصوص شده ۵ تا؟
این واضح است که از سمافور برای هدر نرفتن wakeup استفاده میشه ، اما سوال من فقط در یک مورد خاص تو این اینه که مقادیر اولیه فرایندها قبل از اعمال عملیات signal یا wait به چه صورت تعیین شدن . اگه منظورتون قسمت خاصی از کتاب است بگید تا مطالعه کنم
بازم مرسی

RE: سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - neghab01 - 03 آبان ۱۳۹۴ ۱۰:۲۳ ب.ظ

عکس هایی که آپ میکنید که کلا همیشه فیلتر هست Smile.من خودم سرچ کردم و تست رو پیدا کردم.
اولا توی متن سوال تعداد فرایند هایی که میتونن وارد بشن رو گفته.
این که دقیقا چطور میشه اینو تعیین کرد برو قسمت انحصار متقابل همون اوایلش رو دوباره خوب بخون که در مورد تعیین مقدار mutex هست که با سعی و خطا پیدا شده!(البته ارتباط مستقیم داره با تعداد فرایند ها)
خودشم توی سوال گفته که حداکثر سمافور y برابر ۵ هست(پس دقت کن از ۱۰ تایی که z فراهم میکنه حداکثر ۵ تا میتونن وارد y بشن).خب همین یعنی ۵ تا فرایند میتونن وارد بشن دیگه! از طرفی ۵ تای دیگه هم از ۱۰تایی که z فراهم میکنه پشت y میخوابه.
برای خودِ z هم ۱۰ تا حق ورود داره با توجه به اندازه سمافور z ؛ هر چند تای دیگه بیاد توی صف میخوابه.(n تا فرایند بعدی در صف میخوابند)
من دوستانه بهتون میگم: حتما دوباره این بخش رو بخونید.و چون سوال پرسیدید این رو پیشنهاد میدم.

RE: سمافور ، کارشناسی ارشد کامپیوتر سراسری ۷۶ - محمد رعیت - ۰۳ آبان ۱۳۹۴ ۱۱:۳۱ ب.ظ

"اما سوال من فقط در یک مورد خاص تو این اینه که مقادیر اولیه فرایندها قبل از اعمال عملیات signal یا wait به چه صورت تعیین شدن . اگه منظورتون قسمت خاصی از کتاب است بگید تا مطالعه کنم "


مقادیر اولیه شمارنده سمافورها توسط کاربر مشخص میشه وشرایط مسئله و راه حل کاربر برای ایجاد همروندی مقدار شمارده رو مشخص میکنه ، میتونه از یک سمافور دودویی استفاده کنه که در این صورت شمارنده فقط مقدار صفر ویک رو میتونه داشته باشه فرض کنید یک حافظه که یا باید عمل خواندن ازش انجام بشه یا عمل نوشتن که در اینجا از راهنما(سمافور) دو مقداری میشه استفاده کرد

و یا در حالتی که تعداد درخواست کننده ها محدود هست میشه یک سقفی رو برای شمارنده سمافور در نظر گرفت برای مثال یک فروشگاه اینترنی که نهایتا میتونه به ۵ نفر در ان واحد سرویس بده که اگه تعداد درخواست از این ماکزیمم بیشتر بشه فراینده صدا زننده باید صبر کنه
و یا اینکه میشه از یک شمارنده نامحدود استفاده کرد که فقط منفی شدن این شمارنده میتونه باعث بلوکه شدن فرایند صدا زننده بشه

مثلا در مسئله تولید کننده مصرف کننده یک تولید کننده میتونه بینهایت تولید داشته باشه پس شمارنده مسئله در اینحا نامحدود هست و فقط هنگامی که مقدار محصول منفی شد(انبارخالی شد) فرایند مصرف کننده باید صبر کنه(بلوکه میشه )

کتاب سیستم عامل دکتر پدرام فصل پنجم ترجمه روانی از سمافور(راهنما)رو بیان کرده که برای شروع میتونه بهتون کمک کنه
نیازی هم به خرید کتاب نیست کتابخانه های عمومی معمولا این کتاب رو دارند