السلام عليكم
عندي بعض الأسئلة حول الـ buffer و stack و الـ heap, سأعرض لكم مأعرفه عن هذه الأشياء الثلاث و أريد منكم تصحيح المعلومات الخاطئة كما أرجو منكم أن تفيدوني إذا كانت لديكم معلومات أكثر عنها.
حسب علمي/جهلي فإن :
- الـ buffer هي ذاكرة مؤقتة لتخزين البيانات أثناء انتقالها من طرف إلى آخر بحيث تختلف السرعة بين كلا الطرفين, باعتبار أن وصول البيانات إلى الطرف الثاني أسرع .. فإن دور الـ buffer يكمن في حفظ البيانات ريثما يكتمل وصولها إلى الطرف الأول لتكمل طريقها إلى الطرف الثاني و الذي غالبا ما يكون المعالج. على سبيل المثال : يتم استخدام الـ buffer عند كل عملية إدخال لأن الإنسان (الطرف الأول) بطبيعة حاله أبطأ من المعالج (الطرف الثاني).
- stack لا أعرف عنها الكثير !, أخبرني بعض الإخوة أنها عبارة عن ذاكرة مؤقتة لتخزين البيانات (المتغيرات) قبل تنفيذ البرنامج أي أنها تدعم الحجز استاتيكي فقط, البعض يقول أن جميع المتغيرات تُخزن في stack (لأن الحجز هنا استاتيكي) و البعض يقول أن وسائط الدوال (فقط) هي التي تُخزن في stack كما يُخزن عنوان السطر الذي تم استدعاء الدالة فيه من الكود .. ينتقل المعالج إلى stack ليجد عناوين وسائط الدالة ثم يرجع إلى المكان الذي توقف عنده سابقا و ذلك عن طريق العنوان المُخزن آنفا, قرأت أيضا أنها تعمل بطريقة "الأول يدخل هو الأول يخرج" أو ما يُعرف اختصارا بـ FIFO ولكن أظن أن هذه الفائدة يجب أن نتعرف عليها أكثر عند التعامل مع هياكل البيانات فقط !
- الـ heap هي ذاكرة مؤقتة لتخزين البيانات (المؤشرات) و هي معاكسة لـ stack حيث يتم فيها تخزين البيانات أثناء تنفيذ البرنامج, البعض يقول أن هذه الذاكرة خاصة بالتعامل مع المؤشرات (لأن الحجز هنا سيكون ديناميكي أي في وقت الرين تايم) و تمتاز الـ heap بأنها تستعمل أسلوب FILO أي أن الذي يدخل أولا يخرج أخيرا.
هذا كل ما أعرفه, حان دوركم في تصحيح الأخطاء و إعطاء المزيد من المعلومات التي من شأنها أن تثري أفكارنا البرمجية :)
تحياتي.