۰
subtitle
ارسال: #۱
  
سمافور IT94
سلام خسته نباشید میخواستم بپرسم در این سوال اگر طیق روند زیر پیش بریم
اول پروسه P0 اجرا میشه و S0=0
بعد s1=s2=1
بعد پروسه p1اجرا میشه و s1=0
بعد s0=1
بعد پروسه p2 اجرا میشه و s2=0
حالا سوالم اینه سمافور باینریه و برابر یک یعنی s0=1 با سیگنال روی s0 وضعیت چی میشه ؟ چون سمافور باینریه نمیدونم .تو کدش نوشته اگر صف مسدود خالی بود شمارنده برابر یک میشه اگر نبود یکی از پروسس ها میره تو صف اماده . اینجا صف مسدود خالیه چون قبلش s0 صفر نبوده که بعد wait مسدود بشه پس مقدار s0 دوباره برابر یک میشه و اجرا میشه یه صفر دیگه چاپ میکنه درست گفتم؟
تو یه جا دیدم نوشته گزینه سه درسته اما چرا؟
۰
ارسال: #۲
  
RE: سمافور IT94
(۱۸ اسفند ۱۳۹۵ ۰۱:۰۹ ب.ظ)Hopegod نوشته شده توسط: سلام خسته نباشید میخواستم بپرسم در این سوال اگر طیق روند زیر پیش بریم
اول پروسه P0 اجرا میشه و S0=0
بعد s1=s2=1
بعد پروسه p1اجرا میشه و s1=0
بعد s0=1
بعد پروسه p2 اجرا میشه و s2=0
حالا سوالم اینه سمافور باینریه و برابر یک یعنی s0=1 با سیگنال روی s0 وضعیت چی میشه ؟ چون سمافور باینریه نمیدونم .تو کدش نوشته اگر صف مسدود خالی بود شمارنده برابر یک میشه اگر نبود یکی از پروسس ها میره تو صف اماده . اینجا صف مسدود خالیه چون قبلش s0 صفر نبوده که بعد wait مسدود بشه پس مقدار s0 دوباره برابر یک میشه و اجرا میشه یه صفر دیگه چاپ میکنه درست گفتم؟
تو یه جا دیدم نوشته گزینه سه درسته اما چرا؟
بله درسته.کلا چون سمافور باینریه فقط صفر و یک میتونه بگیره. حالا اگه ده بارم سیگنال بخوره روش بازم مقدار یکه. طبق کدم که خودت گفتی درسته....
نه گزینه ۳ غلطه. دو تا سناریو داره حلش:
۱) بعد از اولین پرینت ، دوتا سیگنال باهم اجرا شه بعد دوتا فرایند p1وp2هم به ترتیب اجراشن که دراینصورت s0برابر۲ میشه که معنی نداره چون باینریه پس همون ۱میشه و میاد یه بار دیگه پرینت میکنه.(علمیش طبق همون کد سیگنال و ویت باینریه من خودمونی گفتم طبق روال عادیه سمافورا)
۲)بعد از اولین پرینت،دوتا سیگنال اجرا میشن.فرایند p1اجرا میشهs0یک میشه بعد میره p0 یه بار دیگه اجرا میشه دومین پرینتو میگیره. بعد p2اجرا میشه دوبارهs0یک میشه بعد میره p0اجرا میشه دوباره یه پرینت دیگه میگیره.
پس طبق این دوتا سناریو حداقل دوبار اجرا میشه. نه دقیقا سه بار.چون ممکنه یا حالت ۱ پیش بیاد یا ۲
۰
ارسال: #۴
  
RE: سمافور IT94
۰
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close