Red de conocimiento informático - Conocimiento del nombre de dominio - 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.

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->PRIORIDADPRIORIDAD)?

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);?

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.