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

تعریف کلی سمافور - alireza01 - 09 دى ۱۳۹۵ ۰۲:۱۱ ب.ظ

توی کتاب مرجع نوشته شده که " هر سمافور در سیستم عامل دارای یک صف مخصوص به خود است ، در این صف فرایند هایی حضور دارند که در اثر استفاده از این سمافور متوقف شده اند . "

چطور یه فرایند در اثر استفاده از سمافور متوقف میشه ؟
کلا این جمله چی رو میخواد بگه ؟
ConfusedConfusedConfused

RE: تعریف کلی سمافور - Saman - 09 دى ۱۳۹۵ ۰۲:۴۵ ب.ظ

سلام
یه دونه Wait() یا همون down که روی سمافور بزنی یه فرآیند رو طبق شرط مسدود میکنه
البته بستگی به این داره که سمافور چند تایی باشه.و شما چند تا فرآیند داشته باشید
مثلا اگر سمافور همگام سازی باشه :

شما با زدن یه دونه wait یا همون down فرایند اول رو میندازی توی ناحیه بحرانی ، باقیشون هر چی هستن میان تو و مسدود میشن، حالا شما ۵ تا فرآیند داری، اولی یه دونه wait میزنه میره داخل، چهار تای بعد همه شون مسدود میشن توی یه صف.

بعد از خروج یه دونه up یا همون سیگنال میزنید روی اون صفت و اولین فرآیند مسدود بعدی اجازه ورود پیدا میکنه.

RE: تعریف کلی سمافور - alireza01 - 09 دى ۱۳۹۵ ۰۳:۰۵ ب.ظ

سلام و تشکر
(۰۹ دى ۱۳۹۵ ۰۲:۴۵ ب.ظ)samanbeigmiri نوشته شده توسط:  یه دونه Wait() یا همون down که روی سمافور بزنی یه فرآیند رو طبق شرط مسدود میکنه
البته بستگی به این داره که سمافور چند تایی باشه.و شما چند تا فرآیند داشته باشید
سمافور چند تایی باشه چه تاثیری روی عملکرد سمافور داره ؟؟

(۰۹ دى ۱۳۹۵ ۰۲:۴۵ ب.ظ)samanbeigmiri نوشته شده توسط:  شما با زدن یه دونه wait یا همون down فرایند اول رو میندازی توی ناحیه بحرانی ، باقیشون هر چی هستن میان تو و مسدود میشن، حالا شما ۵ تا فرآیند داری، اولی یه دونه wait میزنه میره داخل، چهار تای بعد همه شون مسدود میشن توی یه صف.
بعد از خروج یه دونه up یا همون سیگنال میزنید روی اون صفت و اولین فرآیند مسدود بعدی اجازه ورود پیدا میکنه.
یعنی wait میاد یکی از فرایند های صف سمافور رو استفاده میکنه و میبرش تو ناحیه بحرانی و signal یعنی یه فرایند به صف سمافور اضافه میکنه ، درسته ؟ اگه مثلا سمافور ۰ باشه ولی عمل wait داشته باشیم چی میشه اینجا ؟ یکم گیج شدم ، میشه با شکل اینجا رو یه کم توضیح بدی ؟ ممنونم

یا اینکه این سوال رو برام توضیح بده چه جوری هست .

[attachment=21076]


RE: تعریف کلی سمافور - Saman - 03 بهمن ۱۳۹۵ ۰۲:۳۴ ب.ظ

(۰۹ دى ۱۳۹۵ ۰۳:۰۵ ب.ظ)alireza01 نوشته شده توسط:  سلام و تشکر
(۰۹ دى ۱۳۹۵ ۰۲:۴۵ ب.ظ)samanbeigmiri نوشته شده توسط:  یه دونه Wait() یا همون down که روی سمافور بزنی یه فرآیند رو طبق شرط مسدود میکنه
البته بستگی به این داره که سمافور چند تایی باشه.و شما چند تا فرآیند داشته باشید
سمافور چند تایی باشه چه تاثیری روی عملکرد سمافور داره ؟؟

(۰۹ دى ۱۳۹۵ ۰۲:۴۵ ب.ظ)samanbeigmiri نوشته شده توسط:  شما با زدن یه دونه wait یا همون down فرایند اول رو میندازی توی ناحیه بحرانی ، باقیشون هر چی هستن میان تو و مسدود میشن، حالا شما ۵ تا فرآیند داری، اولی یه دونه wait میزنه میره داخل، چهار تای بعد همه شون مسدود میشن توی یه صف.
بعد از خروج یه دونه up یا همون سیگنال میزنید روی اون صفت و اولین فرآیند مسدود بعدی اجازه ورود پیدا میکنه.
یعنی wait میاد یکی از فرایند های صف سمافور رو استفاده میکنه و میبرش تو ناحیه بحرانی و signal یعنی یه فرایند به صف سمافور اضافه میکنه ، درسته ؟ اگه مثلا سمافور ۰ باشه ولی عمل wait داشته باشیم چی میشه اینجا ؟ یکم گیج شدم ، میشه با شکل اینجا رو یه کم توضیح بدی ؟ ممنونم

یا اینکه این سوال رو برام توضیح بده چه جوری هست .

سلام

z ده تا رد میکنه پردازه ۱۱هم مسدود میشه پشتش (چرا ۱۰ تا، چون z=10 هست){حالا دقت کن تعداد پردازه های منتظر پشت این میتونه از صفر باشه تا n} بعد اینجا گفته ۲۰ پردازه داریم، ده تاشو رد کردید، ۱۰تاش پشتش موند.
از این ۱۰ تا ۵تاشو y رد میکنه (خب ۵ تا هم پشتش گیر میکنن)
x هم یکی رد میکنه و چهار تا پشتش میمونن.
=================
حالا اگر سواله منظورش اینه که در کل چند تا پردازه پشت y میمونه یعنی با احتساب اینکه یه تعدادی هم پشت z گیر کردن میشه ۱۵ تا، و اگر صرفا منظورش پشت خود y هست میشه همون ۵ تا.
==============
بسنجید با سوال ۱۱ سراسری ۷۶ از کتاب حقیقت. تفاوت در اینه که تعداد فرایند در اونجا nتا هست