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