خانه » کامپیوتر و IT » سمافور‏ (Semaphore) چیست ؟

سمافور‏ (Semaphore) چیست ؟

نشانبر یا سمافور‏ به متغییری گفته می‌شود که در محیط‌های همروند برای کنترل دسترسی فرایندها به منابع مشترک به کار می‌رود. سمافور می‌تواند به دو صورت دودویی که تنها دو مقدار صحیح و غلط را دارا است و یا شمارنده اعداد صحیح باشد. از سمافور برای جلوگیری از ایجاد وضعیت رقابتی میان فرایندها استفاده می‌گردد. به این ترتیب، اطمینان حاصل می‌شود که در هر لحظه تنها یک فرایند به منبع مشترک دسترسی دارد و می‌تواند از آن بخواند یا بنویسد.

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

فرض کنید کتابخانه‌ای ۱۰ اتاق مطالعه یکسان دارد. برای جلوگیری از مجادله و نزاع، دانشجویانی که قصد مطالعه دارند‍، باید اتاقی را از یک پیشخوان درخواست دهند. وقتی که یک دانشجو مطالعه‌اش تمام شد و خواست اتاق را تحویل دهد، باید مجدداً به پیشخوان برگردد و نشان دهد که دیگر به اتاق احتیاج ندارد. اگر هیچ اتاق خالی وجود نداشت و همه اتاق‌ها از قبل اشغال شده بود، دانشجویان باید منتظر بمانند تا یکی از دانشجوها اتاقش را تحویل دهد. سپس دانشجویی که بالاترین اولویت را نسبت به بقیه دارد (مثلاً زودتر از بقیه آمده) می‌تواند اتاق خالی شده را انتخاب کند.

اصل اساسی این است که دو یا چند فرایند می‌توانند به وسیلهٔ سیگنال‌های ساده با یکدیگر همکاری کنند. هر فرایند را می‌توان در نقطهٔ خاصی از اجرا متوقف نموده، و تا رسیدن سیگنال خاصی از اجرای آن جلوگیری نمود. برای ایجاد این اثر، از متغییرهای خاصی به نام سمافور استفاده می‌گردد.

هر فرایندی که بخواهد به منبع مشترک دسترسی داشته باشد، اعمال زیر را انجام خواهد داد:

مقدار سمافور را بررسی می‌کند.

در صورتی که مقدار سمافور مثبت باشد، فرایند می‌تواند از منبع مشترک استفاده کند. در این صورت، فرایند یک واحد از سمافور می‌کاهد تا نشان دهد که یک واحد از منبع مشترک را استفاده نموده است.

در صورتی که مقدار سمافور صفر یا کوچکتر از صفر باشد، فرایند به خواب می‌رود تا زمانی که سمافور مقداری مثبت به خود بگیرد. در این حالت فرایند از خواب بیدار شده و از مرحلهٔ یک شروع می‌کند.

هنگامی که فرایند کار خود را با منبع تمام نمود، یک واحد به سمافور اضافه می‌گردد. هر زمان که مقدار سمافور به صفر و یا بیشتر برسد، یکی از فرایند(هایی) که به خواب رفته به صورت تصادفی یا به روش FIFO توسط سیستم‌عامل بیدار می‌شود. در این حالت بلافاصله فرایند بیدار شده منبع را در دست می‌گیرد و مجدداً پس از اتمام کار یک واحد از سمافور کم می‌شود. اگر مقدار سمافوری صفر باشد و چند فرایند بلوکه شده در آن وجود داشته باشد، با افزایش یک واحدی سمافور، مقدار سمافور همچنان صفر باقی می‌ماند اما یکی از فرایندهای بلوکه شده آزاد می‌شود.




تلگرام کول دانلود

آگهی

راهنما

> راهنمای دانلود: پس از کلیک بر لینک سرور ، گزینه دانلود عادی و سپس لینک دانلود پیشنهادی

کلیک کنید تا فایل آغاز به دانلود کند. / آموزش تصویری: اپرا

> آموزش چسباندن صوت دوبله به فیلم: در Km Player، کلیک راست کرده، سپس گزینه Open آن گاه

Load External Audio و در پایان فایل صوتی مورد نظر را برگزینید.

> جهت دیدن بدون مشکل فیلم ها، K-Lite (ویندوز) و BSPlayer یا QQPlayer (اندروید) دانلود کنید.

> دیدگاه ها و پیشنهادهای خود را با ما در میان بگذارید. رضایت شما هدف ماست.

> آموزش ادامه دانلود لینک های از کار افتاده

> آموزش سوییچ فایل های دوزبانه

> راهنمای کیفیت فیلم ها

دیدگاه ها

تاکنون ۳ نظر ثبت شده است.

  1. درامد عالیییییییییی!!!!!!

    فقط یکبار امتحان کنید!!!!!!!!

    ugift.rzb.ir
  2. ممنون . عالی بود .
  3. منبعشم نوشته بودی خوب بود
ایمیل شما آشکار نمی شود

نوشتن دیدگاه

تمامی حقوق نزد کول دانلود محفوظ است و کپی برداری از محتوا با ذکر و درج لینک ما به عنوان منبع بلامانع است. طراحی شده توسط پارس تمز