Reklama

تزامن مشاكل في نظام التشغيل

Проблемы синхронизации в ОС

الأدب على أنظمة التشغيل يحتوي على العديد من المشاكل المثيرة للاهتمام, التي استخدمت على نطاق واسع مناقشة و تحليل مع استخدام أساليب مختلفة من المزامنة. في هذا المقطع نرى ثلاثة من أكثر المشاكل المعروفة.

المشكلة طعام الفلاسفة

في 1965 سنة ديكسترا صياغة حل مشكلة التزامن, يدعى المشكلة طعام الفلاسفة. منذ ذلك الحين, من الذي اخترع آخر جديد تزامن البدائية, يعتبر من واجبه أن إظهار مزايا جديدة البدائية في المثال مشكلة تناول الطعام الفلاسفة. المشكلة يمكن أن تصاغ على النحو التالي: خمسة الفلاسفة يجلس على المائدة المستديرة, و كل شخص لديه لوحة مع السباغيتي. السباغيتي هو زلق جدا, أن كل فيلسوف يحتاج شوكتين, للتعامل معهم. بين كل صفيحتين واحدة شوكة .

حياة الفيلسوف يتكون من فترات متناوبة من الأكل و التفكير. (بالطبع, هذا التجريد, حتى الفلاسفة, ولكن غيرها من العمليات الحيوية لدينا مهمة ذات صلة.) عندما الفيلسوف جائع, حاول الحصول على اثنين من الشوك, اليسار واليمين, في أي ترتيب. إذا تمكن من الحصول على اثنين من الشوك, لبعض الوقت يأكل, ثم يضع المكونات مرة أخرى في ويبقي التفكير. السؤال هو: هل من الممكن كتابة خوارزمية, الذي نماذج هذه الخطوات لكل فيلسوف و لم يعلق? (يعتقد البعض, الحاجة شوكتين يبدو قليلا مصطنع. ممكن, ينبغي أن نستبدل الطعام المطبخ الإيطالي المطبخ الصيني, معكرونة الأرز, و الشوكة ذات الصلة العصي.)

 

يمكنك تغيير البرنامج حتى, حتى بعد الحصول على يسار الشوكة تم التحقق من توافر حق. إذا كان الحق شوكة غير متوفر, الفيلسوف يعطي اليسار للخلف, ينتظر قليلا و يكرر العملية برمتها. كما أن هذا النهج لا يعمل, على الرغم من لسبب مختلف. إذا كنت غير محظوظ, كل خمس الفلاسفة يمكن أن تبدأ العملية في نفس الوقت, خذ يسار الشوكة, للكشف عن عدم حق, ضع يدك اليسرى على الطاولة, في نفس الوقت خذ يسار الشوكة, وهلم جرا إلى ما لا نهاية. الحالة, فيها جميع البرامج يستمر إلى أجل غير مسمى, لكنهم لا يستطيعون تحقيق بعض التقدم على الأقل, تسمى عملية شنق (الموسيقى الإنجليزية من الجوع, حرفيا "يموتون من الجوع". هذا

مصطلح ينطبق حتى في حالة, عندما لا تحدث المشكلة في ايطالي او صيني, و على أجهزة الكمبيوتر).

قد تعتقد: "إن الفلاسفة سوف تفكر مليا عن اختيارها عشوائيا فترة من الزمن بعد محاولة فاشلة اتخاذ شوكة, احتمال, جميع العمليات سوف تستمر في الركود على الأقل لمدة ساعة, الصغيرة". هذا صحيح, و بالنسبة إلى معظم التطبيقات إعادة المحاولة بعد بعض الوقت ليس مشكلة. على سبيل المثال, في LAN إيثرنت في حالة, عندما اثنين من أجهزة الكمبيوتر إرسال الحزم في نفس الوقت, الجميع انتظر عشوائيا الوقت المحدد حاول مرة أخرى — في ممارسة هذا الحل يعمل بشكل جيد. إلا أنه في بعض التطبيقات المفضل هو حل آخر, يعمل دائما ولا تعتمد على أرقام عشوائية (على سبيل المثال, في طلب السلامة في محطات الطاقة النووية).

إلى إجراء التحسين, باستثناء حالات الجمود و تعليق عملية: لحماية خمسة المشغلين, وبعد التحقيق التفكير, ثنائي إشارة. ثم الفيلسوف سوف تحتاج إلى إجراء عملية على كائن المزامنة (mutex) متغير أولا, من تكون سحب المقابس. و بعد عودة الشوك إلى المكان الذي كان ينبغي أن تقوم على متغير كائن المزامنة (mutex). من نظري وجهة القرار هو مناسب تماما. من الناحية العملية هناك مشاكل مع الكفاءة: في كل لحظة من الوقت يمكن أكل السباغيتي الوحيد الفيلسوف. لكن خمسة الشوك, ولذلك من الضروري حل في كل مرة اثنان من الفلاسفة.

الحل, تجنب الجمود و يسمح أقصى قدر ممكن من التوازي أي عدد من الفلاسفة. نحن هنا استخدام صفيف الدولة من تتبع الحالة النفسية لكل فيلسوف: إما أنه يأكل, أو يعتقد, أو سريع (في محاولة للحصول على الشوك). يمكن للفيلسوف أن نبدأ في الأكل, إلا إذا كان أي من جيرانها لا يأكل. الجيران فيلسوف مع فهرس لقد تم تعريفها من قبل وحدات الماكرو اليسار واليمين (هذا إذا كان i = 2, اليسار=

المشكلة من القراء والكتاب

الطعام الفلاسفة المشكلة هي مفيدة في نمذجة العمليات, تتنافس من أجل الوصول الحصري إلى كمية محدودة من الموارد, على سبيل المثال أجهزة I / o. آخر معروف المشكلة هي مشكلة القراء والكتاب [78], محاكاة الوصول إلى قاعدة البيانات. النظر في قاعدة بيانات حجز تذاكر الطائرة, محاولة الوصول إلى عدد كبير من العمليات. يمكنك السماح المتزامن قراءة البيانات من قاعدة البيانات, لكن إذا كانت العملية بكتابة معلومات قاعدة البيانات, حصول عمليات أخرى وينبغي إنهاؤها ، , حتى الوصول للقراءة. برنامج القراء والكتاب?

لتجنب هذا الموقف, تحتاج إلى تغيير طفيف على البرنامج: إذا كان الكاتب عملية انتظار الوصول إلى قاعدة البيانات, قارئ جديد عملية الوصول لا يتلقى, و هو في قائمة الانتظار من أجل عملية الكتابة. الآن عملية الكتابة تحتاج إلى الانتظار, في حين أن القاعدة سوف اترك بالفعل في القراءة العمليات, ولكن لا حاجة إلى تجاوز القراءة العمليات, جاء إلى قاعدة من بعده. عيب هذا الحل هو تقليل الأداء, بسبب انخفاض المنافسة. في حل المقدمة, الذي عمليات الكتابة هو أولوية أعلى.

مشكلة النوم الحلاق

عمل كلاسيكي آخر حالة المشكلة interprocess communication تجري في دكان حلاق. في صالون الحلاقة واحد حلاق, كرسيه ، ن كراسي الزوار. إذا كنت ترغب في استخدام خدماته لا, الحلاق يجلس في كرسيه و ينام .إذا كان مصفف الشعر يأتي إلى العميل, أنه يجب أن تستيقظ الحلاق. إذا كان العميل يأتي ويرى, أن الحلاق مشغول, أنه إما أن يجلس على كرسي (إذا كان هناك مكان), أو (إذا لا يوجد مكان). من الضروري أن البرنامج الحلاق و الزوار, لتجنب تعارض. في هذه المهمة, هناك العديد من نظائرها في مجال الطوابير, على سبيل المثال خدمة المعلومات, في نفس الوقت تصنيع عدد محدود من الطلبات, مع نظام محوسب في انتظار الطلبات.

 

الحل المقترح يستخدم ثلاثة الإشارات: العملاء, في انتظار العد الزوار (العميل, يجلس في كرسي الحلاق, لا تحسب إنه لم يعد الانتظار); الحلاقون, عدد الحلاق (0 أو 1), الخمول أثناء انتظار العميل, و كائن المزامنة (mutex) لتنفيذ الاستبعاد المتبادل. أيضا متغير الانتظار, مصممة على الحساب في انتظار الزوار.

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

عند الحلاق يأتي إلى العمل في الصباح, انه ينفذ الإجراء الحلاق, blockerase على إشارة العملاء, لأن قيمة إشارة يساوي 0. ثم الحلاق يذهب إلى النوم, والنوم, حتى أول عميل.

تأتي إلى صالون الشعر, الزائر يكمل العملاء, تطلب الوصول إلى كائن المزامنة (mutex) لدخول المنطقة الحساسة. إذا بعد هذا سوف يكون آخر الزوار, وقال انه لن تكون قادرة على فعل أي شيء, في حين أن أول زبون لا تحرير الوصول إلى كائن المزامنة (mutex). ثم الزائر التحقق من توافر الكراسي, في حالة عدم يحرر الوصول إلى كائن المزامنة (mutex) ويذهب.

إذا كان هناك المقعد الشاغر, زائر زيادة قيمة متغير عدد صحيح الانتظار. ومن ثم تنفيذ الإجراء على إشارة العملاء, على

أكثر ينشط تدفق الحلاق. كل زائر و الحلاق النشطة. عندما زائر النشرات الوصول إلى كائن المزامنة (mutex), الحلاق يلتقط, القيام ببعض مهام الصيانة و يبدأ قطع العملاء.

بعد قطع الزائر إنهاء الإجراءات و الأوراق الحلاقه. على عكس البرامج السابقة, دورة الزائر لا, لأن كل زائر قطع مرة واحدة فقط. دورة الحلاق هناك, والحلاق يحاول العثور القادمة زائر. لو نجح, فإنه يقطع القادمة زائر, وإلا الحلاق يذهب إلى النوم.

ومن الجدير بالذكر, ما, على الرغم من عدم وجود بيانات المشكلة القراء والكتاب مشكلة النوم الحلاق, كل من هذه المشاكل تتعلق مشاكل interprocess communication, لأنها تتطلب مزامنة عمليات متعددة.

 

Reklama