Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme du banquier

Besoin d'explications.

Sujet résolu
    31 juillet 2019 à 13:18:24

    Bonjour,

    Je ne sais pas si je poste mon sujet au bon endroit mais j'ai besoin d'aide pour comprendre le fonctionnement d'un algorithme.

    J'ai un énoncé de base :


     Et les resultats d'un camarde, que je suppose justes



    Est ce que quelqu'un pourrait m'aider à comprendre comment trouver ces résultats ?

    Je sais que S est la matrice de ce dont on besoin les processus pour se terminer, mais je n'avance pas.

    Merci d'avance...

    • Partager sur Facebook
    • Partager sur Twitter
    01101010011001010010000001101110001001100010001100110000001100110011100100111011011000010110100100100000011100010111010100100110001000110011000000110011001110010011101101110101011011100010000000100110011011110110010101101100011010010110011100111011011010010110110000100000011011010110000101101001011100110010000001101010011001010010000001110110011011110110100101110011001000000110001001101001011001010110111000101110
      1 août 2019 à 13:19:47

      Je vais essayer de vous exposer mes reflexions, du coup.

      Il faut trouver p1. Dans le résultats que j'ai, il y a trois lignes dans p1 :
      p : 1 2 1 0
      e : 6 3 4 2
      r : 5 1 3 2

      E ne change jamais, c'est donc la valeur qu'on donne dans l'énoncé. 6 3 4 2, c'est le nombre de ressources existantes dans le systeme.

      Mais comment trouver la ligne P ?

      J'ai demandé de l'aide à mon prof, et il m'a dit :

      E c est le total des ressources du système
      R c'est les ressources restantes a allouer

      Pour E ça confirme ce que je pensais. Mais pour P ?

      Je rame complétement..

      Je me dis que A, c'est peut-être P0, avant P1, P2, etc

      Et dans tous les exemples que je trouve sur internet, il y a une colonne ou une matrice "maximum"
      C'est juste que mon prof l'a pas appelé comme ça là et que j'arrive pas à l'identifier. Ou alors elle n'est pas là..
      • Partager sur Facebook
      • Partager sur Twitter
      01101010011001010010000001101110001001100010001100110000001100110011100100111011011000010110100100100000011100010111010100100110001000110011000000110011001110010011101101110101011011100010000000100110011011110110010101101100011010010110011100111011011010010110110000100000011011010110000101101001011100110010000001101010011001010010000001110110011011110110100101110011001000000110001001101001011001010110111000101110
        2 août 2019 à 15:13:24

        Bon, personne n'est venu m'aider, et j'ai trouvé de mon côté, je clos le sujet

        - A partir de l'énoncé plus haut, je peux dire que Exist = (6 3 4 2), le total des ressources existantes dans le système. (Ca me perturbe que ce soit une valeur définie arbitrairement, en fait).

        Dispo = Exist - Total = (6 3 4 2) - (5 3 2 2) = (1 0 2 0)

        Pour trouver l'etat sûr :
        Trouver dans ressources demandées (S ?) une ligne dont les valeurs sont inférieurs ou égales à celle de dispo.
        P1 --> Pas possible
        P2 --> Pas possible
        P3 --> Pas possible
        P4 --> Possible. Tiens tiens, ça expliquerais pourquoi il a commencé par P4.

        Supposer que P4 obtient ses ressources, Supprimer sa ligne et actualiser dispo. :

        Alloc de P4 (1 1 0 1)
        Need de P4 (0 0 1 0)
        neo_alloc. de P4 --> (1 1 1 1)
        neo_dispo. -> (1 0 2 0) - (0 0 1 0) = (1 0 1 0)
        P4 se termine :
        P4 libère (1 1 1 1)
        dispo. -> (1 0 1 0) + (1 1 1 1) = (2 1 2 1)

        Répeter jusqu'à ce que les processus soient terminés.

        neo_dispo est (2 1 2 1)

        P1 possède des valeurs inférieures ou égales :

        Alloc de P1 (3 0 1 1)
        Need de P1 (1 1 0 0)
        neo_alloc. de P1 --> (4 1 1 1)
        neo_dispo. -> (2 1 2 1) - (1 1 0 0) = (1 0 2 1)
        P1 se termine :
        P1 libère (4 1 1 1)
        dispo. -> (1 0 2 1) + (4 1 1 1) = (5 1 3 2)

        P2 possède des valeurs inférieures ou égales :

        Alloc de P2 (0 1 0 0)
        Need de P2 (0 1 1 2)
        neo_alloc. de P2 --> (0 2 1 2)
        neo_dispo. -> (5 1 3 2) - (0 1 1 2) = (5 0 2 0)
        P2 se termine :
        P2 libère (0 2 1 2)
        dispo. -> (5 0 2 0) + (0 2 1 2) = (5 2 3 2)

        P3 possède des valeurs inférieures ou égales :

        Alloc de P3 (1 1 1 0)
        Need de P3 (3 1 1 0)
        neo_alloc. de P3 --> (4 2 2 0)
        neo_dispo. -> (5 2 3 2) - (3 1 1 0) = (2 1 2 2)
        P3 se termine :
        P3 libère (4 2 2 0)
        dispo. -> (2 1 2 2) + ( 4 2 2 0) = (6 3 4 2)

        P5 possède des valeurs inférieures ou égales :

        Alloc de P5 (0 0 0 0)
        Need de P5 (2 2 2 0)
        neo_alloc. de P5 --> (2 2 2 0)
        neo_dispo. -> (6 3 4 2) - (2 2 2 0) = (4 1 2 2)
        P5 se termine :
        P5 libère (2 2 2 0)
        dispo. -> (4 1 2 2) + (2 2 2 0) = (6 3 4 2)

        Tous les processus peuvent s'achever sans interblocage, l’état est sûr

        -
        Edité par 4n70n-1340n 2 août 2019 à 15:15:06

        • Partager sur Facebook
        • Partager sur Twitter
        01101010011001010010000001101110001001100010001100110000001100110011100100111011011000010110100100100000011100010111010100100110001000110011000000110011001110010011101101110101011011100010000000100110011011110110010101101100011010010110011100111011011010010110110000100000011011010110000101101001011100110010000001101010011001010010000001110110011011110110100101110011001000000110001001101001011001010110111000101110

        Algorithme du banquier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown