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

سمافور؟؟؟ - jafarir - 29 مهر ۱۳۹۱ ۱۰:۳۰ ق.ظ

سلام
سوال) اگر فرایند زیر به صورت همروند اجرا شوند و مقدار اولیه ی سمافور x=3 و y=6 ،حداکثر تعداد فرایند در حال اجرا در قسمت های AوBوC ؟؟

[tex]down(x)[/tex]
A
[tex]down(y)[/tex]
B
[tex]up(x)[/tex]
C
[tex]up(y)[/tex]

۱) A=3, B=3,C=3
*۲) A=3,B=3,c=6
۳) A=3,B=6,c=6
۴) A=3,B=6,C=9
سوال من اینه که چرا C=6 شده من Cرو ۳ تا بدست آوردم؟؟Huh
ممنون

RE: سمافور؟؟؟ - mp1368 - 29 مهر ۱۳۹۱ ۰۱:۰۵ ب.ظ

سلام دوست عزیز.

اگر در ابتدا سه فرآیند به طور هم زمان این مجموعه دستورات رو که فرض کن مجموعا داخل یک تابع هست اجرا کنن. با توجه به مقدار x=3 هر سه فرآیند با کم کردن یکی واحد از شمارنده سمافور وارد ناحیه A میشن که باعث میشه x=0 شه، پس هر فرآیندی که بخواد این دستورات رو اجرا کنه به حالت مسدود میره . حالا ادامه کار با همین سه فرآیندی که وارد شدن، سه فرآیند با اتمار کار در ناحیه A با کم کردن یک واحد از شمانده ی y ، وارد ناحیه B می شن پس مقدار شمارنده y=3 هست.
و حواسمون باشه تا اینجا هیچ فرآیندی هم اجازه وارد شدن به ناحیه A رو نداشته بدلیل x=0 .
حالا اگه توجه کنی میبینی این سه فرآیند با اتمام کارشون توی ناحیه B هر کدام یک عدد به شمارنده x اضافه میکنند که مقدار x=3 میشه که به ترتیب سه فرآیند که اول کار مسدود میشن وارد ناحیه A می شن که آنها هم با اتمام کار توی ناحیه A به ترتیب مقدار y=0 می کن و وارد ناحیه B می شن. و در ادامه هم با up کردن x وارد ناحیه C می شوند و با اون سه فرآیندی که قبلا وارد ناحیه C شده بودن همون حداکثر ۶ فرآیند در ناحیه C می شن . در ادامه هم اگر این ۶ فرآیند کارشون تموم بشه با ۶ تا up رو y دوباره مقدار y=6 میشه که باعث تکرار روند قبلی تکرار میشه .
ان شالله که مطلب واست جا افتاده باشه اگه ابهام داشتی جاییش بگو با هم برطرفش کنیم.

RE: سمافور؟؟؟ - sara_m - 16 آبان ۱۳۹۱ ۱۰:۴۹ ق.ظ

(۲۹ مهر ۱۳۹۱ ۰۱:۰۵ ب.ظ)mp1368 نوشته شده توسط:  حالا اگه توجه کنی میبینی این سه فرآیند با اتمام کارشون توی ناحیه B هر کدام یک عدد به شمارنده x اضافه میکنند که مقدار x=3 میشه که به ترتیب سه فرآیند که اول کار مسدود میشن وارد ناحیه A می شن که آنها هم با اتمام کار توی ناحیه A به ترتیب مقدار y=0 می کن و وارد ناحیه B می شن. و در ادامه هم با up کردن x وارد ناحیه C می شوند و با اون سه فرآیندی که قبلا وارد ناحیه C شده بودن همون حداکثر ۶ فرآیند در ناحیه C می شن . در ادامه هم اگر این ۶ فرآیند کارشون تموم بشه با ۶ تا up رو y دوباره مقدار y=6 میشه که باعث تکرار روند قبلی تکرار میشه .
ان شالله که مطلب واست جا افتاده باشه اگه ابهام داشتی جاییش بگو با هم برطرفش کنیم.

سلام
بچه ها من توی مبحث سمافور گیج شدم!!!!
همین مثال رو برا اینکه درک کنم بیشتر توضیح میدید؟
مخصوصا این تکه آخرش...Huh