اذهب إلى المحتوى

السؤال

نشر (معدل)

ماذا تعني Process synchronization في operating Systems وكيف يمكن تطبيقها في التكنولوجيا البرامج، التطبيقات، الأجهزة، .... الخ ؟

ارجو توضيحها بمثال علمي واقعي.

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال

Recommended Posts

  • 0
نشر

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

_ProcessSync1.png.68528b57d554db7f4f3f3bf17ef8fbeb.png

تقوم معظم عمليات المزامة في حالة الوصول لمقاطع الذاكرة المشتركة و التي تحاول عدة عمليات برمجية تعديل/قراءة قيمتها.

يقوم المبرمج بتحديد ماهو الجزء من الشيفرة البرمجية التي تعامل مع الموارد المتنازع عليها Critical Section حيث يتم حجز أو منع عمليات أخرى من الوصول والتعديل على نفس الجزء من الذاكرة و يتم فك الحجز بعد الانهاء:

critical-section-problem.png.6fce6ca86c0585e3bfb2dc5347449022.png

مثل مراحل عدة:

  1. قبل الدخول المنطقة الحرجة : التأكد أن الموارد متاحة وحجزها قبل استكمال العمل
  2. المنطقة الحرجة : الوصول للبيانات المتنازع عليها و القيام بالتعديل
  3. الخروج من المنطقة الحرجة : إعادة تحديد المنطقة الحرجة كمتاحة و فك الحجز عنها

المثال العلمي: في المعاملات البنكية، قبل التعديل على رصيد أحد الحسابات يتم منع باقِ العمليات من التعديل أو قراءة قيمة الرصيد حتى يتم الإنتهاء من المعاملة الحالية وتعديل الرصيد.

 

  • 0
نشر
بتاريخ منذ ساعة مضت قال Wael Aljamal:

المثال العلمي: في المعاملات البنكية، قبل التعديل على رصيد أحد الحسابات يتم منع باقِ العمليات من التعديل أو قراءة قيمة الرصيد حتى يتم الإنتهاء من المعاملة الحالية وتعديل الرصيد.

 

هل يمكن أن توضح أكثر كيف تستخدم ال process synchronization في المعاملات البنكية .

  • 0
نشر
بتاريخ On 5/31/2021 at 20:47 قال Aya Waadullah:

هل يمكن أن توضح أكثر كيف تستخدم ال process synchronization في المعاملات البنكية .

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

بهذه الحالة العملية التي تنتهي ثانياً ستقوم بكتابة الرصيد الذي حسبته هي وسيتم تجاهل القيمة التي حسبتها العملية الأولى

بدون مزامنة:

SELECT balance FROM accounts.

=> balance = 100

UPDATE accounts SET BALANCE = [balance + 120] WHERE ID = [5]

UPDATE accounts SET BALANCE = [balance + 350] WHERE ID = [5]

=> balance = 450 // خطأ

مع مزامنة سيتم تعديل balance بعد انتهاء أول عملية ثم ستقوم العملية الثانية بالتعديل على ناتج الأولى.

لتصبح 570 = balance 

  • 0
نشر (معدل)
بتاريخ On 31‏/5‏/2021 at 21:07 قال Wael Aljamal:

بدون مزامنة:


SELECT balance FROM accounts.

=> balance = 100

UPDATE accounts SET BALANCE = [balance + 120] WHERE ID = [5]

UPDATE accounts SET BALANCE = [balance + 350] WHERE ID = [5]

=> balance = 450 // خطأ

مع مزامنة سيتم تعديل balance بعد انتهاء أول عملية ثم ستقوم العملية الثانية بالتعديل على ناتج الأولى.

لتصبح 470 = balance 

كيف تصبح 470 = balance !!!!!

في هذا المثال " 100 = balance "

100 + 120 = 220 (ناتج العملية الاولى)

220 + 350 = 570 (ناتج العملية الثانية)

من المفروض تصبح 570 = balance 

تم التعديل في بواسطة Aya Waadullah
  • 0
نشر
بتاريخ On 31‏/5‏/2021 at 21:07 قال Wael Aljamal:

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

بهذه الحالة العملية التي تنتهي ثانياً ستقوم بكتابة الرصيد الذي حسبته هي وسيتم تجاهل القيمة التي حسبتها العملية الأولى

بدون مزامنة:


SELECT balance FROM accounts.

=> balance = 100

UPDATE accounts SET BALANCE = [balance + 120] WHERE ID = [5]

UPDATE accounts SET BALANCE = [balance + 350] WHERE ID = [5]

=> balance = 450 // خطأ

مع مزامنة سيتم تعديل balance بعد انتهاء أول عملية ثم ستقوم العملية الثانية بالتعديل على ناتج الأولى.

لتصبح 570 = balance 

هناك عدة حلول ممكنة لِ Synchronization وهي :-

1 software solution for synchronization

2 Hardware support for synchronizatio

● Disable interrupts 

● Test and set instruction 

3 OS support for synchronization 

● Mutex locks 

● Semaphore 

ما هو الحل المناسب لإستخدام هذا المثال (المعاملات البنكية) ؟

هل يمكن التوضيح !!!

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...