الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الأقصاء المتبادل

مغلق
بدأه رحوم في 30 أكتوبر 2005 · 4 رد · 2,881 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم شخباركم جماعة يارب الاقي عندكم الحل

شباب اعتقد الي اخذ نظم تشغيل مرت عليه كلمة الاقصاء المتبادل والي هيه ان اكثر من عملية ترغب بالدخول للمعالج بنفس الوقت فالعملية الداخلة تعمل اقصاء متبادل للعملية الاخرى والاكيد انه مرت عليه ان لحل مسائل الاقصاء المتبادل يوجد حل برمجي وهاردوير سيمافور طيب انا طلبي في الاقصاء المتبادل بالنسبة للحل البرمجي الي اسمه خوارزمية ديكارد انا فاهمه الموضوع بس مو وايد فاتمنى ان من عنده خلفية يشرحها لي وانا الي خذته لعمليتين بس لوكانت عندي ثلاث عمليات كيف ممكن احور هذي الخوارزمية اتمنى تساعدوني واريد الحل بكره كابعد موعد ارجو مساعدتكم

#2

أعتقد أن تقصد الMutual Exclusion أو ما يسمى اختصاراً Mutex و هو عملية تهدف الى حماية العمليات التي تحتم على الprocess او الthread الاستحواذ على الresource فترة التنفيذ دون مشاركة أو مقاطعة

و كلمة mutual exclusion يقصد بها دائما تنظيم الموارد بين عدة أطراف فقط و لايسمح غير لطرف واحد في كل مرة الاستحزاذ على الresource فيمكنك اعتبار الmutex كأنه عدد ذو قيمتين فقط true أو false مثلاً و دائما يرتبط بالعمليات lock و unlock و لكن اذا كنت تريد أن تنظم العملية بين أكثر من طرف بحيث أن المورد الواحد يمكن أن يستحوذ عليه أكثر من طرف في وقت واحد و لكن بحد أقصى ففي هذه الحالة يُسمى Monitor

تم تعديل هذه المشاركة بواسطة bashmohandes في 30 أكتوبر 2005 في 19:53

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

تسلم اخوي ايوا صحيح هذا قصدي بس انا اخذت حل الMutual Exclusion بثلاث طرق منها البرمجي او خوارزمية ديكار ولكن كان لعمليتين وانا اريد مثلا لو كان في ثلاث عمليات كيف ممكن اتعامل مع هذه الخوارزمية واحولها اتمنى المساعدة في حالة المقدرة وتسلم ومشكور

#4

الحقيقة خوارزمية ديكارد درستها منذ سنتين و لا أذكر تفاصيلها و لكن ماأذكره أنها كانت سهلة و لكن مسائلها كانت طويلة :lol: سأحاول أن أجد مذكراتي القديمة لأتذكرها

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

هل هو شرط أن تحليها عن طريق ديكار؟؟؟

عموما مسألة الـMutex هي تحل مشكلة دخول الكود الحرج

ولكن إذا استطعتي أن تعطينا المسألة هنا

وحاولي ان تكون بالانجليزي (لأن أغلب من درس OS بالانجليزي)

وعلى فكرة هل ديكارد هو نفسه Dekker؟؟

إذا كان كذلك فإذا أكملي هنا:

ديكار هو أول من قدم حلا برمجيا فقط لهذه المسألة

ويقوم حله أصلا على فرضية أن هناك إثنين من الـ Processes (لاأعرف اسمها بالعربي)

يريدان أن يدخلان في مكان واحد .

طيب الآن كل الحلول السابقة كان مبنية على من يصل أولا يدخل أولا وبالمساعدة مع هاردوير أو مبنية على هاردوير فقط...

وهنا في هذه الخوارزمية نستفيد من هذا الشيء في التالي:

int turn;
     int interested[2];

     void enter_region(int process) {
         int other;

         other = 1 - process;
         interested[process] = TRUE;
         turn = process;
         while ( turn == process && interested[other] == TRUE );
     }

     void leave_region(int process) {
         interested[process] = FALSE;
     }

طبعا هذه الخوارزمية تسمى خوارزمية Peterson وهي نسخة مبسطة من ديكار...

وتكون فكرتها الأساسية على أن البرامج المتسابقة على كود تدخل في نفس الوقت

نعطل أحدها والآخر يدخل

لنفترض أن لدينا الكود التالي:
enter_region( PID )

critical code....
كود حرج

leave_region( PID )


When Enter the section:
لنفترض أن 0 دخل قبل 1

for PID 0:

other = 1 - 0 = 1;
interested[0] = true;
turn = 0;

(turn == process && interested[other] == TRUE)
	T    F
لذا يخرج من الدائرة بالتالي ينفذ الكود الحرج

for PID 1:

other = 1 - 1 = 0;
interested[1] = true;
turn = 1;
(turn == process && interested[other] == TRUE)
	T    T
يبقى في الدائرة حتى يخرج رقم 0 من الكود الحرج
وخروج 0 يعني أنه ينادي الدالة leave_region(0)
وبالتالي يكون:
interested[0] = FALSE
وهذا يجعل رقم 1 يدخل الكود الحرج مباشرة

معلومة صغيرة:

طرح ديكار خوارزميته عام 1965

وعدلها بريستون عام 1981

طبعا هذه النسخة من الخوارزمية مبسطة لبرنامجين فقط

وهناك نسخة كاملة معممة

أستطيع كتابتها إذا أردتي هنا

إن شاء الله يكون واضح

لماذا تكون الليغو اللعبة الأكثر عبقرية في العالم؟

لأنها غير قابلة للتجزئة ، وتختلف فيما بينها بالألوان و الأشكال ، وتمتلك القدرة على تكوين علاقات مع بعض. نستطيع أن نقول أن أجزاء الليغو أبدية. وهي تشبه الذرات في تراكيبها للكون

-----

وائل بن أحمد كابلي

مستشار تطوير برمجيات | مايكروسوفت للخدمات الاستشارية

MCSE | MCTS SharePoint Infrastructure | MCTS SharePoint - Development | MCP | MSF Essentials

http://blogs.msdn.com/wael

@waelkabli

هذا الموضوع مغلق.

مواضيع مشابهة