Parte 1 - Comunicación Entre Procesos
Ejercicio 1
El context switch en Linux se produce de la siguiente forma:
- Se pushea en la pila de Kernel el IP de la tarea anterior con otros registros por el cambio de privilegio.
- Se guardan los registros en la pila para poder trabajar la lógica del kernel.
- Se busca la siguiente tarea disponible.
- A esa tarea se le carga el PCB en los registros. De esta forma, saltará a la porción del código de esta tarea.
- Se hace pop en el stack para recuperar el IP de la pila de este proceso, y los registros que se pudieron haber ensuciado por la lógica del Kernel.
- Se hace return y continúa.
Ejercicio 2
Código
Ejercicio 3
La llamada a System Call es una llamada a función de sistema en modo Kernel, mientras que la librería es un código compilado que se ejecuta con privilegios de usuario y agregan funcionalidad extra al programa.
Ejercicio 4
a)
graph TD
New --> Ready
Ready <--> Running
Blocked --> Ready
Running --> Blocked
Running --> Terminated
b)
Las trancisiones serían las siguientes:
- (New → Ready) De new, una vez inicializada la memoria para el task, pasaría a estar en ready.
- (Ready → Running) Cuando el scheduler determine que es turno del task actual, este pasaría de Ready a Running.