Probléme avec LE SJf ( systéme d'exploitation
salero
Messages postés
32
Statut
Membre
-
zx -
zx -
Bonjour,
bon je cree des files d'attente a partir d'une liste crée automatiquement lors de la génération des processus!!
pour le FCFS voila le code qui cree la file d'attente :
NB : D c'est la tete de la file
//*********Creer la file d'attente selon la date d'arriv‚e*************
struct proc *Creer_File_Attente_FCFS()
{
struct proc *Ptr=NULL,*Tmp=NULL,*Prec=NULL;
struct proc *PT=NULL,*F=NULL,*D=NULL;
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
Ptr=Debut;
D=F=PT;
F->Next=D->Next=NULL;
*PT=*Ptr;
while(Ptr->Next!=NULL)
{
Tmp=D;
Ptr=Ptr->Next;
while(Ptr->DateArr>=Tmp->DateArr && Tmp->Next!=NULL)
{
Prec=Tmp;
Tmp=Tmp->Next;
}
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
*PT=*Ptr;
if(Tmp->Next==NULL)
{
if(Ptr->DateArr>=Tmp->DateArr)
{
F->Next=PT;
F=PT;
F->Next=NULL;
}
else
{
PT->Next=F;
if(D->Next==NULL)
D=PT;
else
Prec->Next=PT;
}
}
else
{
if(Ptr->DateArr==Tmp->DateArr || (Ptr->DateArr<Tmp->DateArr && Tmp!=D))
{
Prec->Next=PT;
PT->Next=Tmp;
}
else
if(Ptr->DateArr<Tmp->DateArr && Tmp==D)
{
PT->Next=D;
D=PT;
}
}
}
return D;
}
pour SJF voila :
struct proc *Creer_File_Attente_SJF()
{
struct proc *Ptr=NULL,*Tmp=NULL,*Prec=NULL;
struct proc *PT=NULL,*F=NULL,*D=NULL;
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
Ptr=Debut;
D=F=PT;
F->Next=NULL;
D->Next=NULL;
*PT=*Ptr;
while(Ptr->Next!=NULL)
{
Tmp=D;
Ptr=Ptr->Next;
while(Ptr->DateArr>=Tmp->DateArr && Tmp->Next!=NULL)
{
Prec=Tmp;
Tmp=Tmp->Next;
}
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
*PT=*Ptr;
if(Tmp->Next==NULL)
{
if(Ptr->DateArr>Tmp->DateArr || (Ptr->DateArr==Tmp->DateArr && Ptr->TpsExe>=Tmp->TpsExe))
{
F->Next=PT;
F=PT;
F->Next=NULL;
}
else
if(Ptr->DateArr<Tmp->DateArr || (Ptr->DateArr==Tmp->DateArr && Ptr->TpsExe<Tmp->TpsExe))
{
PT->Next=F;
if(D->Next==NULL)
D=PT;
else
Prec->Next=PT;
}
}
else
{
if((Ptr->DateArr==Prec->DateArr && Ptr->TpsExe>=Prec->TpsExe) || (Ptr->DateArr<Tmp->DateArr && Tmp!=D))
{
Prec->Next=PT;
PT->Next=Tmp;
}
else
if((Ptr->DateArr<Tmp->DateArr && Tmp==D) || (Ptr->DateArr==Prec->DateArr && Ptr->TpsExe<Prec->TpsExe && Prec==D))
{
PT->Next=D;
D=PT;
}
}
}
return D;
}
et c'est la ou j'ai l'erreur : l'algo marche trés bien mais ca donne pas un bon resultat par rapport au temps des execution !!
si quelqu'un peux le voir et me donné son avis
aufait je trie la Liste par insertion ; je prend le premier element de la liste je l'insere dans la file puis je prend le 2eme element de la liste et je cherche sa bonne place dans la file et j'insere .....Ect
merci d'avance
bon je cree des files d'attente a partir d'une liste crée automatiquement lors de la génération des processus!!
pour le FCFS voila le code qui cree la file d'attente :
NB : D c'est la tete de la file
//*********Creer la file d'attente selon la date d'arriv‚e*************
struct proc *Creer_File_Attente_FCFS()
{
struct proc *Ptr=NULL,*Tmp=NULL,*Prec=NULL;
struct proc *PT=NULL,*F=NULL,*D=NULL;
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
Ptr=Debut;
D=F=PT;
F->Next=D->Next=NULL;
*PT=*Ptr;
while(Ptr->Next!=NULL)
{
Tmp=D;
Ptr=Ptr->Next;
while(Ptr->DateArr>=Tmp->DateArr && Tmp->Next!=NULL)
{
Prec=Tmp;
Tmp=Tmp->Next;
}
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
*PT=*Ptr;
if(Tmp->Next==NULL)
{
if(Ptr->DateArr>=Tmp->DateArr)
{
F->Next=PT;
F=PT;
F->Next=NULL;
}
else
{
PT->Next=F;
if(D->Next==NULL)
D=PT;
else
Prec->Next=PT;
}
}
else
{
if(Ptr->DateArr==Tmp->DateArr || (Ptr->DateArr<Tmp->DateArr && Tmp!=D))
{
Prec->Next=PT;
PT->Next=Tmp;
}
else
if(Ptr->DateArr<Tmp->DateArr && Tmp==D)
{
PT->Next=D;
D=PT;
}
}
}
return D;
}
pour SJF voila :
struct proc *Creer_File_Attente_SJF()
{
struct proc *Ptr=NULL,*Tmp=NULL,*Prec=NULL;
struct proc *PT=NULL,*F=NULL,*D=NULL;
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
Ptr=Debut;
D=F=PT;
F->Next=NULL;
D->Next=NULL;
*PT=*Ptr;
while(Ptr->Next!=NULL)
{
Tmp=D;
Ptr=Ptr->Next;
while(Ptr->DateArr>=Tmp->DateArr && Tmp->Next!=NULL)
{
Prec=Tmp;
Tmp=Tmp->Next;
}
PT=(proc *)malloc(sizeof(proc));
if(PT==NULL)
{
printf("memoire satur‚e");
exit(0);
}
*PT=*Ptr;
if(Tmp->Next==NULL)
{
if(Ptr->DateArr>Tmp->DateArr || (Ptr->DateArr==Tmp->DateArr && Ptr->TpsExe>=Tmp->TpsExe))
{
F->Next=PT;
F=PT;
F->Next=NULL;
}
else
if(Ptr->DateArr<Tmp->DateArr || (Ptr->DateArr==Tmp->DateArr && Ptr->TpsExe<Tmp->TpsExe))
{
PT->Next=F;
if(D->Next==NULL)
D=PT;
else
Prec->Next=PT;
}
}
else
{
if((Ptr->DateArr==Prec->DateArr && Ptr->TpsExe>=Prec->TpsExe) || (Ptr->DateArr<Tmp->DateArr && Tmp!=D))
{
Prec->Next=PT;
PT->Next=Tmp;
}
else
if((Ptr->DateArr<Tmp->DateArr && Tmp==D) || (Ptr->DateArr==Prec->DateArr && Ptr->TpsExe<Prec->TpsExe && Prec==D))
{
PT->Next=D;
D=PT;
}
}
}
return D;
}
et c'est la ou j'ai l'erreur : l'algo marche trés bien mais ca donne pas un bon resultat par rapport au temps des execution !!
si quelqu'un peux le voir et me donné son avis
aufait je trie la Liste par insertion ; je prend le premier element de la liste je l'insere dans la file puis je prend le 2eme element de la liste et je cherche sa bonne place dans la file et j'insere .....Ect
merci d'avance
A voir également:
- Probléme avec LE SJf ( systéme d'exploitation
- Restauration systeme windows 10 - Guide
- Vérificateur des fichiers système - Guide
- Comment refaire le système d'un ordinateur - Guide
- Comment connaitre son système d'exploitation - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide