زمان کنونی: ۲۵ مهر ۱۳۹۷, ۰۳:۴۱ ق.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

ارزیابی کد استفاده از سمافور

نظرسنجی: سطح سوال پیش روتون رو چطور ارزیابی می کنید؟
این نظرسنجی بسته شده است.
  • ۰%
    غیر استاندارد و مشکل ۰%
۰ ۰%
  • ۶۶/۶۷%
    غیر استاندارد و ساده ۶۶/۶۷%
۲ ۶۶/۶۷%
  • ۳۳/۳۳%
    استاندارد و مناسب ۳۳/۳۳%
۱ ۳۳/۳۳%
در کل ۳ رأی ۱۰۰%
*شما به این گزینه‌ی رأی داده‌اید. [نمایش نتایج]

ارسال:
۲۲ آذر ۱۳۹۰, ۱۰:۴۸ ق.ظ (آخرین ویرایش در این ارسال: ۲۲ آذر ۱۳۹۰ ۰۱:۱۷ ب.ظ، توسط هاتف.)
ارزیابی کد استفاده از سمافور
سلام
در تکه کد زیر کدام خط غلط/درسته و چـــــــــرا؟ (گزینه نمیدم چون ترجیح میدم پاسخ هامون با دلیل باشه و بررسی اش کنیم)

Semaphore s=1 LINE0
}()main
-----
-----
-----

down(s) LINE1
up(s) LINE2
if (s.count>0) up(s) LINE3

-----
-----
-----

s.count=4 LINE4


-----
-----
-----
{

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

لطفا به شیوه جواب بدید:
خط۰: غلط زیرا ..
خط۱: درست زیرا..
.
.

هفت شهر عشق را عطار گشت، ما هنوز اندر خم یک کوچه ایم!
یافتن تمامی ارسال‌های این کاربر
 سپاس‌گزاری شده توسط: mamat
ارسال:
۲۲ آذر ۱۳۹۰, ۱۲:۵۶ ب.ظ
ارزیابی کد استفاده از سمافور
متغییر s سراسری برای سمافور هست نمیتواند در داخل برنامه نمیتواند خوانده یا در آن نوشته شود.

و فقط up , down یا همان(wait , signal) میتوانند به مقدار آن دسترسی داشته باشند.

پس خطوط ۳ و ۴ غلط هستند.

من اگر چه بندگی را به خدا رسانده باشم
همه بنده ام خدایا به تو می رسد خدایی

بکشان به عاشقانت که کشی به جرم عشقم
مگرم نه وعده دادی که کشی و بر سر آیی

اگه میخوای منو بازم ببینی
من همینجام پشت اون لبخند قدیمی
حلال کنید
یافتن تمامی ارسال‌های این کاربر
 سپاس‌گزاری شده توسط: mfXpert
ارسال:
۲۲ آذر ۱۳۹۰, ۰۹:۴۶ ب.ظ
ارزیابی کد استفاده از سمافور
خط ۱ , ۲ , ۳ درست هست چون دقیقا اعمالی که میشه روی سمافور انجام داد همین‌ها هست. تعریف، مقدار دهی اولیه و اجرای رویه های up و down.
خطوط ۴,۵ هم غلط هست چون نمیشه به داخل سمافور دسترسی داشت.

از زندگانیم گله دارد جوانیم
شرمنده ی جوانی از این زندگانیم
"شهریار"
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۲ آذر ۱۳۹۰, ۱۰:۳۸ ب.ظ (آخرین ویرایش در این ارسال: ۲۳ آذر ۱۳۹۰ ۱۰:۴۹ ق.ظ، توسط رضا_ایرانی.)
RE: ارزیابی کد استفاده از سمافور
خط صفر درسته، مثل ما میتونیم به تعداد منابع فعلی به سمافور مقدار اولیه بدیم.
خطوط یک و دو هم درسته.
خطوط سه هم میتونه درست باشه. یعنی اگر طراحی سمافور و سیاستهای پنهان سازی اجازه بده و متغیر COUNT به صورت PRIVATE نباشه میتونیم مقدار سمافور رو بخونیم. مثلا در کتاب استالینگ در تفسیر مقدار جاری سمافور نوشته:
at any time, the value of s.count can be interpreted as follows:
s.count >= 0 Confused.count is the number of processes that can execute semWait(s)
without suspension (if no semSignal(s) is executed in the meantime). Such
situations will allow semaphores to support synchronization as well as mutual
exclusion.
s.count < 0:The magnitude of s.count is the number of processes suspended in
s.queue

خط چهار درست نیست.

خدایا مرا ببخش به خاطر تمام درهایی که کوبیدم و خانه ی تو نبود...
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۳ آذر ۱۳۹۰, ۰۱:۱۷ ق.ظ
ارزیابی کد استفاده از سمافور
نه سخت نیست ولی وقتی میبینی دیگران جواب درستو دادن دیگه حرفی برای گفتن نمیمونه!
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۳ آذر ۱۳۹۰, ۰۱:۱۸ ق.ظ
ارزیابی کد استفاده از سمافور
قضیه چیه؟ تاحالا همچین پیغامی تو ارسال پست ندیده بودم!!!!!!!
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۳ آذر ۱۳۹۰, ۰۹:۴۲ ق.ظ
RE: ارزیابی کد استفاده از سمافور
(۲۳ آذر ۱۳۹۰ ۰۱:۱۸ ق.ظ)narges_r نوشته شده توسط:  قضیه چیه؟ تاحالا همچین پیغامی تو ارسال پست ندیده بودم!!!!!!!
من این مشکل رو از طریق آقا فرداد در حال پیگیری هستم، نمی دونم چرا این تاپیک اینطور شده اما شما جواب بدید من سعی می گنم زودتر بیام و تایید کنم.


(۲۳ آذر ۱۳۹۰ ۰۱:۱۷ ق.ظ)narges_r نوشته شده توسط:  نه سخت نیست ولی وقتی میبینی دیگران جواب درستو دادن دیگه حرفی برای گفتن نمیمونه!
خوب شما کمی صبور باشید و نظر خودتون رو با دلیل بفرمائید شاید دنبال نکته ای توی همین جواب‌ها بودم Smile


(۲۲ آذر ۱۳۹۰ ۱۰:۳۸ ب.ظ)رضا_ایرانی نوشته شده توسط:  خطوط سه هم میتونه درست باشه. یعنی اگر طراحی سمافور و سیاستهای پنهان سازی اجازه بده و متغیر COUNT به صورت PRIVATE نباشه میتونیم مقدار سمافور رو بخونیم. مثلا در کتاب استالینگ نوشته:
at any time, the value of s.count can be interpreted as follows:
s.count >= 0 Confused.count is the number of processes that can execute semWait(s)
without suspension (if no semSignal(s) is executed in the meantime). Such
situations will allow semaphores to support synchronization as well as mutual
exclusion.
s.count < 0:The magnitude of s.count is the number of processes suspended in
s.queue
خوب دقیقا می خواستم به همین مطلب برسم، خط سه درسته یا غلط؟
میتونه درست باشه قطعیت نداره، این جمله اشتباهه، اگر این کد رو بدهند، در مورد خط ۳ چه نظری میدید؟
اکثر دوستان فرمودید که غلطه.
خوب به من بگید اگر غلطه چه اشکالی داره مقدار count رو بخونیم؟ ما که توش ننوشتیم، فقط ازش خوندیم!
ضمنا یکی از روش های ساخت سمافور، سمافوری بود که مقدار شمارهنده منفی هم میگرفت، اگر عدد منفی میشد، تعداد فرآیند های خوابیده توی صف رو نشون میداد، حالا اگر این امکان هست، یعنی میشه اونرو خوند، و اگر نشه این رو خوند، پس چه فایده ای داره؟

خوب ادامه بحث رو روی این ابهام آخر پیش ببریم؟

هفت شهر عشق را عطار گشت، ما هنوز اندر خم یک کوچه ایم!
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۳ آذر ۱۳۹۰, ۰۹:۴۷ ق.ظ
ارزیابی کد استفاده از سمافور
تست کنم ببینم چی شده!!


از صدای سخن عشق ندیدم خوشتر ............ یادگاری که در این گنبد دوار بماند..
.
یافتن تمامی ارسال‌های این کاربر
ارسال:
۲۳ آذر ۱۳۹۰, ۰۹:۵۰ ق.ظ
ارزیابی کد استفاده از سمافور
مشکلی ندیدم هاتف جان . شبیه سایر تاپیکهاست.


از صدای سخن عشق ندیدم خوشتر ............ یادگاری که در این گنبد دوار بماند..
.
یافتن تمامی ارسال‌های این کاربر
ارسال: #۱۰
۲۳ آذر ۱۳۹۰, ۰۹:۵۹ ق.ظ
ارزیابی کد استفاده از سمافور
(۲۳ آذر ۱۳۹۰ ۰۹:۵۰ ق.ظ)Fardad-A نوشته شده توسط:  مشکلی ندیدم هاتف جان . شبیه سایر تاپیکهاست.
برای من هم عجیبه که تایید لازمه! منم بررسی کردم تنظیمات خاصی نداره برای اینکار!
بهرحال دوستان پاسخ بدند، حتما تایید خواهم شد.

هفت شهر عشق را عطار گشت، ما هنوز اندر خم یک کوچه ایم!
یافتن تمامی ارسال‌های این کاربر
ارسال: #۱۱
۲۳ آذر ۱۳۹۰, ۰۲:۰۵ ب.ظ
ارزیابی کد استفاده از سمافور
تو تعریف سمافور اومده که تنها اعمال قابل انجام روی سمافورها اعمال up و down هستش و تمام اجزای داخلی سمافور از جمله متغیرهاش و صف سمافور از دید کاربر مخفی هستن.
مورد دوم اینکه اصلا نیازی نیست کاربر به متغیری مثل count دسترسی داشته باشه چون کاربردی برای کاربر نداره

(۲۲ آذر ۱۳۹۰ ۱۰:۳۸ ب.ظ)رضا_ایرانی نوشته شده توسط:  
at any time, the value of s.count can be interpreted as follows:
s.count >= 0 Confused.count is the number of processes that can execute semWait(s)
without suspension (if no semSignal(s) is executed in the meantime). Such
situations will allow semaphores to support synchronization as well as mutual
exclusion.
s.count < 0:The magnitude of s.count is the number of processes suspended in
s.queue
تو این قسمت گفته نشده که میشه به متغیر count دسترسی داشت بلکه فقط گفته که مقدار این متغیر در هر لحظه چه معنی داره

One who is raised by sword can't be beaten. One who is toughened by fire can't be burned
یافتن تمامی ارسال‌های این کاربر
ارسال: #۱۲
۲۳ آذر ۱۳۹۰, ۰۲:۲۱ ب.ظ (آخرین ویرایش در این ارسال: ۲۳ آذر ۱۳۹۰ ۰۷:۰۷ ب.ظ، توسط هاتف.)
RE: ارزیابی کد استفاده از سمافور
(۲۳ آذر ۱۳۹۰ ۰۲:۰۵ ب.ظ)mfXpert نوشته شده توسط:  مورد دوم اینکه اصلا نیازی نیست کاربر به متغیری مثل count دسترسی داشته باشه چون کاربردی برای کاربر نداره
خوب پس روشن شد که اون خط غلطه.
فایدش شاید این بود که در شمارنده های منفی می تونستیم بفهمیم چند فرآیند الان در صف سمافور خوابیدند، حالا شاید کاربرد خاصی نتونم الان براش بیارم اما

حالا سوال اینه،ما که نخواستیم مقدارش رو rewrite کنیم، اشکالی داشت اگر اجازه فقط خواندن برای این متغیر می ذاشتند؟

هفت شهر عشق را عطار گشت، ما هنوز اندر خم یک کوچه ایم!
یافتن تمامی ارسال‌های این کاربر
ارسال: #۱۳
۲۳ آذر ۱۳۹۰, ۰۵:۵۱ ب.ظ
ارزیابی کد استفاده از سمافور
تو کتاب اقای حقیقت دقیقا نوشته شده که کابر فقط سه عمل میتونه روی سمافور انجام بده:
-تعریف سمافور و مقدار دهی اولیه به شمارنده
-اجرای فراخوانی سیستمی down
-اجرای فراخوانی سیستمی up
وبعد از این سه جمله دقیقا ذکر شده که برنامه های سطح کاربر نمیتونن مقدار شمارنده سمافور یا تعداد فرایندهای درون صف ان را تست یا مستقیما انهارو تغییر بدن
پس بنظر من خط ۳ اشتباهه
اون توضیحی که یکی از دوستان از شمارنده سمافور از کتاب استالینگ گذاشتن فقط شمارنده سمافورو بررسی کرده و دلیلی برای اینکه به ما نشون بده خط ۳ درست هست نداره!
یافتن تمامی ارسال‌های این کاربر
ارسال: #۱۴
۲۳ آذر ۱۳۹۰, ۰۷:۴۶ ب.ظ
ارزیابی کد استفاده از سمافور
خوب چون شمارنده سمافور یک متغییر مشترک هست دسترسی بهش حتی فقط خوندنش تولید انحصار متقابل میکنه. اگر مثلا مثل خط ۳ بهش دسترسی وجود داشته باشه ممکنه بعد از اینکه شمارنده چک شد وفقه ساعت ایجاد بشه و دیگه up در خط ۳ اجرا نشه و دوباره بعد از اینکه برگشتیم به خط ۳ برای ادامه برنامه ممکنه شمارنده سمافور تغییر کرده باشه درحالی که ما اونو قبلا چک کردیم و الان دیگه از این تغییر باخبر نمیشیم
پس دسترسی بهش کلا جایز نیست
یافتن تمامی ارسال‌های این کاربر
 سپاس‌گزاری شده توسط: mamat
ارسال: #۱۵
۲۳ آذر ۱۳۹۰, ۰۸:۰۴ ب.ظ
ارزیابی کد استفاده از سمافور
(۲۳ آذر ۱۳۹۰ ۰۷:۴۶ ب.ظ)narges_r نوشته شده توسط:  پس دسترسی بهش کلا جایز نیست
خیلی خوبه، دقیقا، می خواستم به همین نکته اشاره کنم که حتی خواندن اش هم مجاز نیست، و البته دقت کنیم اگر سمافور با شماره منفی ساخته شده، فقط بخاطر زیبایی ست و هیچ فرقی نداره.
راستی در مورد خط ۰ احتمال می دادم بعضی اشتباه کنند که چرا به یک استراکچر مستقیما مقداردهی شده و چطور این مقدار دقیقا داخل فیلد کانتر قرار می گیره! خواستم بگم این syntax برنامه C هست که به این صورته، کلا نباید دنبال ایراد syntax باشیم.

با اینکه بحث خاتمه یافته، یک روز مبحث باز می مونه تا اگر شبهه ای باشه مطرح بشه و بعد بسته میشه.

هفت شهر عشق را عطار گشت، ما هنوز اندر خم یک کوچه ایم!
یافتن تمامی ارسال‌های این کاربر


پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close