Création et gestion de processus via des algorithmes d’ordonnancements

Soyez le premier à donner votre avis sur cette source.

Vue 8 333 fois - Téléchargée 1 340 fois

Description

Ce programme est un programme écrit en C sous linux , utilisant bel et bien ses librairies et fonctions qui facilitent la création et gestion de processus , en utilisant deux algorithmes d'ordonnancements ( FIFO ET RR ) et affiche a la fin sa date d'arrivée(s) , temps d’exécution , temps de séjours et temps de séjours moyens .
Vos critiques sont attendus ;)

Source / Exemple :


#include<stdio.h>
#include<sched.h>
#include<unistd.h>
#include<stdlib.h>

typedef struct process
{
int DA;
int TE;
int tempsej;
int temfin;
int pol;
int pr;
int reste;

}process;

struct sched_param P;
int main()

{int i,j,nb,sfin,ss,ssej,q,ttime,c; process* proc;char politique[20];process permut;float temsej;int pid,* pri;
  P.sched_priority=5;

/*Dnner le nombre de processus*/
printf ("entrer le nombre de processus\n");
 scanf("%d",&nb);
 
 
 
/*allouer le tableau de maniÃ&#168;re dynamique*/
proc=( process *)malloc(sizeof( process )*nb);

/*Donner la politique choisie FIFO:RR*/
printf("entrer la politique appliquee FIFO:RR\n");
scanf("%s",politique );
if (strcmp(politique,"FIFO")==0)
{ /*FIFO*/
 /*attribuer à chaque processus une date d'arrivee et un temps d'execution*/
   for(i=0;i<nb;i++)
   {printf("entrer la date d'arrivee du processu (%d)\n",i+1);
   scanf("%d",&proc[i].DA);
   printf("entrer la duree d'execution du processus (%d)\n",i+1);
   scanf("%d",&proc[i].TE);
   }

  

/*trier le tableau par ordre croissant de date darrivee pour faciliter le traitement par la suite*/
for(i=0;i<nb+1;i++)
for(j=i+1;j<nb;j++)
{
if (proc[i].DA>proc[j].DA)

{
permut=proc[i];
proc[i]=proc[j];
proc[j]=permut;
}

}
printf("\n");

/*Afficher l'ordonnancement appilqué*/
printf("Ordonnancement FIFO\n");
/*Afficher la date d'arrivee et le temps d'execution de chaque processus*/
printf("Processus\t DA\t TE\n");
for (i=0;i<nb;i++)
{
printf("p(%d)\t\t %dms \t %dms\n",i+1,proc[i].DA,proc[i].TE);
}
printf("\n");
/*afficher lA DATE DE FIN D'EXECUTION DE CHAQUE  processuss*/
printf("****date de fin d'execution des %d processus****\n",nb);
for(i=0;i<nb;i++)
{printf("p(%d)\t",i+1);
}
printf("\n");
/*Calcul*/
sfin=0;
ssej=0;
for(i=0;i<nb;i++)
{
 sfin=sfin+proc[i].TE;
 proc[i].temfin=sfin;
 ssej=sfin-proc[i].DA;
 proc[i].tempsej=ssej;
printf("%dms\t",proc[i].temfin);

}
printf("\n");
/*afficher le temps de sejour de chaque processuss*/

printf("*******TEMPS DE SEJOUR*******\n");
for(i=0;i<nb;i++)
{printf("p(%d)\t",i+1);
}
printf("\n");
ss=0;
for(i=0;i<nb;i++)
{ss=ss+proc[i].tempsej;
 printf("%dms\t",proc[i].tempsej);
}
printf("\n");
/*afficher le temps moyen de sejour */
printf("*******TEMPS MOYEN DE SEJOUR*******");
printf("\n");
temsej=(float)ss/nb;
printf("le temps moyen de sejour est (temps moyen séjour= %fms\n",temsej);
}

 

return 0;

}

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

cs_exar
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
1
Vraiment intéressant. Je vais tester ça de suite ;) Merci !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.