P8ej5 esta es mi solución, alguien la corrige?

P8ej5 esta es mi solución, alguien la corrige?

de Juan Pablo Lorier Arismendi -
Número de respuestas: 3
Hola,

Pongo mi solución al ejercicio. El que quiera hacer aportes, bienvenido sea :-)
Esta en casi C, o sea, hace un rato que no uso C así que use un pseudo C

void main {
//instalar interrupciones: interrumpir()
while true
}

void interrumpir(){
if (in(estado_1) & 1) then
atender1();
else if (in(estado_2) & 1) then
atender2();
else if (in(estado_3) & 1) then
atender3();
}
}

Saludos,

En respuesta a Juan Pablo Lorier Arismendi

Re: P8ej5 esta es mi solución, alguien la corrige?

de Rossana Guerra Celano -
Mi solución es similar a la tuya para la parte "a".
// habilito int

while (true) {
while (INT == 0) { // hace algo
}
}

// rutina interrupción, chequea el valor INT == in(Estado_1) & 1, etc

Tengo dudas si el while INT debe ir en el main o no.

Para la parte "b", usé una tabla con estado y prioridad, no se si me compliqué.

Saludos
En respuesta a Rossana Guerra Celano

Re: P8ej5 esta es mi solución, alguien la corrige?

de Juan Pablo Lorier Arismendi -
Hola Rossana,

Yo en la parte b lo que hice es un array en el que guardo la dirección de memoria de cada estado y asigno arreglo[pri(estado_x]=estado_x.
Como pri me da la prioridad del estado, va a quedar ubicado en la posición que le corresponde y luego simplemente recorro el arreglo de 0..2 con lo que la prioridad siempre se cumpliría. Como se me ocurre de que la prioridad cambia en el tiempo, lo hago cada vez que se llama la interrupción.
Es lo que se me ocurrió.