Next: La bibliothèque standard Up: Le Buffer Cache Previous: La liste doublement chaînée

L'algorithme de la primitive getblk

Algorithme getblk (allocation d'un tampon)
entree : # disque logique , # de block
sortie : un tampon verrouille utilisable pour manipuler bloc
{
    while (tampon non trouve)
    {
        if (tampon dans sa hash liste)
        {
                if (tampon actif )  
                { 
       [5]          sleep attente de la liberation du tampon
                    continuer
                }
       [1]      verrouiller le tampon      
                retirer le tampon de la liste des tampons libres
                retourner le tampon
        }
        else  /* n'est pas dans la hash liste */
        {
                if (aucun tampon libre ) 
                {
        [4]         sleep attente de la liberation d'un tampon 
                    continuer
                }
                retirer le tampon de la liste libre
        [3]     if (le tampon est a ecrire)  
                {
                    lancer la sauvegarde sur disque
                    continuer
                }
        [2]     retirer le buffer de son ancienne liste 
                 de hashage, le placer sur la nouvelle
                retourner le tampon
        }
    }
}

Dominique REVUZ

  Une Bug Un mail Merci