Ressourcenleck
Im Informatik, a Ressourcenleck ist eine bestimmte Art von Ressource Verbrauch durch a Computer Programm wo das Programm keine Ressourcen veröffentlicht, die es erworben hat. Diese Bedingung ist normalerweise das Ergebnis eines Fehlers in einem Programm. Typische Ressourcenlecks umfassen Speicherleck und Leck zugehen, insbesondere Dateihandle -Lecks, obwohl der Speicher häufig getrennt von anderen Ressourcen angesehen wird.[1]
Beispiele für Ressourcen, die in begrenzten Zahlen zur Verfügung stehen Betriebssystem enthalten Internet -Sockeln, Dateigriffe, Prozesstabelle Einträge und Prozessidentifikatoren (Pids). Ressourcenlecks sind häufig ein kleines Problem, was höchstens geringfügig verlangsamt und von der Beendigung der Prozesse wiederhergestellt wird. In anderen Fällen können Ressourcenlecks ein großes Problem sein, das verursacht wird Ressourcenhunger und schwerwiegende Systemabschwächung oder Instabilität, das Verlauf des Verlaufs, andere Prozesse oder sogar das System.[2] Ressourcenlecks bleiben häufig unter Lichtbelastung und kurzen Laufzeiten unbemerkt, und diese Probleme manifestieren sich nur unter starker Systemlast oder Systeme, die über einen längeren Zeitraum läuft.[3]
Ressourcenlecks sind insbesondere ein Problem für Ressourcen, die in sehr geringen Mengen verfügbar sind. Eine einzigartige Ressource ausüben, wie z. sperren, ist besonders schwerwiegend, da dies sofortiger Ressourcenhunger verursacht (es verhindert, dass andere Prozesse es erfassen) und Ursachen Sackgasse. Absichtlich undichte Ressourcen können in a verwendet werden Denial-of-Service-Angriff, so wie ein Gabelbombeund damit Ressourcenlecks vorhanden a Sicherheitsfehler.
Ursachen
Ressourcenlecks sind im Allgemeinen auf Programmierfehler zurückzuführen: Ressourcen, die erworben wurden Für die Veröffentlichung zu fehlen.
Ein sehr häufiges Beispiel ist, dass die geöffneten Dateien nicht schließen, die einen Dateihandle auslaufen. Dies geschieht auch mit Rohre. Ein weiteres häufiges Beispiel ist a Elternprozess nicht anrufen Warten auf einen Kinderprozess, was den abgeschlossenen Kinderprozess als Zombie -Prozess, undicht a Prozesstabelle Eintrag.
Prävention und Minderung
Ressourcenlecks können verhindert oder durch festgelegt werden Resourcenmanagement: Programmierungstechniken oder Sprachkonstrukte können Lecks verhindern, indem Ressourcen unverzüglich veröffentlicht werden, während ein separater Prozess möglicherweise ausgelegt wurde. Viele Ressourcenlecks werden durch die Ressourcengewinnung durch die festgelegt Betriebssystem Nach dem Prozess beendet und macht eine Ausfahrt
Systemanruf.
Ressourcenlecks sind daher in erster Linie ein Problem für langlebige Prozesse, da durchgesickerte Ressourcen, die von immer noch laufenden Prozessen gehalten werden, oft nicht zurückgewiesen werden. und für Prozesse, die viele Ressourcen schnell erwerben und auslaufen.
Siehe auch
Verweise
- ^ Deitel, Harvey M.; Deitel, Paul J. (2005), C# für Programmierer (2. Aufl.), Prentice Hall Professional, p. 443, ISBN 9780132465915.
- ^ Russinovich, Mark; Solomon, David; Ionescu, Alex (2012), Windows Interna, Teil 1 (6. Aufl.), Pearson Education, p. 279, ISBN 9780735671300.
- ^ Gregory, Kate (1998), Verwenden Sie visuell C ++ 6, Que Publishing, p.590, ISBN 9780789715395.