تسريب الموارد

في علم الحاسوب ، يُعرف تسريب الموارد بأنه نوعٌ خاص من استهلاك الموارد من قِبل برنامج حاسوبي ، حيث لا يُحرر البرنامج الموارد التي حصل عليها. عادةً ما تكون هذه الحالة نتيجةً لخلل برمجي. تشمل تسريبات الموارد الشائعة تسريب الذاكرة وتسريب المقابض ، وخاصةً تسريب مقابض الملفات، مع العلم أن الذاكرة تُدرس غالبًا بشكل منفصل عن الموارد الأخرى. [ 1 ]

تشمل أمثلة الموارد المتاحة بأعداد محدودة لنظام التشغيل : مقابس الإنترنت ، ومقابض الملفات ، وإدخالات جدول العمليات ، ومعرفات العمليات (PIDs). غالبًا ما تكون تسريبات الموارد مشكلة بسيطة، لا تُسبب في أحسن الأحوال سوى تباطؤ طفيف، ويتم استعادتها بعد انتهاء العمليات. في حالات أخرى، قد تُشكل تسريبات الموارد مشكلة كبيرة، مُسببةً نقصًا حادًا في الموارد وتباطؤًا شديدًا في النظام أو عدم استقراره، مما قد يؤدي إلى تعطل العملية المُسرِّبة، أو عمليات أخرى، أو حتى النظام نفسه. [ 2 ] غالبًا ما تمر تسريبات الموارد دون أن يلاحظها النظام في ظل الأحمال الخفيفة وفترات التشغيل القصيرة، ولا تظهر هذه المشاكل إلا في ظل الأحمال الثقيلة على النظام أو الأنظمة التي تستمر في العمل لفترات طويلة. [ 3 ]

تُعدّ تسريبات الموارد مشكلةً خطيرةً، لا سيما بالنسبة للموارد المتوفرة بكمياتٍ قليلةٍ جدًا. ويُعتبر تسريب موردٍ فريدٍ، كالقفل مثلاً ، أمرًا بالغ الخطورة، إذ يُؤدي إلى ندرةٍ فوريةٍ للموارد (يمنع العمليات الأخرى من الحصول عليها) ويُسبب حالةَ جمودٍ تام . كما يُمكن استخدام تسريب الموارد عمدًا في هجوم حجب الخدمة ، كهجوم القنبلة المتفرعة ، وبالتالي تُشكّل تسريبات الموارد ثغرةً أمنيةً خطيرة .

الأسباب

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

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

الوقاية والتخفيف

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

وبالتالي فإن تسرب الموارد يمثل مشكلة في المقام الأول بالنسبة للعمليات طويلة الأمد، حيث أن الموارد المتسربة التي تحتفظ بها العمليات التي لا تزال قيد التشغيل غالباً لا يتم استعادتها؛ وبالنسبة للعمليات التي تستحوذ بسرعة على العديد من الموارد وتتسرب منها.

انظر أيضاً

مراجع

  1. ^ ديتل ، هارفي م. Deitel، Paul J. (2005)، C # للمبرمجين (  الطبعة الثانية)، Prentice Hall Professional، ص.  443، ردمك 9780132465915.
  2. روسينوفيتش، مارك؛ سولومون، ديفيد؛ إيونيسكو، أليكس (2012)، أساسيات ويندوز، الجزء 1 (الطبعة السادسة )، بيرسون للتعليم، ص 279، ISBN   9780735671300.
  3. ^ جريجوري ، كيت (1998)، استخدام Visual C++ 6 ، Que Publishing، ص. 590 ، ردمك  9780789715395.