See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
جمع القمامة - ويكيبيديا، الموسوعة الحرة

جمع القمامة

من ويكيبيديا، الموسوعة الحرة

Garbage collection أو عملية جمع الموارد الغير مستخدمة في ذاكرة الحاسب الرام

هى شكل من أشكال تنظيم الذاكرة (Memory management) الحاسب بشكل تلقائي حيث أن عملية ال Garbage collection تهدف إلى البحث عن الموارد الغير مستخدمة في الذاكرة ومن ثم إزالتها من أجل الحصول علي مساحة فارغة من الذاكرة لإستخدامها في أعمال أخري. الذي يقوم بهذه العملية يسمى جامع المخلفات (garbage collector)

فهرس

[تحرير] نبذة تاريخية

يعود إختراع ال Garbage collection للعالم الأميريكي جون مكارثي عام 1959 من أجل حل مشاكل تنظيم الذاكرة اليدوي (manual memory management) التي كان يواجهها أثناء استخدام لغة ليسب

[تحرير] الفكرة

الفكرة التي يقوم عليها عمل أي garbage collector هى :

  1. تحديد الأجزاء من البرامج التي لن يتم إستخدامها في المستقبل
  2. استعادة الموارد التي كانت تستخدمها هذه الأجزاء (المساحة التخزينية وغيرها)

الكثير من لغات البرمجة تتطلب وجود ال Garbage collection

هناك لغات تحتوي على Garbage collection في تكوينها الأصلي مثل سي شارب و جافا

و لغات أخرى لا تحتوي على Garbage collection في تكوينها الأصلي ولكن تعمل عمل تطبيق لل Garbage collection خارجي منفصل عنها مثل سي و سي++

[تحرير] الفوائد

أزال ال Garbage collection عبئ التعامل المباشر مع الذاكرة من على كاهل المبرمج وبالتالي فقد ساعد في التخلص من المشاكل التي تنتج من التعامل المباشر مع الذاكرة مثل :

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

[تحرير] Tracing garbage collectors

من أكثر أنواع ال garbage collectors شيوعا حيث تعتمد فكرتهم على تحديد الكائنات (objects) التي يمكن الوصول إليها عن طريق المؤشرات (pointers) و من ثم إعتبار الكائنات الباقية (الغير مشار إليها) كائنات غير مستخدمة و من ثم إزالتها من الذاكرة

يمكن إعتبار الكائن مشار إليه (reachable) عن طريق أمرين :

  • المتغيرات العامة (global variables) مشار إليها دائما و كذلك المتغيرات الداخلية الموجودة في كل دالة عند إستدعائها
  • أي كائن مشار إليها من كان يمكن الوصول إليه يعتبر الكائن الأول مشار إليه أيضا

[تحرير] خوارزميات العمل

  • التحديد و المسح (Mark and sweep) :

تعتمد هذه الفكرة على تخصيص بت واحد لكل كائن في الذاكرة يسمى (in use flag) يشير هذا البت إلى إذا كان هذا الكائن مشار إليه أم لا

قيمة هذا البت دائما صفر إلى أن يبدأ ال garbage collector عمله

يبدأ ال collector بفحص الكائنات المعروف أنه مشار إليها مسبقا ويقوم بجعل قيمة ال (in use flag) بواحد

و عن طريق هذه الكائنات يمكن الوصول للكائنات الأخرى التي تشير إليها وجعل قيمة ال (in use flag) بواحد أيضا

و عند الإنتهاء من فحص جميع الكائنات في الذاكرة يمكن حذف الكائنات ذات ال (in use flag) قيمته صفر حيث أنه تم التأكد من أنها غير مشار إليها فعلا

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


  • التحديد ثلاثي الألوان (tri-colour marking) :

في هذه الفكرة يتم إعتبار الكائنات في الذاكرة نقاط يشير بعضها لبعض و يتم (نظريا) تقسيم هذه النقاط إلى مجموعة من الآلوان (نقاط بيضاء ، نقاط سوداء ، نقاط رمادية)

  1. النقاط البيضاء : تمثل مجموعة الكائنات التي تم إعتبارها غير مشار إليها فعلا (وجاري مسحها) أو أنه لم يتم فحصها بعد
  2. النقاط السوداء : تمثل مجموعة الكائنات التي تم تم العلم أنها مشار إليها فعلا عن طريق كائنات أخرى ولا تشير إلى أي نقاط بيضاء
  3. النقاط الرمادية : تمثب مجموعة الكائنات التي تم العلم أنها مشار إليها فعلا عن طريق كائنات أخرى ولكنها لاتزال تشير إلى نقاط بيضاء (لم يتم فحص هذه النقاط بعد)

في البداية يتم إعتبار جميع النقاط بيضاء ماعدا النقاط المعروف أنها مشار إليها مسبقا يكون لونها رمادي

يبدأ ال collector بالمتغيرات المشار إليها اصلا (الرمادية) يقوم بنقلها إلى المجموعة السوداء عن طريق فحص كل الكائنات التي تشير إليها و نقلها إلى المجموعة الرمادية (حيث أنها أصبحت مشار إليها) الآن أصبح كل النقاط المشار عن طريقة هذه النقطة إذن يمكن نقلها للمجموعة السوداء

يتم إعادة هذه العملية حتى يتم الإنتهاء من كل المجموعة الرمادية فيتبقى المجموعة السوداء (جميعها مشار إليها) و المجموعه البيضاء (لا يوجد أحد يشير إليها) إذن يمكن حذفها الآن

ملاحظة : لا يمكن أن يوجد كائن من المجموعة السوداء يشير مباشرة إلى كائن في المجموعة البيضاء

يعتبر التحديد ثلاثي الألوان أكثر سرعة من طريقة التحديد و المسح

[تحرير] وصلات خارجية و مصادر

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


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -