Solicitar a un experto que utilice VC++ para escribir un código que proteja el proceso
#Incluye "stdio.h"
#Incluye "stdlib.h"
#Incluye "string.h"
Nodo de estructura Typedef/*Crear PCB*/
{ char name[10];/*ID de proceso */
int prio/*Prioridad de proceso*/
int cputime/*tiempo de CPU ocupado por el proceso*/
int needtime/*Tiempo requerido para completar el proceso*/
int count; >
Estado de carga; /*Estado del proceso*/
Nodo de estructura* siguiente/*Puntero de cadena*/
} PCB
PCB * Completo, *Listo, *Cola, *En ejecución;
int N;
Firstin() /*Crear puntero de encabezado de cola listo*/
{ p>
En ejecución=Listo;
En ejecución->state=' R
Listo=Listo->Siguiente;
}
Void prt(char algo) /*Programación de procesos de demostración*/
{
PCB * p;
printf(" NOMBRE CPUTIME NEEDTIME estado de prioridad\ n ");
if (ejecutar!=null)
printf(" %-10s %-10d %-10d %-10d % c \n ",ejecutar-> nombre,
ejecutar->cputime, ejecutar->lleva tiempo, ejecutar->prio,ejecutar->status);
p = listo;
mientras (p!=null)
{ printf(" %-10s %-10d %-10d %-10d % c \ n ", p-> nombre,
p->; cputime, p-> tiempo requerido, p-> prio, p-> >}
p = completo
y (p!=null)
{ printf(" %-10s %-10d %-10d %-10d % c \ n ",p->Nombre,
p->;cputime,p->Lleva tiempo, p->prio, p->status);
p = p->next;
}
getch() ;
}
Insertar (PCB *q )
{
PCB *p1, *s, * r;
int b
s =
p 1 = listo;
r = p 1;
b = 1;
Y ((p1! = NULL)&&b)
if(p 1->prio>= s->prio)
{
r = p 1;
p 1 = p 1->;Siguiente;
}
Otro
b = 0;
si(r !=p1)
{
r-& gt;siguiente = s;
s-& gt;siguiente = p 1;
}
Otro
{
s-& gt; siguiente = p 1;
listo = s;
}
}
<p>Void create(char alg) /*Crear varios procesos*/
{
PCB * p;
int i, time
char na[10];
listo = vacío;
finish = NULL
ejecutar = NULL
for(I = 1;i<= N;i++)
{
p = malloc(sizeof(PCB));
printf("Ingrese el nombre del proceso: \ n "
scanf("%s ", na);
printf("Tiempo de proceso de entrada (menos de 50):\ n "); scanf("%d", & tiempo);
strcpy(p->nombre,na);
p->;cputime = 0;
p>p->; needtime = time;
p->; state = 'w
p->; la suma del tiempo necesario es 50*/
If (prepare!=null)
Insertar (p);
Otros
{
p->; siguiente = listo
listo = p; clr SCR();
printf("Visualización de progreso:\ n ");
printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n ");
PRT(alg) ;
En ejecución = listo;
Listo = listo->Siguiente;
En ejecución->estado = ' R
}
Prioridad (char alg) /*Programación del algoritmo de prioridad*/
{
Y (ejecutar! = NULL & amp& amp ejecutar - >prio>=0 )
{
Ejecutar->cputime = ejecutar->cputime+1;
Ejecutar-& gt; necesita tiempo-1
Ejecutar-& gt; necesitar tiempo==0)
{
Ejecutar-& gt; next=finish;
finish=run;
ejecutar -> >
ejecutar = NULL
if (¡preparar! = NULL)
primero en();
}
Otro
if ((¡Listo! = NULL)& amp ;& (Ejecutar->prio<Ready->prio))
{
Ejecutar->state = ' W
Insertar(ejecutar);
primero en();
}
PRT(alg);
}
}
main()
{ char algo
clr SCR();
loop: printf("Entrada Número total de PCB (menos de 10 es bueno) : \ n ");
scanf("%d ", & ampn);
Si (
N & gt10)
{printf("Demasiado grande, elija un número pequeño.\n ");
Ir al bucle;}
Crear (algo );
Prioridad (algoritmo);
}
¡Ayuda a que te guste!