Garbage Collector: System halted



  • In dem Buch von Volz habe ich ein sehr interessanten Hinweis entdeckt:

    Wenn der Garbage Collector aufräumt, wird das Programm zur Laufzeit angehalten.

    Dazu schreibt Volz:

    "Solange nämlich das System nach freizugebendem Speicher sucht, steht das Programm, und damit erfolgt auch keine Reaktion auf eingehende Ereignisse".

    Und an anderer Stelle:

    "... können Sie sich vorstellen, dass die Steuerung eines Atomkraftwerks für einige Zeit angehalten wird, da das System nach nicht mehr benötigtem Speicher sucht? Ich würde mich an dieser Stelle unauffällig Richtung Ausgang begeben ..."

    Tja, wenn das hilft! 😉

    Es entsteht hier der Verdacht, daß c# für Echtzeit-Maschinensteuerung nicht oder nur mit den nötigen Vorsichtsmaßnahmen geeignet ist. Z. B. daß die Maschine aus einem Buffer liest, der regelmäßig nachgefüllt wird.

    Pascal



  • Das ist zwar im Grundtenor richtig, aber die Details ... (1) ein GC sucht nicht nach nicht mehr benötigtem Speicher, im Gegenteil, er sucht noch benötigte Objekte und planiert den Rest einfach über, egal wieviele tote Objekte da liegen. (2) es gibt echtzeitfähige Garbage Collectoren (k.A. wie ausgereift die sind), (3) im Echtzeitbereich verzichtet man traditionell auf jegliche, auch manuell verwaltete, dynamische Speicherallokation, denn die Laufzeit so eines malloc- oder free-Aufrufs ist auch nicht garantiert unter einer bekannten Schranke.





  • Bashar schrieb:

    (3) im Echtzeitbereich verzichtet man traditionell auf jegliche, auch manuell verwaltete, dynamische Speicherallokation, denn die Laufzeit so eines malloc- oder free-Aufrufs ist auch nicht garantiert unter einer bekannten Schranke.

    also wenn ich an einen einfachen buddy-allokator denke, dann sehe ich da nur eine beschränkte laufzeit.



  • pascal2009 schrieb:

    Es entsteht hier der Verdacht, daß c# für Echtzeit-Maschinensteuerung nicht oder nur mit den nötigen Vorsichtsmaßnahmen geeignet ist. Z. B. daß die Maschine aus einem Buffer liest, der regelmäßig nachgefüllt wird.

    Da Windows kein Realtime-OS ist, what's the point?


Anmelden zum Antworten