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
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.
26. Repartir trabajo entre núcleos
Divide trabajos independientes y combina sus resultados.
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.
STORE 1 0
STORE 2 1
STORE 3 2
STORE 4 3
LOAD [0]
MUL R0
COPY R0 R1
LOAD [2]
MUL R0
ADD R1
PRINT
HALT
Añadir entradas a la cola: Ninguno
Inicializar memoria: 0: 1, 1: 2, 2: 3, 3: 4
Solución de la predicción
Salida: 10
2. Construir y comprobar
Hay cuatro valores de trabajo inicializados en la memoria 0–3. La tarea par calcula valor[0]² + valor[2]² y la impar valor[1]² + valor[3]². Llama a ambas. Imprime el total par, el impar y el combinado, en ese orden.
Tipos de instrucción requeridos: CALL, MUL, LOAD, ADD
Ejemplo de solución del reto
CALL evenWorker
PRINT
CALL oddWorker
PRINT
LOAD R1
ADD R2
PRINT
HALT
evenWorker: LOAD [0]
MUL R0
COPY R0 R1
LOAD [2]
MUL R0
ADD R1
COPY R0 R1
RETURN
oddWorker: LOAD [1]
MUL R0
COPY R0 R2
LOAD [3]
MUL R0
ADD R2
COPY R0 R2
RETURN
Casos reales del comprobador
Caso 1
- Entrada
Ninguno- Memoria inicial
0: 1, 1: 2, 2: 3, 3: 4- Salida esperada
10, 20, 30- Lecturas de memoria requeridas
0, 1, 2, 3
Caso 2
- Entrada
Ninguno- Memoria inicial
0: 0, 1: 4, 2: 5, 3: 1- Salida esperada
25, 17, 42- Lecturas de memoria requeridas
0, 1, 2, 3
Caso 3
- Entrada
Ninguno- Memoria inicial
0: 10, 1: 1, 2: 2, 3: 3- Salida esperada
104, 10, 114- Lecturas de memoria requeridas
0, 1, 2, 3
3. Explicar la máquina
¿Calcular dos totales de forma secuencial demuestra ejecución paralela?
Razonamiento y nota docente
No. Comprueba descomposición y combinación. Los carriles independientes de la simulación muestran estados distintos, no rendimiento paralelo real.
27. Interrupciones y manejadores
Atiende un evento y restaura el valor de la tarea interrumpida.
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.
STORE 4 240
LOAD 17
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURN
Añadir entradas a la cola: Ninguno
Inicializar memoria: Todos los bytes empiezan en cero
Solución de la predicción
Salida: 17, 5
2. Construir y comprobar
Lee un entero de la tarea principal y después un byte de evento. Guarda el evento en la dirección 240. Llama a un manejador que escriba evento + 1 en la memoria de bytes 241 conservando R0 mediante PUSH/POP. Imprime el valor principal restaurado y después el resultado del evento guardado.
Tipos de instrucción requeridos: INPUT, PUSH, POP, CALL, STORE
Ejemplo de solución del reto
INPUT
COPY R0 R1
INPUT
STORE 240
LOAD R1
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURN
Casos reales del comprobador
Caso 1
- Entrada
17, 4- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
17, 5- Memoria final esperada
240: 4, 241: 5- Lecturas de memoria requeridas
240, 241
Caso 2
- Entrada
-8, 0- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
-8, 1- Memoria final esperada
240: 0, 241: 1- Lecturas de memoria requeridas
240, 241
Caso 3
- Entrada
33, 255- Memoria inicial
Todos los bytes empiezan en cero- Salida esperada
33, 0- Memoria final esperada
240: 255, 241: 0- Lecturas de memoria requeridas
240, 241
3. Explicar la máquina
¿Qué debe restaurar un manejador antes de reanudar la tarea principal?
Razonamiento y nota docente
El valor y estado que aún necesita quien llamó; el contador de eventos puede cambiar intencionalmente. Incrementar 255 da 256 y guardar su byte menos significativo escribe 0.