Betriebssysteme->deadlocks



  • blurry333 schrieb:

    wieso ist in deinem Beispiel t=0 obwohl du es nicht mit 0 initialisiert hast

    globale variablen werden vorm aufruf von 'main' automatisch auf 0 gesetzt (wenn sie nicht mit was anderem initialisiert werden).
    🙂



  • ;fricky schrieb:

    audacia schrieb:

    Ein besonders schön anfälliges Exempel für solchen Code wäre das hier ...

    ^^das ist ja bloss eine endlosschleife.
    was ich meine, geht etwa so (simples beispiel, in der realität sind solche hänger meistens nicht so offensichtlich):

    int t;
    
    void process_1 (void)
    {
       if (t > 9)
          return;
       t++;
       puts ("p1 running");
    }
    
    void process_2 (void)
    {
       if (t > 5)
          return;
       t++;
       puts ("p2 running");
    }
    
    int main (void)
    {
       for(;;)
       {
          process_1();
          process_2();
          ...
          // noch mehr code, der davon nicht betroffen ist
          ...
       }
    }
    

    ^^ keiner von beiden setzt 't' zurück, deswegen blockt es. beide würden weiterlaufen, wenn's einer tun würde.
    🙂

    das ist auch nur ne endlosschleife, hat mit deadlock noch nix zu tun.



  • hustbaer schrieb:

    das ist auch nur ne endlosschleife, hat mit deadlock noch nix zu tun.

    lass mich raten: dir fehlt der preemptive multitasking-kernel, der das ganze antickert, richtig?
    🙂



  • Zusätzlich benötigt man für jeden Prozess noch eine Funktion y = f(x) welche für jede Adresse im virtuellen Speicher die zugehörige Adresse im physischen Speicher zurückliefert.

    Jetzt kommts:

    Die Abbildung f(x) ist keine mathematische Funktion, sondern wird von einem Hardwaregerät bereitgestellt.

    Den letzten Satz versteh ich nicht. Das Hardwaregerät hat doch bestimmt
    auch eine Software die die Berechnung ausführt oder ?



  • Ja, das mit "keine mathematische Funktion" ist Käse, natürlich ist das auch (gerade) mathematisch eine Funktion. Damit soll wohl gemeint sein, dass das kein Ausdruck wie "y = x*1000 - 7" ist.



  • krabbels schrieb:

    Installiere Eclipse mit ein paar Plugins und mit etwas Glück gibts nach dem Start nen Deadlock 😉

    Ist mir in 7 Jahren Eclipse nie passiert.



  • blurry333 schrieb:

    Den letzten Satz versteh ich nicht. Das Hardwaregerät hat doch bestimmt
    auch eine Software die die Berechnung ausführt oder ?

    dieses hardwaregerät ist ungefähr sowas: http://en.wikipedia.org/wiki/Memory_management_unit
    die 'software' für solche dinger wird mit hardwarebeschreibungssprachen entwickelt und als logisches schaltnetz auf 'nem silikon-chip verewigt. also, da ist keine CPU drin, die befehle nacheinander abarbeitet wie im PC oder so.
    🙂



  • byto schrieb:

    krabbels schrieb:

    Installiere Eclipse mit ein paar Plugins und mit etwas Glück gibts nach dem Start nen Deadlock 😉

    Ist mir in 7 Jahren Eclipse nie passiert.

    Dann hast du wohl die falschen Plugins installiert gehabt(cdt ist dafür ganz gut geeignet). Ich kann mich noch dran erinnern wie ich(und viele andere auch) ständig die Configs löschen mussten damits überhaupt wieder startet.



  • Die offiziellen Java Plugins laufen alle nahezu fehlerfrei.



  • Was meinst du mit offiziellen Java Plugins(cdt ist ja nun nicht gerade ein Nischenplugin)? Klar, mit einer Standard-Installation ohne irgendwelche Änderungen kann man Glück haben. Aber sobald ich Plugins verwendet habe, gabs schnell Ärger.



  • Ein Thread zum Thema: Warum man besser bei Wikipedia nachschaut, was Deadlocks sind, als hier zu fragen.



  • Seid ihr eigentlich alle total schwul? Was haben Dreadlocks mit Betriebssystemen zu tun????


Anmelden zum Antworten