۰
subtitle
ارسال: #۱
  
سمافور
سلام من توی مبحث سمافور مشکل دارم ممنون اگه در مورد سمافور و wait و signal توضیح کاملی بدید؟
ممنون.
ممنون.
۰
ارسال: #۲
  
RE: سمافور
(۱۳ آذر ۱۳۹۲ ۱۰:۲۸ ب.ظ)h_kh نوشته شده توسط: سلام من توی مبحث سمافور مشکل دارم ممنون اگه در مورد سمافور و wait و signal توضیح کاملی بدید؟
ممنون.
سلام دوست من
سمافور یک متغیر صحیح هست که تنها توسط دو تابع wait و signal میتوان مقدارش را تغییر داد.
فرض میکنیم مقدار اولیه سمافور s مساوی یک هست: S=1
تابع wait یکی از مقدار S کم میکند و اگر مقدار S منفی شد یعنی الان اجازه دسترسی به ناحیه بحرانی را ندارد پس در انتهای صف سمافور باید منتظر بماند تا نوبتش شود. در مورد مثال ما wait مقدار S را صفر میکند پس میتواند وارد ناحیه بحرانی شود ولی اگر فرایند دیگری wait را اجرا کند مقدار S منفی میشود و باید به انتهای صف سمافور برود. پس هر فرایند قبل از ورود به ناحیه بحرانی اش باید wait را اجرا کند که یعنی از سمافور اجازه بگیرد و پس از خروج از ناحیه بحرانی اش باید signal را اجرا کند. حالا signal چه کار میکند.
signal یک واحد به مقدار سمافور S اضافه میکند اگر حاصل کوچکتر مساوی صفر شد باید یک فرایند را از صف سمافور ازاد کند و برای اجرا به صف آماده پردازنده بفرستد. با این کار میگوید من ناحیه بحرانی ام تمام شد حالا یکی دیگه میتونه وارد ناحیه بحرانی اش شود. میدانیم فقط یک فرایند در هر لحظه میتواند در حال اجرای ناحیه بحرانی خود باشد(=اصل انحصار متقابل).
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close