ما هو قفل الذاكرة؟

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

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

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

للاستفادة من وحدات المعالجة المركزية متعددة النواة ، يجب كتابة التعليمات البرمجية بطريقة متعددة الخيوط. يمكن بعد ذلك تشغيل كل مؤشر ترابط بشكل متزامن ، مع توسيع نطاق الاستفادة من الأداء من خلال عدد الخيوط المتاحة ونواة وحدة المعالجة المركزية. ومع ذلك ، فإن القيام بذلك يواجه تحديًا جديدًا ، وهو "حالة السباق".

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

شروط السباق

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

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

في هذه الحالة ، يقرأ الخيط الأول قيمة . قبل أن يتمكن الخيط الأول من زيادة قيمة رغم ذلك ، يقرأه مؤشر الترابط الثاني. الآن يضيف الخيط الأول واحدًا إلى صفر ، لكن الخيط الثاني يعتقد بالفعل أن القيمة تساوي صفرًا ، مضيفًا واحدًا إلى صفر. نتيجة ذلك أن القيمة النهائية لـ a هي 1 ، وليس 2.

السباق إلى أسوأ سيناريو

في حين أن المثال أعلاه قد لا يبدو سيئًا بشكل خاص ، إلا أنه يمكن أن يكون له تأثيرات دراماتيكية. ماذا لو اختارت قيمة a طريقة تشغيل الآلة؟ ماذا لو كانت أنماط تشغيل معينة لهذه الآلة يمكن أن تكون خطيرة أو حتى مهددة للحياة؟

لا يجب أن تكون ظروف السباق بهذه البساطة. على سبيل المثال ، يمكن لخيط واحد أن يقرأ قسمًا من الذاكرة في نفس الوقت الذي يكتب فيه مؤشر ترابط آخر. في هذه الحالة ، قد يحصل مؤشر ترابط القراءة على مزيج غريب من البيانات من قبل وبعد. لنفترض أن الشيك عبارة عن فحص صواب / خطأ بسيط.

إذا قال المتغير "صحيح" في بداية القراءة ولكن كان في طور الكتابة فوق الكلمة "خطأ" ، فقد تكون نتيجة عملية القراءة مثل "trlse". هذا ليس "صواب" أو "خطأ". من شبه المؤكد أن عدم كونك أيًا من الخيارين في الاختيار الثنائي سيؤدي إلى تعطل التطبيق. يمكن أن يؤدي تلف الذاكرة هذا إلى العديد من المشكلات الأمنية ، مثل رفض الخدمة وتصعيد الامتيازات.

قفل السباق

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

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

القفل ليس أكثر الحلول أناقة. لسبب واحد ، أنه يحتوي على ذاكرة محمولة. ويمكنه أيضًا إجبار الخيط على التعليق ، في انتظار تحرير القفل. اعتمادًا على الموقف ، قد لا يتم تحرير القفل لفترة طويلة جدًا أو قد لا يتم تحريره على الإطلاق. في أسوأ السيناريوهات ، قد يعتمد فتح القفل على شيء ما يحدث في خيط مغلق آخر ، مما يؤدي إلى طريق مسدود.

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

خاتمة

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

الحظر هو المكان الذي يحاول فيه مؤشر ترابط آخر العمل على وعاء مغلق. الخيط يجلس هناك ، مغلق حتى يتم تحرير القفل. يمكن أن يتسبب هذا في حدوث مشكلات إذا كان تحرير القفل يتطلب خيطًا آخر للقيام بشيء ما ، حيث قد يتم حظره قبل أن يتمكن من إكمال المتطلبات الأساسية لتحرير القفل الذي يحظره. يمكن تجنب أقفال الذاكرة عن طريق كتابة أكواد غير محظورة. ومع ذلك ، يمكن أن يكون القيام بذلك معقدًا وأقل أداءً من استخدام الأقفال. لا تنسى ترك تعليقاتك أدناه.



Leave a Comment

ماذا تفعل إذا لم يتم شحن Powerbeats Pro في العلبة

ماذا تفعل إذا لم يتم شحن Powerbeats Pro في العلبة

إذا لم يتم شحن Powerbeats Pro الخاص بك، استخدم مصدر طاقة آخر ونظف سماعات الأذن الخاصة بك. اترك العلبة مفتوحة أثناء شحن سماعات الأذن الخاصة بك.

أساسيات الطباعة ثلاثية الأبعاد: قائمة فحص للصيانة يجب قراءتها

أساسيات الطباعة ثلاثية الأبعاد: قائمة فحص للصيانة يجب قراءتها

الحفاظ على معداتك في حالة جيدة أمر ضروري. إليك بعض النصائح المفيدة للحفاظ على طابعتك ثلاثية الأبعاد في أفضل حالة.

كانون بيكسما MG5220: المسح الضوئي دون حبر

كانون بيكسما MG5220: المسح الضوئي دون حبر

كيفية تفعيل ميزة المسح الضوئي على كانون بيكسما MG5220 عندما تكون خراطيش الحبر فارغة.

5 أسباب تجعل جهاز الكمبيوتر المحمول الخاص بك يسخن

5 أسباب تجعل جهاز الكمبيوتر المحمول الخاص بك يسخن

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

كيفية إصلاح رمز الخطأ GeForce Now 0xC272008F

كيفية إصلاح رمز الخطأ GeForce Now 0xC272008F

أنت تستعد لقضاء ليلة من الألعاب، وستكون ليلة مهمة – لقد قمت للتو بشراء “Star Wars Outlaws” على خدمة بث GeForce Now. اكتشف الحل المعروف الوحيد الذي يوضح لك كيفية إصلاح رمز الخطأ GeForce Now 0xC272008F حتى تتمكن من البدء في لعب ألعاب Ubisoft مرة أخرى.

أساسيات الطباعة ثلاثية الأبعاد: نصائح صيانة لطابعة ثلاثية الأبعاد الخاصة بك

أساسيات الطباعة ثلاثية الأبعاد: نصائح صيانة لطابعة ثلاثية الأبعاد الخاصة بك

الحفاظ على طابعاتك ثلاثية الأبعاد أمر مهم جدًا للحصول على أفضل النتائج. إليك بعض النصائح الهامة التي يجب أخذها في الاعتبار.

كيفية العثور على عنوان IP لجهاز الطباعة

كيفية العثور على عنوان IP لجهاز الطباعة

هل تواجه صعوبة في معرفة ما هو عنوان IP الذي يستخدمه طابعتك؟ سنوضح لك كيفية العثور عليه.

كيفية استخدام AirPods مع هواتف Samsung

كيفية استخدام AirPods مع هواتف Samsung

إذا كنت غير متأكد من شراء AirPods لهاتفك Samsung، يمكن أن تساعدك هذه الدليل بالتأكيد. السؤال الأكثر وضوحًا هو ما إذا كان الجهازين متوافقين.

كيفية استنساخ القرص الصلب

كيفية استنساخ القرص الصلب

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

كيفية إصلاح فشل تحميل برنامج التشغيل WUDFRd على نظام التشغيل Windows 10؟

كيفية إصلاح فشل تحميل برنامج التشغيل WUDFRd على نظام التشغيل Windows 10؟

هل تواجه رسالة الخطأ أثناء تشغيل جهاز الكمبيوتر الخاص بك والتي تفيد بفشل تحميل برنامج التشغيل WUDFRd على جهاز الكمبيوتر الخاص بك؟