Chapitre 3 : Les mécanismes de base


Exemple 2 - Gestion des processus :
Enoncé
En utilisant les fonctions précédentes, écrivez les fonctions suivantes :

Créer_processus :
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 ;
}