| Chapitre 3 : Les mécanismes de base |
Créer_processus :
Exemple 2 - Gestion des processus :
Enoncé
En utilisant les fonctions précédentes, écrivez les fonctions suivantes :
Cette fonction devra permettre la création d'un nouveau processus. Cette création sera matérialisée par l'allocation et l'initialisation d'un descripteur (Bloc de Contrôle de Processus) :
Int Créer_processus( )
{
int I ;
I = Chercher_descripteur() ;
Ad_pile = Créer_pile() ;
Empiler (CTX) ;
Desc[I].Ad_pile = ad_pile ;
Desc[I].état = prêt ;
Desc[I].nom = nom ;
Desc[I].priorité = priorité;
Insérer_prêt(I) ;
}
Débloquer :
Cette fonction devra permettre le déblocage d'un processus à l'occurrence de l'événement attendu par ce processus. Il faut tout simplement :
Debloquer(int I)
{
Desc[I].état = prêt ;
Insérer_prêt(I) ;
}
Activer :
Cette fonction devra permettre l'élection d'un nouveau processus qui va s'exécuter ensuite sur l'unité centrale. Son travail consiste à
Activer()
{
I = choisir_processus( ) ;
Desc[I].état = élu ;
UC_CHARGER ;
}
Détruire :
Cette fonction devra permettre la destruction du processus. Son travail consiste à :
Détruire(Int I)
{
Libérer les ressources détenues ;
Libérer l'entrée I dans la table des descripteurs ;
Activer ;
}
Bloquer :
Cette fonction devra permettre le blocage du processus. Son travail consiste à :
bloquer(int I)
{
Desc[I].état = bloqué ;
UC_VIDER ;
Activer ;
}