Soluciones para docentes

Planificación, núcleos y eventos

Recoge cuatro tipos de evidencia: predicción del estado relevante; comportamiento en casos variados, incluidos los límites; explicación apoyada en la traza y el estado; y corrección razonada de una discrepancia. Valora cada aspecto como inicial, con apoyo o autónomo, en papel o mediante el proceso aprobado del centro. Superar un reto demuestra un comportamiento de la máquina, no la autoría ni un dominio completo. Acepta programas correctos equivalentes; las soluciones públicas son modelos, no las únicas respuestas posibles.

Material didáctico público. Las soluciones son ejemplos; otros programas correctos equivalentes pueden superar las comprobaciones.

25. Planificación cooperativa

Alterna tareas y distingue las políticas de las instrucciones de CPU.

Abrir esta lección →

1. Predecir y trazar

Antes de ejecutar el programa de prueba, predice su salida y traza las tres primeras instrucciones ejecutadas. Sigue los registros, indicadores o memoria relevantes. Después avanza paso a paso para comparar.

LOAD 1
CALL taskA
CALL taskB
HALT
taskA: PRINT
SLEEP 500
RETURN
taskB: LOAD 101
PRINT
RETURN

Añadir entradas a la cola: Ninguno

Inicializar memoria: Todos los bytes empiezan en cero

Solución de la predicción

Salida: 1, 101

InstrucciónPC antesPC despuésR0 antesR0 despuésEstado relevanteSalida
LOAD0101{"registers":[1,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":255,"stack":[],"callStack":[],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Ninguno
CALL1411{"registers":[1,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":254,"stack":[],"callStack":[2],"loopStack":[],"memoryReads":[],"memoryWrites":[]}Ninguno
PRINT4511{"registers":[1,0,0,0,0,0,0,0],"flags":{"zero":false,"negative":false,"overflow":false},"sp":254,"stack":[],"callStack":[2],"loopStack":[],"memoryReads":[],"memoryWrites":[]}1

2. Construir y comprobar

Lee un número de rondas entre 0 y 3. Inicia el contador de A en 0 y el de B en 100. En cada ronda, llama a A para incrementar e imprimir su contador y después a B para incrementar e imprimir el suyo.

Tipos de instrucción requeridos: INPUT, LOOP, CALL, RETURN

Ejemplo de solución del reto

INPUT
COPY R0 R3
LOAD 0 R1
LOAD 100 R2
LOOP R3
CALL taskA
CALL taskB
RETURN
HALT
taskA: LOAD R1
ADD 1
COPY R0 R1
PRINT
SLEEP 0
RETURN
taskB: LOAD R2
ADD 1
COPY R0 R2
PRINT
SLEEP 0
RETURN

Casos reales del comprobador

Caso 1
Entrada
0
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
Ninguno
Caso 2
Entrada
1
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
1, 101
Caso 3
Entrada
3
Memoria inicial
Todos los bytes empiezan en cero
Salida esperada
1, 101, 2, 102, 3, 103

3. Explicar la máquina

¿Alternar con CALL/RETURN equivale a planificación con desalojo de hardware?

Razonamiento y nota docente

No. Es un modelo de despachador cooperativo; la política y el quantum se muestran en la simulación de sistemas identificada como tal.