Joung در ]۷۳[ الگوریتمی توزیع شده ولی همراه با متغیر مشترک برای مسئله انحصار متقابل گروهی (به عبارت دیگر CTP) ارائه کرد. این الگوریتم براساس حافظه مشترک کار می‌کند. این الگوریتم پیچیدگی زمانی و پیچیدگی تعویض همچون الگوریتم CTP-C دارد ولی درجه همروندی آن نامحدود نیست و برابر با O() می‌باشد. علاوه بر Joung مقالات دیگری نیز راه‌ حل‌ هایی برای مسئله انحصار متقابل گروهی براساس حافظه مشترک ارائه کردند که معروف‌ترین آن‌ها ]۷۵,۷۴[ هستند.
پایان نامه - مقاله - پروژه
Joung برای مسئله انحصار متقابل گروهی در ]۷۶[ الگوریتمی براساس تبادل پیام و در بستر شبکه ارائه کرد. این الگوریتم بر پایه الگوریتم Ricart ]77[ طراحی شده است. در این الگوریتم درخواست به‌صورت Req(<I,sni>,X) ارسال می‌شود که sni شماره ترتیب پراسس Pi است و X، جلسه درخواستی پراسس Pi است. شماره ترتیب همان Time Stamp در الگوریتم Lamport است و این الگوریتم مانند الگوریتم Ricart ]77[ از الگوریتم Lamport برای تعیین رخداد‌ها و اولویت‌دهی استفاده می‌کند.
الگوریتم Ricart ]77[ به این صورت برای تطبیق با CTPتغییر می‌کند: وقتی پراسس Pi قصد ورود به جلسه، F را دارد، درخواست خود را به صورت Req(<I,sni>,X)، پخش همگانی می‌کند و به تمام پراسس‌ها (به غیر از خودش) ارسال می‌کند. زمانی Pi می‌تواند وارد اتاق جلسه (ناحیه بحرانی خود) شود که از همه پراسس‌ها جواب درخواستی که فرستاده است را دریافت کند که این جواب به‌صورت Ack(j) از پراسس Pj دریافت خواهد شد. پراسس Pj از قوانین زیر برای جواب دادن به درخواست پراسس Pi استفاده می‌کند:
پراسس Pj بلافاصله Ack(j) را به Pi می‌فرستد، اگر علاقه‌ای برای برگزاری جلسه دیگری نداشته باشد و یا اینکه علاقه‌مند به برگزاری جلسه دیگری باشد ولی اولویت درخواست دریافتی بالاتر از اولویت درخواست خودش باشد (منظور از علاقه‌مند بودن برای برگزاری یک جلسه مشخص این است که یا درخواستی برای برگزاری آن جلسه داشته باشد و یا اینکه در اتاق جلسه در حین برگزاری آن جلسه باشد).
پراسس Pj جواب دادن به درخواست پراسس Pi را به تاخیر می‌اندازد اگر اولویت درخواستش بالاتر از اولویت رسیده از پراسس Pi باشد. مانند الگوریتم Ricart ]77[ زمانی که Pj از اتاق جلسه (ناحیه بحرانی خود) خارج شود Ack(j) را به تمام پراسس‌هایی که جواب آن‌ها را به تاخیر انداخته ارسال می‌کند. این الگوریتم دارای پیچیدگی زمانی و پیچیدگی تعویض ۲(n-1) می‌باشد. برای اندازه‌گیری همروندی معیارهای مختلفی از جمله درجه همروندی وجود دارد. در شبیه‌سازی الگوریتم بالا از دو معیار گنجایش[۱۶۱] و اندازه رند استفاده شده است.
الگوریتم RA1 دارای همروندی ضعیفی است و اجازه ورود همزمان چند فیلسوف به جلسه را به‌راحتی نمی‌دهد و ورود همزمان در حالت خاصی اتفاق می‌افتد. به عنوان مثال فرض کنید پراسس Pi و Pj قصد ورود به یک جلسه را داشته باشند و پراسس Pk هم قصد ورود به جلسه دیگری را داشته باشد و بتواند اولویتی بین Pi و Pj را کسب کند (یعنی درخواست خود را بین درخواست Pi و Pj ارسال کند) در این حالت Pi و Pj نمی‌توانند همزمان وارد جلسه شوند و هر سه پراسس به صورت مجزا وارد اتاق جلسه می‌شوند زیرا پراسس دارای اولویت کمتر (Pj) باید صبر کند تا Pk از اتاق جلسه خارج شود تا بتواند وارد اتاق جلسه شود.
برای بالابردن همروندی الگوریتم RA1، Joung اصلاحاتی در الگوریتم RA1 ایجاد کرد و الگوریتم RA2 را ارائه نمود. که این الگوریتم در همان مقاله ]۷۳[ موجود می‌باشد. تغییر به این صورت است: زمانی Pi در اتاق جلسه به‌سر می‌برد و Pj درخواستی برای ورود به همان جلسه، پخش همگانی می‌کند، Pi با ارسال پیامی به‌صورت مستقیم و بدون دریافت اجازه از بقیه پراسس وارد جلسه می‌شود.
پراسسی که خودش توسط پراسس دیگری وارد اتاق جلسه شده است نمی تواند پراسس دیگری را وارد اتاق جلسه کند زیرا در این حالت ممکن است دو پراسس به صورت متناوب یکدیگر را وارد اتاق جلسه کنند و هیچ‌وقت نوبت به پراسس‌های دیگر برای برگزاری جلسه‌های دیگر نرسد. این الگوریتم در بدترین حالت ۳(n-1) پیام ارسال می‌کند به ازای هر ورود به ناحیه بحرانی و همچنین در بدترین حالت ۲(n-1) تعویض متن انجام خواهد داد و پیچیدگی زمانی در بدترین حالت برابر (N-1)(3N-1)/2 می‌باشد.
باید توجه کرد Pk از Pj، Ack(j) را دریافت کرده است و فقط منتظر دریافت Ack(i) از پراسس Pi است، پس بنابراین Pi زمانی که از اتاق خارج می‌شود باید به همراه Ack(i) این اطلاعات را هم به Pk تحویل دهد که Pj به‌صورت مستقیم وارد اتاق جلسه شده است و Pk باید صبر کند تا Pj از اتاق جلسه خارج شود و بعد از آن وارد اتاق جلسه شود. برای این منظور زمانی که Pj از اتاق جلسه خارج شد با ارسال پیامی این موضوع را به اطلاع بقیه پراسس‌ها می‌رساند.
Keane در ]۷۵[ الگوریتمی بر پایه حافظه مشترک ارائه کرده است. در این الگوریتم از صف انتظار و دو آرایه به نام‌های Need و Wait استفاده شده است. متغیری به‌نام Num نعداد پراسس‌های موجود در جلسه را نشان می‌دهد. آخرین پراسسی که از جلسه خارج می‌شود (که در آن حالت Num=0 خواهد شد) صف انتظار را بررسی کرده و پراسس ابتدای صف را وارد اتاق جلسه کرده و جلسه درخواستی آن را برگزار می‌کند و تمام پراسس‌هایی که برای همین جلسه درخواست داده‌اند را هم وارد اتاق جلسه می‌کند. این کار با قراردادن false در خانه Wait متناظر با آن پراسس‌ها انجام می‌شود. Need[i]، جلسه درخواستی پراسس Pi نمایش می‌دهد و اگر پراسس Pi درخواست ورود به اتاق جلسه را داشته باشد Wait[i] را برابر True می‌کند و به محض false شدن Wait[i] وارد ناحیه بحرانی خود می‌شود.
شبیه‌سازی و مدل نمودن شبکه‌های حسگر با شبکه‌های عصبی رقابتی
مقدمه
هر سیستمی که بر روی مجموعه‌ای از ماشین‌ها که دارای حافظه اشتراکی نیستند، اجرا شده و برای کاربران به گونه‌ای اجرا شود که گویا بر روی یک کامپیوتر است، یک سیستم توزیع شده[۱۶۲] است. دسته‌ای از این سیستم‌ها، سیستم‌های فراگیر توزیعی[۱۶۳] هستند که بر خلاف سایر انواع دارای گره‌های ثابت و ارتباطات دائمی و با کیفیت نیستند. نمونه‌ای از سیستم‌های فراگیر توزیعی، شبکه‌های حسگر[۱۶۴] است که اغلب از تعداد زیادی گره برای برنامه‌های کاربردی نظارتی و اندازه‌گیری استفاده می‌شود. در سیستم‌های توزیع شده یکی از موضوعات مورد بحث همزمانی و همگامی است و بطور معمول نیز بحث‌ها بر سر همگامی منطقی فرآیندها بوده و بدنبال ترتیب اجرای درست فرآیندها می‌باشد. یکی از اصلی‌ترین فرآیندهای مورد اهمیت در بحث همگامی دسترسی فرایند‌های مختلف به متغیرهای یکسان و حافظه اشتراکی (ناحیه بحرانی[۱۶۵]) است که به انحصار متقابل[۱۶۶] معروف است.
یکی از مسایل مرتبط با همگام‌سازی، استقرار گره‌ها در یک فضای همپوشان هندسی است. ایده اصلی، عبارت است از تخصیص مختصاتی از یک فضای m بعدی به هر گره به نحوی که فاصله هندسی بین گره‌ها را بتوان به عنوان معیار دقیق تاخیر بین دو گره مورد استفاده قرار داد. روش تخصیص مختصات تا حد زیادی مشابه روش به کار گرفته شده برای تعیین محل و زمان در GPS می‌باشد.
در بسیاری از موارد، استفاده از زمان مطلق، الزامی نیست. آن چه که مورد نیاز است ترتیب درست رخ دادن رویدادهای مربوط به یکدیگر در فرآیندهای گوناگون است. معرفی ساعت‌های منطقی نشان داد که امکان جلب همکاری فرآیندها برای دستیابی به توافق سراسری در رابطه با ترتیب صحیح وقوع رویدادها وجود دارد. در این روش به هر رویداد e، مانند ارسال یا دریافت یک پیام، یک مهر زمانی منطقی منحصر به فرد سراسری C(e) تخصیص داده می‌شود، به‌طوری‌که اگر رویداد a قبل از b رخ می‌دهد، C(a)<C(b) خواهد بود.
در [۴۴] برنامه‌های مختلفی را مورد بحث قرار داده، مفاهیم مختلف هماهنگ‌سازی را معرفی و روش‌های مختلف تجزیه‌وتحلیل نتایج برای فاز هماهنگ‌سازی و فاز متعادل نمودن بار را مورد بحث قرار می‌دهد همچنین نحوه شکل‌گیری الگوی هماهنگ‌سازی فرکانس و هماهنگ سازی جزیی را ارائه می‌دهد. در این پایان‌نامه انواع توپولوژی‌های کامل و جزیی شبکه، همگن و ناهمگن، نوسانات محدود و بی‌نهایت تحت پوشش قرار گرفته است. با وجود این پیشینه زیاد معرفی شده و استفاده‌های بی‌شمار و ارائه نتایج نظری متعدد روی خواص هماهنگ‌سازی اما همچنان مسایل مهمی باز است.
یکی از چالش‌های الگوریتم‌های ارائه شده در این زمینه بحث برقراری عدالت بین فرآیندها و عدم برخورد با بن‌بست و گرسنگی است. چالش‌های الگوریتم‌های ارائه شده در این زمینه یا روی توزیع خاصی کار نموده‌اند و یا تنوع‌پذیری مناسبی در برخورد با مسایل مختلف ندارند.
از آنجایی که شبکه‌های عصبی خود یک مدل غیرخطی و توزیع شده هستند. در این پایان‌نامه با بهره گرفتن از شبکه‌های عصبی رقابتی به حل مشکل دسترسی به ناحیه بحرانی و انحصار متقابل خواهیم پرداخت و با بهره گرفتن از مدل نمودن هر فرایند یا گره موجود در شبکه‌های حسگر با یک سلول عصبی و هر منبع موجود در ناحیه بحرانی با یک منبع موجود در شبکه‌های عصبی سعی در حل انحصار متقابل در شبکه‌های حسگر را داریم. بدلیل نیاز به بودن تنها یک فرایند در ناحیه بحرانی و استفاده از شبکه‌های عصبی رقابتی، مدلی از این شبکه‌ها که تنها یک برنده داشته (شبکه بیشینه، کلاه مکزیکی و همینگ) در برابر خوشه‌بندها (نگاشت‌های خودسازمانده کوهنن و یادگیری چندی‌سازی برداری) مد نظر خواهد بود. در میان شبکه‌های رقابتی مدنظر، شبکه عصبی رقابتی همینگ بنابر کاربرد، نتایج و مقایسه‌های انجام شده در [۱,۲] انتخاب شده است. همچنین بحث‌های مربوط به تحمل‌پذیری خطا، قابلیت اطمینان و عدالت در دسترسی به ناحیه بحرانی را با توجه به مدل ارائه شده بحث خواهیم نمود.
انحصار متقابل
اساس سیستم‌های توزیع شده همزمانی و همکاری بین چند فرایند است در بسیاری از موارد، معنایش این است که فرایندها باید به طور همزمان به منابع یکسانی دستیابی داشته باشند برای اینکه این دستیابی‌‌ها همزمان، منابع را تخریب نکنند، یا آن را در حالت ناسازگاری قرار ندهند به راه‌ حل‌ هایی برای دستیابی انحصار متقابل نیاز است.
الگوریتم‌های انحصار متقابل توزیع شده را می‌توان به دو طبقه تقسیم کرد انحصار متقابل با راه حل‌های مبتنی بر نشانه از طریق ارسال پیام خاصی بین فرآیندها انجام می‌شود که نشانه نام دارد فقط یک نشانه وجود دارد و هر کسی که آن نشانه را دارد می‌تواند به منبع مشترک دستیابی داشته باشد پس از اتمام دستیابی، نشانه به فرایند بعدی فرستاده می‌شود اگر فرآیندی که نشانه را در اختیار دارد نخواهد به منبع دستیابی داشته باشد آن را ارسال می‌کند]۱۱[.
راه‌ حل ‌های مبتنی بر نشانه چند خاصیت مهم دارند اولاً براساس چگونگی سازمان‌دهی فرآیندها، می‌توانند تضمین کنند که هر فرایند شانس دستیابی به منبع پیدا می‌کند به عبارت دیگر از گرسنگی اجتناب می‌شود ثانیاً از بن‌بست اجتناب می‌شود. منظور از بن‌بست وضعیتی است که در چندین فرایند منتظر یکدیگر باقی می‌مانند تا کار دیگری به اتمام برسد. متأسفانه عیب عمده راه حل‌های مبتنی بر نشانه بسیار جدی است: وقتی نشانه مفقود می‌شود باید رویه توزیع شده دقیقی اجرا شود تا تضمین گردد که نشانه جدیدی ایجاد شده است و این نشانه یکتا است]۱۱[.
در روش دیگر، بسیاری از الگوریتم‌های انحصار متقابل از روش مبتنی بر اجازه پیروی می‌کنند در این مورد فرآیندی که منتظر دستیابی به منبع است ابتدا نیاز به اجازه سایر فرایندها دارد روش‌های مختلفی برای اعطای چنین اجازه‌ای وجود دارد که در ادامه بحث می‌شود]۱۱[.
الگوریتم متمرکز
راحت‌ترین راه برای رسیدن به انحصار متقابل در سیستم توزیع شده شبیه‌سازی چگونگی انجام آن در سیستم تک پردازنده‌ای است یک فرایند درخواست خود را به یک فرایند دیگر به‌عنوان هماهنگ کننده می‌فرستد و می‌گوید به کدام منبع می‌خواهد دستیابی داشته باشد و کسب اجازه می‌کند. اگر فعلاً هیچ فرآیندی در حالت دستیابی به آن منبع نباشد هماهنگ کننده پاسخ را می‌فرستد که شامل اجازه دستیابی به منبع است (شکل ۱۴-۳ الف) وقتی پاسخ می‌رسد فرایند متقاضی می‌تواند به پیش برود]۷۱[.
شکل ‏۴‑۱- مثالی از الگوریتم متمرکز ]۷۱[
اکنون فرض کنید فرایند ۲ در شکل ۴-۱ب اجازه می‌خواهد به آن منبع دست یابد هماهنگ کننده می‌داند که فرایند دیگری در حال استفاده از آن منبع است و نمی‌تواند به فرایند ۲ اجازه دهد روش دقیق عدم اجازه دستیابی به سیستم بستگی دارد در شکل ۴-۱ ب هماهنگ کننده از پاسخ اجتناب می‌کند و در نتیجه فرایند ۲ متوقف می‌شود و منتظر پاسخ می‌ماند. از طرف دیگر می‌تواند پیام بفرستد که امکان دستیابی برای شما وجود ندارد به هر حال درخواست فرایند ۲ را در صف قرار می‌دهد و منتظر پیام‌های دیگر می‌ماند.
وقتی کار فرایند ۱ با منبع تمام شد، پیامی به هماهنگ کننده می‌فرستد و اعلان می‌کند که منبع آزاد شد (شکل ۴-۱ ج) هماهنگ کننده اولین درخواست صف را می‌گیرد و به فرایند آن اجازه دستیابی به منبع را می‌دهد. اگر فرایند هنوز متوقف باشد از حالت توقف خارج می‌شود و به منبع دستیابی دارد. اگر پیام قبلی عدم اجازه دستیابی را ارسال کرده باشد فرایند باید ترافیک ورودی را بپرسد یا بعداً متوقف شود در هر حال وقتی مجوز را دریافت می‌کند می‌تواند به کارش ادامه دهد.
به آسانی می‌توان دید که این الگوریتم انحصار متقابل را تضمین می‌کند به طوری که هماهنگ کننده در هر زمان فقط به یک فرایند اجازه دستیابی به منبع را می‌دهد. از جهت دیگر نیز این نکته جالب است، زیرا درخواست‌‌ها به ترتیب ورود، سرویس می‌گیرند هیچ فرایندی بی‌نهایت منتظر نمی‌ماند]۷۱[. سهولت آن موجب جذابیت آن در وضعیت‌های عملی شده است.
روش متمرکز معایبی نیز دارد هماهنگ کننده یک نقطه شکست است لذااگر خراب شود کل سیستم از کار می‌افتد. اگر فرایندها پس از درخواست به طور عادی متوقف شوند، نمی‌توانند هماهنگ کننده مرده را از عدم اجازه تشخیص دهند زیرا در هر دو مورد پیامی برگردانده نمی‌شود. علاوه بر این در سیستم بزرگ تنها یک هماهنگ کننده می‌تواند گلوگاه کارایی محسوب شود با این وجود فواید ناشی از سهولت آن در بسیاری موارد بر معایب بالقوه آن ارجح است]۷۱[. علاوه بر این راه‌ حل ‌های توزیع شده الزاماً بهتر نیستند.
الگوریتم نامتمرکز
وجود تنها یک هماهنگ کننده روش مناسبی نیست یک راه حل کاملاً نامتمرکز را در نظر می‌گیریم در ]۷۸[ استفاده از الگوریتم رای گیری را پیشنهاد کردند که با بهره گرفتن از سیستم مبتنی بر DHT[167] اجرا شدند در اصل راه حل آن‌‌ها هماهنگ کننده مرکزی را بسط می‌دهد فرض می‌شود هر منبع n بار تکثیر شده است هر کپی دارای هماهنگ کننده خاص خودش برای کنترل دستیابی توسط فرایندهای همزمان است. به هر حال هر وقت فرایندی می‌خواهد به منبعی دستیابی داشته باشد لازم است از m>n/2 هماهنگ کننده رای گیری کند.
برخلاف طرح متمرکز فرض می‌کنیم که وقتی هماهنگ کننده‌ای اجازه دستیابی به منبعی را نمی‌دهد به درخواست کننده اعلان می‌کند. این طرح، راه‌حل متمرکز اصلی را نسبت به تنها یک هماهنگ کننده کمتر دچار آسیب‌پذیری می‌کند فرض این است که وقتی هماهنگ کننده خراب می‌شود سریعاً ترمیم می‌شود اما رای‌گیری‌هایی را که قبلاً انجام داده است فراموش می‌کند روش دیگر مشاهده این نکته است که هماهنگ کننده خودش را در چند لحظه دوباره راه‌اندازی می‌کند. خطر این کار این است که راه‌اندازی مجدد موجب می‌شود که هماهنگ کننده فراموش کند که قبل از خرابی چه مجوزهایی را صادر کرده است در نتیجه ممکن است مجوزهای قبلی را به فرایندهای دیگر نیز صادر کند.
فرض کنید P احتمال این باشد که هماهنگ کننده در فاصله زمانی  دوباره راه اندازی شود احتمال [k]P که K هماهنگ کننده از m هماهنگ کننده در یک فاصله زمانی دوباره راه اندازی شدند به صورت زیر محاسبه می‌شود.
(۴-۱)
با توجه به اینکه حداقل ۲m-n هماهنگ کننده باید دوباره راه اندازی شوند تا صحت راهکار رای‌گیری را نقض کنند، احتمال این که نقض کردن به وجود آید برابر با  است. برای درک معنای این رابطه فرض کنید با سیستم مبتنی بر DHT سروکار داریم که در آن هر گره در حدود ۳ ساعت در صف می‌ماند فرض کنید  برابر با ۱۰ ثانیه باشد که مقدار مناسبی برای یک فرایند است که می‌خواهد به منبع مشترک دستیابی داشته باشد. با n=32 و m=0.75n احتمال صحت کمتر از ۴-۱ است این احتمال یقیناً کمتر از قابلیت دسترسی هر منبع است.
برای پیاده سازی این طرح ]۷۸[ از یک سیستم مبتنی بر DHT استفاده کردند که آن منبعی n بار تکثیر شده است فرض کنید منبع دارای نام یکتای rname است. می‌توان فرض کرد که کپی I ام به نام rname-I خوانده می‌شود که می‌تواند برای محاسبه کلید یکتا با بهره گرفتن از تابع درهم سازی به کار رود و بعداً هر گره مسئول یک کپی را جستجو کند.
اگر دستیابی به منبعی مجاز نباشد، فرض می‌شود که به مدت تصادفی متوقف می‌ماند و بعداً تلاش می‌کند مشکل این طرح این است که اگر گره‌هایی بخواهند به یک منبع دستیابی داشته باشند بدیهی است که بهره‌وری سریعاً کاهش می‌یابد. به عبارت دیگر گره‌های متعددی وجود دارند که برای دستیابی به منبع رقابت می‌کنند و در نهایت هیچ کدام نمی‌توانند رای کافی کسب کنند و منبع بدون استفاده باقی می‌ماند راه‌حل این مسئله در ]۷۸[ آمده است.
الگوریتم توزیع شده
تنها داشتن الگوریتمی که احتمالاً خوب باشد کافی نیست لذا پژوهشگران به دنبال الگوریتم‌های انحصار متقابل توزیع شده قطعی بودند. مقاله لامپورت در سال ۱۹۷۸ درباره همگام سازی سرعت ساعت اولین الگوریتم را پیشنهاد کرد. ریکارد و آگراوالا (۱۹۸۱) آن را کارآمدتر کردند در این بخش روش آنها را بررسی خواهیم کرد]۷۷[.
الگوریتم ریکارد و آگراوالا مستلزم این است که ترکیب کاملی از تمام رویدادها در سیستم وجود داشته باشد یعنی برای هر جفت از رویدادها مثل پیام، دقیقاً باید روشن باشد که کدام یک اول رخ می‌دهد الگوریتم لامپورت یک روش برای دستیابی به این مرتب سازی است و می‌تواند برای تأمین مهرهای زمان برای انحصار متقابل توزیع شده به کار رود.
این الگوریتم به این صورت کار می‌کند: وقتی فرایندی می‌خواهد به منبع مشترکی دست یابد پیامی می‌سازد که شامل نام منبع، شماره فرایند آن و زمان فعلی است. سپس پیام را به تمام فرایندها و از نظر ادراکی به خودش ارسال می‌کند فرض می‌شود که ارسال پیام قابل اعتماد باشد یعنی هر پیامی مفقود نشود.
وقتی فرایندی پیام درخواست را از فرایند دیگری دریافت می‌کند فعالیتی که انجام می‌دهد به وضعیت خودش نسبت به منبع ذکر شده در پیام بستگی دارد سه مورد مختلف باید متمایز شوند:
اگر گیرنده در حال دستیابی به منبع نباشد ونخواهد به آن دست یابد پیام ok را به فرستنده ارسال می‌کند.
اگر گیرنده به منبع دستیابی داشته باشد پاسخ نمی دهد در عوض درخواست را در صف قرار می‌دهد.
اگر گیرنده بخواهد به منبع دستیابی داشته باشد ولی هنوز موافق نشده است مهر زمان پیام ورودی را با مهر زمان موجود در پیامی که به هر کسی فرستاده است مقایسه می‌کند. کمترین مهر زمان برنده است. اگر پیام ورودی مهر زمان کمتری دارد گیرنده پیام Ok را می‌فرستد اگر پیام خودش مهر زمان کمتری داشته باشد گیرنده درخواست ورودی را در صف قرار می‌دهد و هیچ چیز دیگری نمی فرستد.
پس از ارسال درخواستها برای تقاضای مجوز، فرایند منتظر می‌ماند تا کسی به آن مجوز بدهد. به محض این که تمام مجوزها صادر شدند می‌تواند به کارش ادامه دهد وقتی خاتمه یافت پیام ok را به تمام فرایندهای موجود در صف آن ارسال می‌کند و تمام آنها را از صف حذف می کند.
شکل ‏۴‑۲- مثالی از الگوریتم توزیع شده
ببینیم که الگوریتم واقعاً کار می‌کند. اگر هیچ برخوردی وجود نداشته باشد بدیهی است که کار می‌کند اما فرض کنید دو فرایند سعی می‌کنند همزمان به منبعی دستیابی داشته باشند (شکل ۴-۲ الف)
فرایند A درخواستی با مهر زمان ۸ را به همه می‌فرستد در حالی که همزمان فرایند C درخواستی با مهر زمان ۱۲ را به همه می‌فرستد. فرایند B علاقه‌ای به این منبع ندارد لذا پیام ok را به هر دو فرستنده ارسال می‌کند. فرآیندهای A,C هر دو این برخورد را می‌بینند و مهرهای زمان را مقایسه می‌کنند. فرایند C می‌بیند که باخت و با ارسال ok به فرایند A به آن اجازه می‌دهد اکنون فرایند A درخواستی از فرایند C را برای پردازش بعدی در صف قرار می‌دهد و به منبع دست می‌یابد (شکل ۴-۲ ب) وقتی کارش تمام شد درخواستی از فرایند C را از صف خود حذف می‌کند و پیام ok را به فرایند C می‌فرستد و اجازه می‌دهد که به کارش ادامه دهد (شکل ۴-۲ ج). الگوریتم به این دلیل کار می‌کند که در حالت برخورد کمترین مهر زمان برنده می‌شود و همه با مرتب سازی براساس مهر زمان موافق هستند.
توجه کنید که اگر فرایند C درخواست خود را زودتر می‌فرستاد به طوری که فرایند، آن را دریافت می‌کرد و مجوز را قبل از درخواست خودش صادر می‌کرد وضعیت متفاوت می‌بود در این مورد فرایند C اعلان می‌کرد که در هنگام درخواست خودش به منبع دستیابی دارد و به جای ارسال پاسخ، آن را در صف قرار می‌دهد.
همانند الگوریتم متمرکز که بحث شد، انحصار متقابل بدون بن بست و گرسنگی تضمین می‌شود تعداد پیام‌های موردنیاز برای هر وارده، ۲(n-1) است که n برابر با تعداد کل فرایندهای موجود در سیستم است بهتر از همه تنها ک نقطه شکست وجود ندارد.
متأسفانه، تنها یک نقطه شکست با n نقطه شکست جایگزین شد. اگر هر فرآیندی با شکست مواجه شود نمی تواند به درخواست پاسخ دهد. این سکوت، به عنوان عدم مجوز تلقی می‌شود و به این ترتیب از ورود تمام فرایندها به تمام ناحیه‌های بحرانی جلوگیری می‌شود چون احتمال شکست یکی از n فرایند حداقل n برابر شکست یک هماهنگ کننده است تصمیم گرفتیم الگوریتم ضعیف را با الگوریتمی جایگزین کنیم که n مرتبه بدتر است و به ترافیک شبکه بیشتری نیز نیاز دارد.
الگوریتم را می‌توان با راه‌حل مشابه با آنچه که قبلاً گفته شد، وصله زد. وقتی درخواستی می‌رسد گیرنده همیشه پاسخی را ارسال می‌کند یا مجوز می‌دهد یا نمی‌دهد هر وقت درخواست یا پاسخی مفقود شود مهلت فرستنده تمام می‌شود و سعی می‌کند تا پاسخی برسد یا فرستنده نتیجه می‌گیرد که مقصد مرده است پس از اینکه درخواست رد شد فرستنده باید منتظر پیام ok بعدی بماند.
مشکل دیگر این الگوریتم این است که یا باید از عملیات پایه ارتباط چند بخشی استفاده شود یا هر فرایند باید لیست عضویت گروه را نگهداری کند از جمله فرایندهایی که وارد گروه می‌شوند گروه را ترک می‌کنند و خراب می‌شوند این روش با گروه‌های کوچکی از فرایندها که عضویت گروه خود را تغییر نمی‌دهند به خوبی کار می‌کند.
سرانجام به یاد داشته باشید که یکی از مشکلات الگوریتم متمرکز این است که اداره کردن تمام درخواست‌‌ها منجر به گلوگاه می‌شود در الگوریتم توزیع شده تمام فرایندها در تمام تصمیم‌گیری‌های مربوط به دستیابی به منبع مشترک دخالت دارند اگر فرایندی نتواند این بار را اداره کند بعدی است که اگر تمام فرایندها به طور موازی یک کار را انجام دهند بتوانند کمکی بکنند.
چندین تغییر را می‌توان در این الگوریتم ایجاد کرد. به عنوان مثال اخذ مجوز از همه کشنده است. تنها به روشی نیاز است که مانع از این شود که دو فرایند همزمان به یک منبع دستیابی داشته باشند الگوریتم می‌تواند اصلاح شود به طوری که وقتی مجوز دهد، که مجوزی را از اکثر فرآیندهای دیگر دریافت کرده باشد البته در این روش پس از اینکه فرایندی مجوزی را به فرایند دیگر داد، نمی تواند همان مجوز را به فرایند دیگر بدهد مگر اینکه اولی کارش به اتمام برسد]۷۷[.
با این وجود این الگوریتم نسبت به الگوریتم متمرکز کندتر، پیچیده‌تر، گران‌تر و با توانمندی کمتر است و مطالعه آن برای نشان دادن این است که الگوریتم توزیع شده امکان پذیر هست. همچنین با بررسی معایب آن می‌توان از طریق شبیه سای تئوری‌‌ها به الگوریتم مفیدتری رسید.

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...