Kaynak sızıntısı - Resource leak
Gelen bilgisayar bilimleri , bir kaynak sızıntısı belirli bir türüdür kaynak bir tarafından tüketimi bilgisayar programının program satın aldı kaynakları serbest bırakmıyor. Bu durum normalde bir programdaki bir hatanın sonucudur. Tipik kaynak sızıntıları arasında bellek sızıntısı ve tanıtıcı sızıntısı , özellikle dosya tanıtıcı sızıntıları bulunur, ancak bellek genellikle diğer kaynaklardan ayrı olarak değerlendirilir.
Sınırlı sayıda mevcut kaynakların örnekleri işletim sistemine dahil internet prizler , dosya kolları , süreç masa girişleri ve proses tanımlayıcıları (PID'ler). Kaynak sızıntıları genellikle küçük bir sorundur ve en fazla küçük yavaşlamaya neden olur ve işlemler sona erdikten sonra kurtarılır. Diğer durumlarda kaynak sızıntıları, kaynak açlığına ve ciddi sistem yavaşlamasına veya kararsızlığa neden olarak, sızıntı sürecini, diğer süreçleri ve hatta sistemi çökerterek büyük bir sorun olabilir . Kaynak sızıntıları genellikle hafif yüklerde ve kısa çalışma sürelerinde fark edilmez ve bu sorunlar yalnızca ağır sistem yükü veya uzun süre çalışır durumda kalan sistemlerde kendini gösterir.
Kaynak sızıntıları, özellikle çok düşük miktarlarda bulunan kaynaklar için bir sorundur. Kilit gibi benzersiz bir kaynağın sızdırılması özellikle ciddidir, çünkü bu durum kaynak açlığına neden olur (diğer süreçlerin onu almasını engeller) ve kilitlenmeye neden olur . Kasıtlı olarak sızdıran kaynaklar, çatal bomba gibi bir hizmet reddi saldırısında kullanılabilir ve bu nedenle kaynak sızıntıları bir güvenlik hatası sunar .
nedenler
Kaynak sızıntıları genellikle programlama hatalarından kaynaklanır: edinilen kaynaklar serbest bırakılmalıdır, ancak serbest bırakma genellikle büyük ölçüde edinmeden sonra gerçekleştiğinden ve bu arada birçok şey meydana gelebileceğinden (örneğin, bir istisna atılması veya anormal program sonlandırılması) kolaydır. yayının kaçırılması için.
Çok yaygın bir örnek, bir dosya tanıtıcısını sızdıran, açılmış dosyaları kapatamamaktır; bu borularda da olur . Bir diğer yaygın örnek ise ana süreç çağırmak için başarısız beklemek bir üzerinde alt sürecin bir şekilde tamamlanan çocuk işlemini bırakır zombi süreci bir sızıntı, süreç masa girişi.
Önleme ve azaltma
Kaynak sızıntıları, kaynak yönetimi tarafından önlenebilir veya düzeltilebilir : programlama teknikleri veya dil yapıları, kaynakları derhal serbest bırakarak sızıntıları önleyebilirken, ayrı bir süreç sızdırılmış kaynakları geri alabilir. Birçok kaynak sızıntısı , işlem sona erdikten ve bir sistem çağrısı yaptıktan sonra işletim sistemi tarafından kaynak ıslahı ile giderilir .
exit
Kaynak sızıntıları, bu nedenle, hala çalışan süreçler tarafından tutulan sızdırılmış kaynaklar genellikle geri kazanılmadığından, öncelikle uzun ömürlü süreçler için bir sorundur; ve birçok kaynağı hızla elde eden ve sızdıran süreçler için.