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

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Forkbomb – Wikipedia

Forkbomb

aus Wikipedia, der freien Enzyklopädie

Rekursive Prozesserzeugung
Rekursive Prozesserzeugung

Eine Forkbomb ist ein Programm, dessen einziger Zweck es ist, rekursiv Kopien seiner selbst zu starten und so alle verfügbaren Systemresourcen zu verbrauchen und das System zu blockieren.

In Pseudocode sieht eine Forkbomb etwa so aus:

ProgrammX {
  Rufe ProgrammX auf;
  Rufe ProgrammX auf;
  Warte bis ProgrammX beendet wurde;
}

Das Programm ruft zwei Kopien seiner selbst auf und wartet dann, bis sie wieder beendet wurden. Dieser Zustand wird jedoch niemals erreicht werden, da die Kopien genauso verfahren. Aus einem Programmaufruf werden somit zunächst 2, dann 4, dann 8 und nach nur 10 solcher Zyklen sind bereits über tausend Kopien gestartet und aktiv. Allgemein lässt sich festhalten, dass nach n Zyklen 2n Prozesse erzeugt worden sind, ihre Anzahl also exponentiell zunimmt. Diese verbrauchen, selbst wenn sie keinen komplizierten Code enthalten, CPU-Zeit und Speicher zur Verwaltung durch das Betriebssystem. Ein normaler Betrieb bzw. normales Arbeiten ist dann, bereits wenige Sekunden nach Aufruf der Forkbomb, nicht mehr möglich.

Der konkrete Effekt einer Forkbomb hängt in erster Linie von der Konfiguration des Betriebssystems ab. Beispielsweise erlaubt PAM auf Unix- und Unix-ähnlichen Betriebssystemen die Zahl der Prozesse und den maximal zu verbrauchenen Speicher pro Benutzer zu beschränken. "Explodiert" eine Forkbomb auf einem System, welches diese Möglichkeiten der Beschränkung nutzt, scheitert irgendwann der Versuch, neue Kopien der Forkbomb zu starten und das Wachstum ist eingedämmt.

[Bearbeiten] Beispiele für Forkbombs

Um die Stabilität des Systems nicht zu gefährden wird empfohlen, die nachstehend genannten Beispiele nicht auszuführen.

:s
 start %0
 goto s
#include <unistd.h>
 
int main(void){
    while(fork());
 
    return 0;
}
perl -e "fork while fork"
function f() {
     f | f&
 }
 f

Um die Eigenschaft als Forkbomb zu verschleiern, wird obiger Code häufig in folgender Kurzform gegeben:

:(){ :|:& };:

Die Benennung der Funktion mit : sorgt für zusätzliche Verwirrung.

import os
 
while True:
    os.fork()

[Bearbeiten] Siehe auch


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 -