Existe una necesidad urgente de escribir un programador de proceso único con función de rotación de intervalos de tiempo en C o C++. El programa contiene cinco estados y puede producir un resultado después de la ejecución.
____________________________?
Instrucciones de diseño del programa de simulación de programación de procesos:?
Después de seleccionar el algoritmo, el usuario crea el proceso.
____________________________?
*/?
#include
#include
#define?Izquierda?75?
#define?Derecha?77?
typedef?struct?node{? ID;//¿ID del proceso?// ¿Prioridad del proceso?
int?CPUTIME;?//¿El tiempo que pasa el proceso en la CPU?
int?ALLTIME;?
int?ALLTIME;?
char?STATE;//¿El estado actual del proceso?
struct?
}PRO;?
int?CHIP;?// ¿Número de intervalos de tiempo?
int?NUM;?//Número de procesos?
int?A=0;//?
PRO?*p;?
PRO?*p;?
nulo ?
char?
mientras(1){?
cambiar(A){?
caso?0:printf(" →[Algoritmo por orden de llegada]?[Algoritmo de rueda de tiempo]?[Algoritmo de servicio prioritario]");break;
caso?1:printf("?[Algoritmo por orden de llegada] → [ Algoritmo de rueda de tiempo]?[Algoritmo de servicio prioritario]");break;?
case?2:printf("?[Algoritmo por orden de llegada]?[Algoritmo de rueda de tiempo] → [Servicio prioritario algoritmo] ");romper;?
}?
ch=getch();?
if(ch==Izquierda)?A--; ?
si(ch==Derecha)?A++;?
if(A<0)?A=2;?
si(A>2 )? A=0;?
if(ch=='\r')?break;?
sistema("cls");?
}?
}?
int?num(){/¿Calcular si se han programado todos los procesos? ¿Devolver el número de procesos completados?
int?i=NUM;?
PRO?*t1;?
t1=p;?
mientras(t1! =NULL){?
if(t1->ALLTIME==0)?
i--;?
t1=t1->siguiente;?
}?
return?
}?
PRO?*_sort(PRO?*h){/// Lista enlazada ¿Subfunción de clasificación?
PRO?*p,*max;?
max=h;?
p=h;?
mientras(p ->next!=NULL){// ¿Encontrar el nodo de max?
p=p->siguiente;?
if(max->PRIORIDAD
max=p;?
}?
p->next=h; //¿formar una lista circular enlazada?
while(p->next!=max)//encontrar el nodo delante del min
nodo y hacer que apunte a NULL?
p=p->next;?
p->next=NULL;?
h=max;?
¿regresar?
}?
PRO?*sort(PRO?*h){// ¿Clasificación de listas vinculadas?
int?i=4;?
PRO?*p;?
if(h==NULL)?
regresar ?
h=_sort(h);?
p=h;?
mientras(p->siguiente!=NULL){? >
p->siguiente=_sort(p->siguiente);?
p=p->siguiente;?
}?
regresar ?
}?
int?
PRO?*t1;?
t1=p;?
printf("ID?PRIORITY?CPUTIME?ALLTIME?STATE\n");
mientras(t1!=NULL){?
printf("P%-3d%- 10d%-9d%-7d?%c\n",t1->ID,t1->PRIORIDAD,t1->CPUTIME,t1->ALLTIME,t1->ESTADO);?
t1= t1->siguiente;?
}?
printf("------------------------- ------------\n\n");?
}?
void?queue(){// ¿Algoritmo por orden de llegada?
int?
PRO?*t1=p;?
printf("Algoritmo por orden de llegada, desde el estado inicial hasta el estado de agotamiento de cada segmento de tiempo :\n");?
mostrar();?
mientras(t1!=NULL){?
t=CHIP;?
mientras(t!=0&&t1!=NULL){?
t--;?
t1->ALLTIME--;?
t1->CPUTIME++;?
t1->STATE='E';?
if(t1->ALLTIME==0){// ¿Se completó la programación del proceso?
t1->ESTADO='F';?
t1=t1->siguiente;?
}?
}?
show();?
}?
}?
void?
int?t, i;?
PRO?*t1=p;?
printf("Algoritmo de programación de rotación de intervalos de tiempo, estado inicial de cada intervalo de tiempo agotado:\n"); ?
mostrar();?
mientras(1){?
t=CHIP;?
mientras(t!= 0&&t1!=NULL&&t1->ALLTIME!=0){?
t--;?
t1->ALLTIME--;?
t1-&g
t;CPUTIME++;?
t1->STATE='E';?
if(t1->ALLTIME==0){// ¿Programación del proceso completada?
t1->STATE='F';?
t=CHIP;// ¿No quieres el tiempo restante?
}?
}?
show();?
if(t1->ESTADO!='F')?
t1->STATE='R';?
if(t1!=NULL)?
t1=t1->siguiente;?
si(t1==NULL)?
t1=p;?
i=num();?
si(i== 0) // i es igual a 0, lo que indica que todos los procesos se están ejecutando.
romper;?
}?
}?
¿nulo?
int?t;?
PRO?*t1;?
p=sort(p);?
t1=p;?
printf("Priorización algoritmo, estado inicial para cada segmento de tiempo estado agotado:\n");?
show();?
while(t1!=NULL){?
t=CHIP;?
mientras(t!=0&&t1!=NULL){?
t--;?
t1->ALLTIME- -;?
t1->CPUTIME++;?
t1->STATE='E';?
if(t1->ALLTIME==0) {// ¿Se completó la programación del proceso?
t1->ESTADO='F';?
t1=t1->siguiente;?
}?
}?
show();?
}?
}?
create_process(){/¿crear proceso?
PRO?*t1,*t2;?
int?i=1;?
system("cls");?
printf(" Ingrese el número de intervalos de tiempo:");?
scanf("%d",&CHIP);?
printf("Ingrese el número de procesos que desea crear (mayor que 1):");?
scanf("%d",&NUM);?
p=(PRO?*)malloc(sizeof(PRO)); ?
t1=p;?
t1->ID=i;?
t1->STATE='R';?
t1->CPUTIME=0; //Iniciar la creación con ?CPUTIME=0?
printf("Ingrese la prioridad del proceso P%d:",i);?
scanf("%d",&t1->PRIORITY);?
printf("Ingrese el tiempo de ejecución requerido para el proceso P%d:",i);?
>
scanf("%d",&t1->ALLTIME);?
while(i++ t2=(PRO?*)malloc(sizeof (PRO));? t1->next=t2;? t2->ID=i;? t2->STATE='R ';? t2->CPUTIME=0; //¿Comenzar a crear? printf("Ingrese la prioridad del proceso P%d:",i);? p> scanf("%d",&t2->PRIORITY);? printf("Ingrese el tiempo de ejecución requerido para el proceso P%d:",i);? scanf("%d",&t2->ALLTIME);? t1=t2;? }? t1->next= NULL;? }? int?main(){? choose();//¿elegir el algoritmo primero? create_process();//¿crear el proceso nuevamente? system("cls");? if(A==0)? cola ();? si(A==1)? tiempo();? si(A==2)? prioridad();? retorno? } Esto es lo que escribí antes, hay más algoritmos en él, puedes eliminarlo algoritmo requerido o no.