Licence GMI cours de Systèmes d’Exploitation II ( Driss MATROUF )
IUP GMI Université d’Avignon et des Pays de Vaucluse Page 1
Diagramme bloc du noyau
Le buffer Cache
Le noyau pourrait lire et écrire directement
la relative lenteur de transfert du disque
=> faible capacité de traitement
L ’utilisation d ’une réserve de tampons
=> minimisation de la fréquence d ’accès
Le buffer Cache = réserve de tampons
Implantation du buffer-Cache
Lors de l’initialisation le noyau alloue de l espace pour les tampons
Un tampon = un en-tête + un tableau contenant les données d ’un bloc
un tampon représente un bloc disque (temporaire).
Les données d ’un bloc se trouvent dans au plus un tampon
Licence GMI cours de Systèmes d’Exploitation II ( Driss MATROUF )
IUP GMI Université d’Avignon et des Pays de Vaucluse Page 2
En-tête d ’un tampon
En-tête d ’un tampon
Le noyau gère les tampons en utilisant :
des files à adressage calculé
une liste de tampons libres
files et liste doublement chaînées
L ’état d ’un tampon :
verrouillé (occupé) ou déverrouillé (libre)
contient des données valides
marqué en écriture différée
En train d ’être charger ou transférer
attendu par un processus
Licence GMI cours de Systèmes d’Exploitation II ( Driss MATROUF )
IUP GMI Université d’Avignon et des Pays de Vaucluse Page 3
La liste des tampons libres
l ’extraction se fait en tête et la remise en queue (en général).
Les files à adressage calculé
Licence GMI cours de Systèmes d’Exploitation II ( Driss MATROUF )
IUP GMI Université d’Avignon et des Pays de Vaucluse Page 4
Extraction d ’un tampon
Algorithme getbloc{ /* (retourne un tampon verrouillé) */
while(T non trouvé){
if(bloc dans une file){
if(T occupé){ sleep (E); continue;}
marquer T occupé; extraire T de la LTL; return(T);
}
else{ /* le bloc n ’est pas dans la réserve */
if(LTL est vide){ sleep(E); continue; }
extraire un T de la LTL;
if(T marqué écriture différée){
écriture asynchrone du tampon; continue; }
extraire T et le mettre dans la bonne file;
return T verrouillé;
}
}
Libération de tampons
Un tampon retourné par getbloc reste verrouillé --> libération HN explicite
Le tampon est mis à la fin sauf :
une erreur E/S
marqué ancien
Pas de libérations imbriquées
la procédure de libération est invoquée aussi à la fin d ’une E/S asy
Licence GMI cours de Systèmes d’Exploitation II ( Driss MATROUF )
IUP GMI Université d’Avignon et des Pays de Vaucluse Page 5
Algorithme de libération
Algorithme libérer_tampon
Entrée : tampon verrouillé
{
réveiller tous les processus en attente d ’un tampon
relever le niveau d ’exécution du processeur
if(contenu du tampon valide et non ancien)
mettre le tampon à la fin de la LTL;
else mettre le tampon en tête de LTL;
rabaisser le niveau d ’exécution du processeur
déverrouiller le tampon;
}
Quelques remarques
Verrouillage au début d ’un appel sys et déverrouillage avant la fin.
Le noyau perd le contrôle sur les tampons seulement dans le cas d ’une E/S.
En théorie le noyau ne résout pas le problème de famine, mais dans la pratique….
Lecture d ’un bloc
Algorithme bread /lecture d ’un bloc */
sortie : tampon verrouillé contenant les données
{
obtenir un tampon pour le bloc (getbloc).
If(données valides) return (tampon);
initialiser une lecture disque;
sleep(E);
return(tampon);
} Ecriture d ’un tampon
Algorithme bwrite /* écriture d ’un bloc */
Entrée : tampon verrouillé
{
initialiser une écriture disque;
if(E/S synchrone){
sleep(E);
libérer le tampon;
}
else
if(écriture différée)
marquer « à mettre en tête de la LTL »
}
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !