ما هو سجل المكدس؟

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

في أدنى مستوى من برمجة الكمبيوتر ، المكدس هو مساحة من الذاكرة – عادة في ذاكرة الوصول العشوائي (RAM) – التي لديها نوع محدد من السلوك. يمكن أن تتم إضافة معلومات إلى المكدس في عملية تسمى الدفع ، أو يمكن أن يتم استرداد المعلومات منه ، وهو ما يسمى التفرقع. نموذج المكدس هو ما يرد أولاً وأخيراً ، مما يعني أنه إذا تم دفع عدة أجزاء من المعلومات إلى المكدس ، فسيكون العنصر الأول الذي يتم دفعه هو آخر عنصر يتم إخراجه ، في حين أن العنصر الأخير الذي يتم دفعه للداخل سوف كن أول من يتم استرجاعه باستخدام أمر pop. يتتبع سجل المكدس الجزء العلوي من المكدس ، والذي يكون دائمًا العنصر الأخير الذي يتم دفعه إليه.

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

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