فيه مصطلحين مهمين جدًا في نظم التشغيل لازم نفهمهم كويس وهما Deadlock و Starvation. وعلى الرغم من إنهم بيبدوا مشابهين لبعض، إلا إن كل واحد فيهم ليه سبب مختلف ونتيجة مختلفة تمامًا عن التاني. فورقة وقلم وتعالوا نشوف الفرق بينهم.
فيه مصطلحين مهمين جدًا في نظم التشغيل لازم نفهمهم كويس وهما Deadlock و Starvation. وعلى الرغم من إنهم بيبدوا مشابهين لبعض، إلا إن كل واحد فيهم ليه سبب مختلف ونتيجة مختلفة تمامًا عن التاني. فورقة وقلم وتعالوا نشوف الفرق بينهم.
Deadlock
قبل ما نشوف ايه هي الـ Deadlock من الناحية الـ Technical تعالوا نفهمها سوا بشكل بسيط من خلال المثال ده:
دلوقتي ولنفترض ان عندنا اوضتين وكل اوضة ليها باب ومفتاح خاص بيها , فعندنا محمود دخل الاوضة بتاعته والباب اتقفل عليه بالقفل , وعندنا يوسف دخل الاوضة التانية والباب اتقفل عليه كذلك بالقفل , طب ايه رأيكم لو محمود كان معاه مفتاح اوضة يوسف بالخطأ ويوسف معاها مفتاح اوضة محمود ؟
كل واحد فيهم عاوز يخرج من الاوضة اللي هو فيها ولكن كل واحد مش هيعرف يفتح اوضته لان المفتاح اللي عاوزه مع التاني فبالتالي بنقول ان حصل هنا Deadlock.
طب كـ Technical باه الكلام ده بيحصل ازاي او بنترجمه لايه ؟
خلونا نتخيل إن عندنا Network System فيه عمليتين (Processes) A و B وكل عملية عايزة تطبع على طابعتين P1 و P2 الاتنين مع بعض.
العملية A حجزت الطابعة P1 ومستنية الطابعة P2.
العملية B حجزت الطابعة P2 ومستنية الطابعة P1.
في الحالة دي، العملية A مش هتقدر تكمل لأن الطابعة P2 محجوزة من العملية B، والعكس صحيح. ده بيعمل Deadlock وكل عملية واقفة مستنية التانية.
Starvation
قبل ما نشوف ايه هي الـ Starvation من الناحية الـ Technical تعالوا نفهما سوا بشكل بسيط من خلال المثال ده:
مثال على ده لو احنا في مستشفى او في عيادة , وفيه طابور اللي بيجي الاول بيدخل الاول , ولكن فيه استثناء هنا الا وهو ان الحالات الطارئة تقدر تدخل وليها اولوية عن المرضى اللي موجودين.
في الحالة دي لو فيه يوم كان عدد حالات الطوارئ كبير جدا , وقتها المرضى هيحصلهم Starvation ومش هيدخلوا للدكتور لان كل ما هيجي الدور على واحد , هيكون فيه حالة طارئة بتدخل.