El diseño del curso de algoritmo de programación en tiempo real debe utilizar lenguaje C
#includelt; stdio.hgt;
int main()
{
int A, B; , el tiempo de llegada del proceso B
int cycA, cycB, saveA, saveB; // El tiempo de ciclo y el tiempo de servicio del proceso
float m;
int i , j, a=0, b=0, ka=0, kb=0; //ka, kb son interruptores, i, j, a, b son subíndices de proceso
int numa= 0, numb=0; //Tiempo de servicio acumulado
printf("Ingrese el tiempo de ciclo del proceso A, tiempo de servicio: "); cycA, amp; saveA);
printf ("Ingrese el tiempo de ciclo del proceso B, tiempo de servicio: "); servirB
m=(float)serveA/cycA (float)serveB/cycB;
for(int T=0; Tlt; =100; T )
{
if(m-1gt; 1e-6)
{
printf("¡Excede la capacidad de procesamiento de la CPU!\n" );
return 0;
}
if(numa==serveA) //El proceso A se completa
{ p>
numa= servirA 1;
printf("Cuando T=d", T
printf("El anuncio del proceso termina\n", a); /p>
if(numblt; serverB)
{
printf("Llamando al proceso bd\n", b
kb=1);
}
ka=0
}
if(numb==serveB)
{
numb=serveB 1;
printf("Cuando T=d", T);
printf("El proceso Bd finalizó\n", b) ;
if(numalt; serverA)
{
printf("Llamada al proceso Ad\n", a);
ka =1;
p>}
kb=0
}
if(TcycA==0 amp; amp; TcycB ==0)
{
A=B=T;
j= a
i=
printf(" Cuando T=d, el proceso Ad y el proceso Bd se generan al mismo tiempo. En este momento, ", T, j, i
if (cycAlt; =);
cycB)
{
printf("Llamando al proceso Ad, bloqueando el proceso Bd\n", j, i
ka=1; >
kb=0;
}
else
{
printf("Llamando al proceso Bd, bloqueando el proceso Ad\ n", i, j);
ka=0;
kb=1;
}
numa=numb=0 ;
}
if(TcycA==0amp;amp;TcycB!=0)
{
A=T;
printf("Cuando T=d", T);
printf("Se genera el anuncio del proceso", a); //Es imposible competir con el proceso A por el procesador.
numa=0;
if(numblt;serveB) //El proceso B no se completa
if(B cycBgt;A cycA) //Si el proceso B tiene la fecha límite más temprana Mayor que el proceso A
{
printf("El proceso Ad se ejecuta.\n",
ka=1;
kb=0;
}
else //Si la fecha límite más temprana del proceso B es menor o igual a la del proceso A
printf("El proceso Bd continúa ejecutándose.\ n", b);
else //El proceso B se completa
{
printf( "Procesar anuncio se ejecuta.\n", a);
p>ka=1
}
}
if; (TcycA!=0amp; amp; TcycB==0)
{
B=T
printf("Cuando T=d", T) ;
printf("Se genera el proceso Bd", , b); //Es imposible competir con el proceso B por el procesador
numb=0; p> if(numalt;serveA) //El proceso A no se completa
if(B cycBgt;=A cycA) //La fecha límite más temprana del proceso A no es menor que B
printf("El anuncio de proceso continúa ejecutándose. \n", a);
else
{
printf("Se ejecuta el proceso Bd.\n", b);
kb=1;
ka=0;
}
else //El proceso A se completa
{
printf("Se ejecuta el proceso Bd.
\n", b);
kb=1;
}
}
if(ka)
numa ;
if(kb)
entumecido ;
}
}